Выпуск 1
Может ли кто-нибудь порекомендовать менее неуклюжий способ факторизации Холецкого в python? Особенно меня смущает последняя строчка.
SigmaSqrt = matrix(Sigma)
cvxopt.lapack.potrf(SigmaSqrt)
SigmaSqrt = matrix(np.tril(SigmaSqrt))
Выпуск 2
У меня проблема, что одна целая строка и столбец (например, все элементы в первой строке и все элементы в первом столбце) равны нулю, lapack терпит неудачу с ошибкой, что матрица не является положительно определенной. Каков наилучший способ справиться с этим?
В настоящее время я делаю это: (что кажется неудобным...)
try:
SigmaSqrt = matrix(Sigma)
cvxopt.lapack.potrf(SigmaSqrt)
SigmaSqrt = matrix(np.tril(SigmaSqrt))
except ArithmeticError:
SigmaSqrt = matrix(Sigma.ix[1:,1:])
cvxopt.lapack.potrf(SigmaSqrt)
SigmaSqrt = matrix(np.tril(SigmaSqrt))
SigmaSqrt = sparse([[v0],[v0[1:].T, SigmaSqrt]])