當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy linalg.spsolve用法及代碼示例


本文簡要介紹 python 語言中 scipy.sparse.linalg.spsolve 的用法。

用法:

scipy.sparse.linalg.spsolve(A, b, permc_spec=None, use_umfpack=True)#

求解稀疏線性係統Ax=b,其中b可以是向量也可以是矩陣。

參數

A ndarray 或稀疏矩陣

方陣 A 將轉換為 CSC 或 CSR 形式

b ndarray 或稀疏矩陣

表示方程右側的矩陣或向量。如果是向量,b.shape 必須是 (n,) 或 (n, 1)。

permc_spec str,可選

如何置換矩陣的列以保持稀疏性。 (默認:'COLAMD')

  • NATURAL:自然排序。

  • MMD_ATA : A^T A 結構的最小度數排序。

  • MMD_AT_PLUS_A : A^T+A 結構的最小度數排序。

  • COLAMD:近似最小度列排序 [1]、[2]。

use_umfpack 布爾型,可選

如果 True (默認),則使用 UMFPACK 作為解決方案 [3], [4], [5], [6] 。僅當 b 是向量並且安裝了 scikits.umfpack 時才引用此值。

返回

x ndarray 或稀疏矩陣

稀疏線性方程的解。如果 b 是向量,則 x 是大小為 A.shape[1] 的向量 如果 b 是矩陣,則 x 是大小為 (A.shape[1], b.shape[1]) 的矩陣

注意

為了求解矩陣表達式 AX = B,該求解器假設生成的矩陣 X 是稀疏的,對於非常稀疏的輸入來說通常是這種情況。如果得到的 X 是稠密的,那麽構建這個稀疏結果將相對昂貴。在這種情況下,請考慮將 A 轉換為稠密矩陣並使用 scipy.linalg.solve 或其變體。

參考

[1]

T. A. Davis、J. R. Gilbert、S. Larimore、E. Ng,算法 836:COLAMD,近似列最小度排序算法,ACM Trans。數學軟件,30(3),2004 年,第 377-380 頁。 DOI:10.1145/1024074.1024080

[2]

T. A. Davis、J. R. Gilbert、S. Larimore、E. Ng,A 列近似最小度排序算法,ACM Trans。數學軟件,30(3),2004 年,第 353-376 頁。 DOI:10.1145/1024074.1024079

[3]

T. A. Davis,算法 832:UMFPACK - 一種帶有列預排序策略的 unsymmetric-pattern 多前沿方法,ACM Trans。數學軟件,30(2),2004 年,第 196-199 頁。 https://dl.acm.org/doi/abs/10.1145/992200.992206

[4]

T. A. Davis,unsymmetric-pattern 多前沿方法的專欄預排序策略,ACM Trans。數學軟件,30(2),2004 年,第 165-195 頁。 https://dl.acm.org/doi/abs/10.1145/992200.992205

[5]

T. A. Davis 和 I. S. Duff,非對稱稀疏矩陣的單額/多額組合方法,ACM Trans。數學軟件,25(1),1999,第 1-19 頁。 https://doi.org/10.1145/305658.287640

[6]

T. A. Davis 和 I. S. Duff,稀疏 LU 分解的 unsymmetric-pattern 多前沿方法,SIAM J. 矩陣分析和計算,18(1),1997,第 140-158 頁。 https://doi.org/10.1137/S0895479894246905T

例子

>>> import numpy as np
>>> 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

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.sparse.linalg.spsolve。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。