Scipy稀疏dia_matrix求解器

时间:2012-10-19 16:28:48

标签: python numpy scipy sparse-matrix

在一个scipy程序中,我正在创建一个带有5个对角线的dia_matrix(稀疏矩阵类型)。中心对角线+1& -1对角线和+4& -4对角线(通常> 4,但原理相同),即我有一个典型的PDE系统矩阵形式:

[ a0  b0  0   0   0   d0  0   0   0  ... 0.0 ]
[ c1  a1  b1  0   0   0   d1  0   0  ... 0.0 ]
[ 0   c2  a2  b2  0   0   0   d2  0  ... 0.0 ]
[ 0   0   c3  a3  b3  0   0   0   d3 ... 0.0 ]
[ 0   0   0   c4  a4  b4  0   0   0  ... 0.0 ]
[ e5  0   0   0   c5  a5  b5  0   0  ... 0.0 ]
[ :   :   :   :   :   :   :   :   :   :  :   ]
[ 0   0   0   0   0   0   0   0   0  ... aN  ]

当我使用scipy.linalg.dsolve.spsolve()来解决矩阵方程时,它可以正常工作,但我将以下内容报告给我

>>> SparseEfficiencyWarning: spsolve requires CSC or CSR matrix format
    warn('spsolve requires CSC or CSR matrix format', SparseEfficiencyWarning)

如果spsolve()无法解决稀疏矩阵类型dia_matrix,那么我应该使用什么?

2 个答案:

答案 0 :(得分:2)

我对这个答案有点迟了,但我希望你发现添加:

from scipy.linalg import solve_banded

允许您使用DIA矩阵,而不必使用CSR或CSC。

答案 1 :(得分:1)

警告说这一切,我想。看起来它希望您使用csr_matrixcsc_matrix

我假设您正在使用scipy.sparse.diags创建矩阵。在构造矩阵时,您应该能够使用format = 'csr'format = 'csc'