用Python计算稀疏矩阵的Cholesky分解

时间:2016-08-19 17:15:48

标签: python numpy scipy sparse-matrix

我正在尝试实施Reinsch's Algorithm(第4页)。 由于工作矩阵是稀疏的,我使用的是scipy.sparse模块,但正如你所看到的,Reinsch的算法需要对稀疏矩阵进行Cholesky分解(让我们称之为my_matrix)以解决某些系统,但我不能找到与此相关的任何内容。 当然,在同一算法中,我可以使用scipy.sparse.linalg.spsolve来解决稀疏系统,然后在算法结束时使用类似的东西:

R = numpy.linalg.chol(my_matrix.A)

但是,在我的应用程序中,my_matrix通常大约800 * 800,所以最后一个非常有用。 那么,我的问题是,在哪里可以找到这样的分解?。

提前感谢。

1 个答案:

答案 0 :(得分:0)

要快速分解,您可以尝试

from scikits.sparse.cholmod import cholesky
factor = cholesky(A.toarray())
x = factor(b) 

A是您的稀疏,对称,正定矩阵。 由于您的矩阵不是“巨大!”将其转换为numpy数组不会造成任何问题。

相关问题