scipy.sparse.linalg.spsolve

scipy.sparse.linalg.spsolve(A, b, permc_spec=None, use_umfpack=True)[源代码]

求解稀疏线性系统Ax=b,其中b可以是向量或矩阵。

参数
Andarray或稀疏矩阵

方阵A将被转换为CSC或CSR形式

bndarray或稀疏矩阵

表示方程式右侧的矩阵或向量。如果是向量,则b.Shape必须是(n,)或(n,1)。

permc_spec字符串,可选

如何排列矩阵的列以保持稀疏性。(默认值:‘COLAMD’)

  • NATURAL :自然排序。

  • MMD_ATA A^T,A,A的结构上的最小度序。

  • MMD_AT_PLUS_A A^T+A结构上的最小度序

  • COLAMD :近似最小次数列排序

use_umfpack布尔值,可选

如果为True(默认值),则使用umfpack作为解决方案。仅当b是向量且 scikit-umfpack 已安装。

退货
xndarray或稀疏矩阵

稀疏线性方程的解。如果b是向量,那么x就是大小为A的向量。 [1] 如果b是矩阵,则x是大小(A形状)的矩阵 [1] ,b.形状 [1] )

注意事项

对于求解矩阵表达式AX=B,此求解器假定结果矩阵X是稀疏的,这通常是非常稀疏输入的情况。如果生成的X是密集的,则构建此稀疏结果的成本将相对较高。在这种情况下,可以考虑将A转换为密集矩阵并使用scipy.linalg.solve或其变体。

示例

>>> from scipy.sparse import csc_matrix
>>> from scipy.sparse.linalg import spsolve
>>> A = csc_matrix([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float)
>>> B = csc_matrix([[2, 0], [-1, 0], [2, 0]], dtype=float)
>>> x = spsolve(A, B)
>>> np.allclose(A.dot(x).toarray(), B.toarray())
True