scipy.sparse.linalg.splu

scipy.sparse.linalg.splu(A, permc_spec=None, diag_pivot_thresh=None, relax=None, panel_size=None, options={})[源代码]

计算稀疏方阵的LU分解。

参数
A稀疏矩阵

要分解的稀疏矩阵。应采用CSR或CSC格式。

permc_spec字符串,可选

如何排列矩阵的列以保持稀疏性。(默认值:‘COLAMD’)

  • NATURAL :自然排序。

  • MMD_ATA A^T,A,A的结构上的最小度序。

  • MMD_AT_PLUS_A A^T+A结构上的最小度序

  • COLAMD :近似最小次数列排序

diag_pivot_thresh浮动,可选

用于使对角线条目成为可接受轴心点的阈值。有关详细信息,请参阅SuperLU用户指南 [1]

relax整型,可选

可自定义放松超级节点程度的专家选项。有关详细信息,请参阅SuperLU用户指南 [1]

panel_size整型,可选

用于自定义面板大小的专家选项。有关详细信息,请参阅SuperLU用户指南 [1]

optionsDICT,可选

包含SuperLU附加专家选项的字典。请参阅SuperLU用户指南 [1] (关于“选项”参数的第2.4节),了解更多详细信息。例如,您可以指定 options=dict(Equil=False, IterRefine='SINGLE')) 若要禁用平衡并执行单个迭代优化,请执行以下操作。

退货
invAscipy.sparse.linalg.SuperLU

对象,该对象具有一个 solve 方法。

参见

spilu

不完全LU分解

注意事项

此函数使用SuperLU库。

参考文献

1(1,2,3,4)

超级逻辑单元http://crd.lbl.gov/~xiaoye/SuperLU/

示例

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