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 を解くのに効率的でない場合、何を使用すればよいですか?

4

2 に答える 2

2

警告はそれをすべて言っていると思います。csr_matrixまたはを使用してほしいようですcsc_matrix

でマトリックスを作成していると仮定しますscipy.sparse.diags。マトリックスを作成するときに、format = 'csr'またはを使用できるようにする必要があります。format = 'csc'

于 2012-10-19T18:17:57.300 に答える
2

この回答には少し遅れていますが、次のことを追加していただければ幸いです。

from scipy.linalg import solve_banded

CSR や CSC に頼るのではなく、DIA マトリックスを使用できます。

于 2012-11-17T00:01:56.963 に答える