scipy.sparse.linalg.
splu#
- scipy.sparse.linalg.splu(A, permc_spec=None, diag_pivot_thresh=None, relax=None, panel_size=None, options={})[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_matrix >>> from scipy.sparse.linalg import splu >>> A = csc_matrix([[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.])