本文簡要介紹 python 語言中 scipy.sparse.linalg.SuperLU
的用法。
用法:
class scipy.sparse.linalg.SuperLU#
稀疏矩陣的 LU 分解。
因式分解表示為:
Pr @ A @ Pc = L @ U
要構造這些
SuperLU
對象,請調用splu
和spilu
函數。注意:
例子:
LU分解可用於求解矩陣方程。考慮:
>>> import numpy as np >>> from scipy.sparse import csc_matrix, linalg as sla >>> A = csc_matrix([[1,2,0,4],[1,0,0,1],[1,0,2,1],[2,2,1,0.]])
對於給定的右側可以解決這個問題:
>>> lu = sla.splu(A) >>> b = np.array([1, 2, 3, 4]) >>> x = lu.solve(b) >>> A.dot(x) array([ 1., 2., 3., 4.])
lu
對象還包含分解的顯式表示。排列表示為索引的映射:>>> lu.perm_r array([0, 2, 1, 3], dtype=int32) >>> lu.perm_c array([2, 0, 1, 3], dtype=int32)
L 和 U 因子是 CSC 格式的稀疏矩陣:
>>> lu.L.A array([[ 1. , 0. , 0. , 0. ], [ 0. , 1. , 0. , 0. ], [ 0. , 0. , 1. , 0. ], [ 1. , 0.5, 0.5, 1. ]]) >>> lu.U.A array([[ 2., 0., 1., 4.], [ 0., 2., 1., 1.], [ 0., 0., 1., 1.], [ 0., 0., 0., -5.]])
可以構造置換矩陣:
>>> Pr = csc_matrix((np.ones(4), (lu.perm_r, np.arange(4)))) >>> Pc = csc_matrix((np.ones(4), (np.arange(4), lu.perm_c)))
我們可以重新組裝原始矩陣:
>>> (Pr.T @ (lu.L @ lu.U) @ Pc.T).A array([[ 1., 2., 0., 4.], [ 1., 0., 0., 1.], [ 1., 0., 2., 1.], [ 2., 2., 1., 0.]])
shape
原始矩陣的形狀為整數元組。
nnz
矩陣中非零元素的數量。
- scipy.sparse.linalg.SuperLU.perm_c
置換 Pc 表示為索引數組。
- scipy.sparse.linalg.SuperLU.perm_r
置換 Pr 表示為索引數組。
L
單位對角線為
scipy.sparse.csc_matrix
的下三角因子。U
上三角因子為
scipy.sparse.csc_matrix
。
屬性 ::
相關用法
- Python SciPy linalg.eigvalsh_tridiagonal用法及代碼示例
- Python SciPy linalg.cdf2rdf用法及代碼示例
- Python SciPy linalg.LaplacianNd用法及代碼示例
- Python SciPy linalg.solve_circulant用法及代碼示例
- Python SciPy linalg.polar用法及代碼示例
- Python SciPy linalg.clarkson_woodruff_transform用法及代碼示例
- Python SciPy linalg.rsf2csf用法及代碼示例
- Python SciPy linalg.hessenberg用法及代碼示例
- Python SciPy linalg.tril用法及代碼示例
- Python SciPy linalg.triu用法及代碼示例
- Python SciPy linalg.svd用法及代碼示例
- Python SciPy linalg.ishermitian用法及代碼示例
- Python SciPy linalg.invhilbert用法及代碼示例
- Python SciPy linalg.factorized用法及代碼示例
- Python SciPy linalg.lu_factor用法及代碼示例
- Python SciPy linalg.lsqr用法及代碼示例
- Python SciPy linalg.cho_factor用法及代碼示例
- Python SciPy linalg.fractional_matrix_power用法及代碼示例
- Python SciPy linalg.eig_banded用法及代碼示例
- Python SciPy linalg.tanhm用法及代碼示例
- Python SciPy linalg.orthogonal_procrustes用法及代碼示例
- Python SciPy linalg.use_solver用法及代碼示例
- Python SciPy linalg.qr_multiply用法及代碼示例
- Python SciPy linalg.spsolve用法及代碼示例
- Python SciPy linalg.LinAlgError用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.sparse.linalg.SuperLU。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。