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

Python中稀疏矩阵的计算Cholesky分解,python,numpy,scipy,sparse-matrix,Python,Numpy,Scipy,Sparse Matrix,我正在尝试实现(第4页)。 由于工作矩阵是稀疏的,所以我使用了scipy.sparse模块,但正如您所看到的,Reinsch的算法需要对稀疏矩阵(我们称之为my_矩阵)进行Cholesky分解,以求解特定的系统,但我找不到与此相关的任何内容。 当然,在同一个算法中,我可以使用,例如scipy.sparse.linalg.spsolve,来解决稀疏系统,然后在算法结束时使用类似于: R=numpy.linalg.chol(my_matrix.A) 但是,在我的应用程序中,我的_矩阵通常是800*8

我正在尝试实现(第4页)。 由于工作矩阵是稀疏的,所以我使用了scipy.sparse模块,但正如您所看到的,Reinsch的算法需要对稀疏矩阵(我们称之为my_矩阵)进行Cholesky分解,以求解特定的系统,但我找不到与此相关的任何内容。 当然,在同一个算法中,我可以使用,例如scipy.sparse.linalg.spsolve,来解决稀疏系统,然后在算法结束时使用类似于:

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

但是,在我的应用程序中,我的_矩阵通常是800*800,所以最后一个非常不完善。 所以,我的问题是,在哪里可以找到这样的分解


提前感谢。

对于快速分解,您可以尝试

from scikits.sparse.cholmod import cholesky
factor = cholesky(A.toarray())
x = factor(b) 
A是稀疏、对称、正定矩阵。
因为你的矩阵不是“巨大的!!”,所以将它转换成numpy数组不会引起任何问题。

google帮助:)我知道scykit.sparse,但是:这是Python中稀疏矩阵代码的家,它与scipy.sparse配合得很好,但不适合包含在scipy中。通常这是因为它也是在GPL下发布的,出于某种原因我不能安装它。你明确要求Cholesky分解吗?或者其他分解(如LU)也适用于您?如果是这样的话,scipy就有了很好的绑定。也许OP现在还没有解决他的问题,但是对于遇到这个问题的其他人来说:scikit稀疏包可以很容易地与pip一起安装。如果你能将稀疏矩阵转换成密集的数组,行列式的NumPy解将是最直接的选择