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