scipy.sparse.linalg.

spilu#

scipy.sparse.linalg.spilu(A, drop_tol=None, fill_factor=None, drop_rule=None, permc_spec=None, diag_pivot_thresh=None, relax=None, panel_size=None, options=None)[source]#

計算稀疏方陣的不完全 LU 分解。

產生的物件是 A 反矩陣的近似值。

參數:
A(N, N) 類陣列

要分解的稀疏陣列。以 CSC 格式提供時效率最高。其他格式將在分解前轉換為 CSC 格式。

drop_tol浮點數,選用

不完全 LU 分解的捨棄容忍度 (0 <= tol <= 1)。 (預設值:1e-4)

fill_factor浮點數,選用

指定 ILU 的填充比率上限 (>= 1.0)。 (預設值:10)

drop_rule字串,選用

要使用的捨棄規則,以逗號分隔的字串。可用規則:basicprowscolumnareasecondarydynamicinterp。(預設值:basic,area)

詳細資訊請參閱 SuperLU 文件。

其他選項

splu 相同

回傳值:
invA_approxscipy.sparse.linalg.SuperLU

物件,具有 solve 方法。

另請參閱

splu

完整 LU 分解

註解

為了改善反矩陣的近似程度,您可能需要增加 fill_factor 且減少 drop_tol

此函式使用 SuperLU 函式庫。

範例

>>> import numpy as np
>>> from scipy.sparse import csc_array
>>> from scipy.sparse.linalg import spilu
>>> A = csc_array([[1., 0., 0.], [5., 0., 2.], [0., -1., 0.]], dtype=float)
>>> B = spilu(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.])