scipy.sparse.linalg.
splu#
- scipy.sparse.linalg.splu(A, permc_spec=None, diag_pivot_thresh=None, relax=None, panel_size=None, options=None)[源代码]#
计算稀疏方阵的 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](关于“选项”参数的第 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.])