第一期
有人可以推荐一种在 python 中进行 Cholesky 分解的不那么尴尬的方法吗?特别是最后一行让我感到不安。
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]])