【发布时间】:2014-04-16 16:32:03
【问题描述】:
问题 1
有人可以推荐一种在 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]])
【问题讨论】:
标签: python matrix lapack cvxopt