3

在一个 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's 无效,那么我应该使用什么?

4

2 回答 2

2

我想,警告说明了一切。看起来它希望您使用 acsr_matrix或 a csc_matrix

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

于 2012-10-19T18:17:57.300 回答
2

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

from scipy.linalg import solve_banded

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

于 2012-11-17T00:01:56.963 回答