scipy.sparse.linalg.

spsolve_triangular#

scipy.sparse.linalg.spsolve_triangular(A, b, lower=True, overwrite_A=False, overwrite_b=False, unit_diagonal=False)[source]#

求解方程式 A x = b 中的 x,假設 A 為三角形矩陣。

參數:
A(M, M) 稀疏陣列或矩陣

稀疏方型三角形矩陣。應為 CSR 或 CSC 格式。

b(M,) 或 (M, N) 類陣列

A x = b 中的右手邊矩陣

lowerbool,可選

A 是否為下或上三角形矩陣。預設為下三角形矩陣。

overwrite_Abool,可選

允許變更 A。啟用可提升效能。預設為 False。

overwrite_bbool,可選

允許覆寫 b 中的資料。啟用可提升效能。預設為 False。若 overwrite_b 為 True,應確保 b 具有適當的 dtype 以儲存結果。

unit_diagonalbool,可選

若為 True,則 a 的對角線元素會假設為 1。

版本 1.4.0 新增。

返回:
x(M,) 或 (M, N) ndarray

系統 A x = b 的解。返回值的形狀與 b 的形狀相符。

引發:
LinAlgError

A 為奇異或非三角形矩陣。

ValueError

A 的形狀或 b 的形狀不符合需求。

註解

版本 0.19.0 新增。

範例

>>> import numpy as np
>>> from scipy.sparse import csc_array
>>> from scipy.sparse.linalg import spsolve_triangular
>>> A = csc_array([[3, 0, 0], [1, -1, 0], [2, 0, 1]], dtype=float)
>>> B = np.array([[2, 0], [-1, 0], [2, 0]], dtype=float)
>>> x = spsolve_triangular(A, B)
>>> np.allclose(A.dot(x), B)
True