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.])