當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy linalg.SuperLU用法及代碼示例


本文簡要介紹 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

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.sparse.linalg.SuperLU。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。