在一个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,那么我应该使用什么?
答案 0 :(得分:2)
我对这个答案有点迟了,但我希望你发现添加:
from scipy.linalg import solve_banded
允许您使用DIA矩阵,而不必使用CSR或CSC。
答案 1 :(得分:1)
警告说这一切,我想。看起来它希望您使用csr_matrix
或csc_matrix
。
我假设您正在使用scipy.sparse.diags
创建矩阵。在构造矩阵时,您应该能够使用format = 'csr'
或format = 'csc'
。