python中五对角矩阵的Cholesky优化

python中五对角矩阵的Cholesky优化,python,numpy,sparse-matrix,linear-algebra,matrix-decomposition,Python,Numpy,Sparse Matrix,Linear Algebra,Matrix Decomposition,所以我研究的是五对角矩阵A,大小为n: 这里还有五对角矩阵的一般信息: 我使用Cholesky分解来得到矩阵A的矩阵L,其中L*L.T=A,L.T是根据算法L的转置。所以numpy的标准算法是: 你可以在这里看到这个页面,里面也有数学公式。我为Python3和numpy的使用稍微修改了算法: 我想优化算法,因为我正在研究的A矩阵是稀疏的,我想测试它的非常大的n,即n=10000。对于经典的cholesky,它没有经过优化,因为有很多零不需要访问。到目前为止,我尝试的是改变代码行的范围 tmp

所以我研究的是五对角矩阵A,大小为n:

这里还有五对角矩阵的一般信息: 我使用Cholesky分解来得到矩阵A的矩阵L,其中L*L.T=A,L.T是根据算法L的转置。所以numpy的标准算法是:

你可以在这里看到这个页面,里面也有数学公式。我为Python3和numpy的使用稍微修改了算法:

我想优化算法,因为我正在研究的A矩阵是稀疏的,我想测试它的非常大的n,即n=10000。对于经典的cholesky,它没有经过优化,因为有很多零不需要访问。到目前为止,我尝试的是改变代码行的范围

tmp_sum = sum(L[i][j] * L[k][j] for j in range(k))
致:

为了避免每次也计算零的和。可以进一步优化吗?因为仍然可以访问零,并且不需要进行计算。
或者另一个解决方案可能是采用我们原始a的带状矩阵,并在其上应用cholesky?

在您的情况下,可以做更多的工作来优化带状矩阵的cholesky,五对角矩阵

特别是,我将向您介绍Python基础架构中的一个现有解决方案:

使用它将允许您利用已经实现的优化,同时查看此子例程背后的实际代码,您可以找到其背后的思想


稀疏矩阵分解和保持稀疏性的研究非常活跃,有很多解决方案,因此,根据您的需要,编码/研究新算法与将特定矩阵分解,您可以采取不同的行动。

在您的情况下,可以做更多的工作来优化带状矩阵的Cholesky,即五对角矩阵

特别是,我将向您介绍Python基础架构中的一个现有解决方案:

使用它将允许您利用已经实现的优化,同时查看此子例程背后的实际代码,您可以找到其背后的思想


稀疏矩阵分解和保持稀疏性的研究非常活跃,有很多解决方案可用,因此根据您的需要,编码/研究新算法与将特定矩阵分解,您可以采取不同的行动。

以防万一,关于此主题的更详细和研究性问题可以在上更清晰可见。以防万一,关于此主题的更详细和研究性问题可以在上更清晰可见。
tmp_sum = sum(L[i][j] * L[k][j] for j in range(k))
tmp_sum = sum(L[i][j] * L[k][j] for j in range(k-2,k))