scipy.sparse.linalg.
splu#
- scipy.sparse.linalg.splu(A, permc_spec=None, diag_pivot_thresh=None, relax=None, panel_size=None, options=None)[source]#
計算稀疏方陣的 LU 分解。
- 參數:
- A稀疏陣列或矩陣
要分解的稀疏陣列。以 CSC 格式提供時效率最高。其他格式將在分解前轉換為 CSC。
- permc_specstr,可選
如何排列矩陣的列以保留稀疏性。(預設:'COLAMD')
NATURAL
:自然排序。MMD_ATA
:A^T A 結構上的最小度排序。MMD_AT_PLUS_A
:A^T+A 結構上的最小度排序。COLAMD
:近似最小度列排序
- diag_pivot_threshfloat,可選
用於判斷對角線項目是否為可接受樞紐的閾值。詳情請參閱 SuperLU 使用者指南 [1]
- relaxint,可選
用於自訂鬆弛超節點程度的專家選項。詳情請參閱 SuperLU 使用者指南 [1]
- panel_sizeint,可選
用於自訂面板大小的專家選項。詳情請參閱 SuperLU 使用者指南 [1]
- optionsdict,可選
包含 SuperLU 其他專家選項的字典。詳情請參閱 SuperLU 使用者指南 [1](關於 'Options' 參數的 2.4 節)。例如,您可以指定
options=dict(Equil=False, IterRefine='SINGLE'))
以關閉平衡並執行單次迭代精煉。
- 返回:
- invAscipy.sparse.linalg.SuperLU
物件,具有
solve
方法。
參見
spilu
不完全 LU 分解
筆記
此函數使用 SuperLU 函式庫。
參考文獻
範例
>>> import numpy as np >>> from scipy.sparse import csc_array >>> from scipy.sparse.linalg import splu >>> A = csc_array([[1., 0., 0.], [5., 0., 2.], [0., -1., 0.]], dtype=float) >>> B = splu(A) >>> x = np.array([1., 2., 3.], dtype=float) >>> B.solve(x) array([ 1. , -3. , -1.5]) >>> A.dot(B.solve(x)) array([ 1., 2., 3.]) >>> B.solve(A.dot(x)) array([ 1., 2., 3.])