scipy.linalg.

solve_triangular#

scipy.linalg.solve_triangular(a, b, trans=0, lower=False, unit_diagonal=False, overwrite_b=False, check_finite=True)[原始碼]#

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

參數:
a(M, M) 類陣列

三角形矩陣

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

a x = b 中的右手邊矩陣

lowerbool,選用

僅使用包含在 a 下三角形中的資料。預設為使用上三角形。

trans{0, 1, 2, ‘N’, ‘T’, ‘C’},選用

要解的系統類型

trans

系統

0 或 ‘N’

a x = b

1 或 ‘T’

a^T x = b

2 或 ‘C’

a^H x = b

unit_diagonalbool,選用

若為 True,則假設 a 的對角線元素為 1,且不會被參考。

overwrite_bbool,選用

允許覆寫 b 中的資料(可能提升效能)

check_finitebool,選用

是否檢查輸入矩陣是否僅包含有限數字。停用可能會提升效能,但如果輸入包含無限大或 NaN,可能會導致問題(崩潰、不終止)。

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

系統 a x = b 的解。回傳的形狀與 b 相符。

引發:
LinAlgError

a 為奇異矩陣

註解

在版本 0.9.0 中新增。

範例

解下三角系統 a x = b,其中

     [3  0  0  0]       [4]
a =  [2  1  0  0]   b = [2]
     [1  0  1  0]       [4]
     [1  1  1  1]       [2]
>>> import numpy as np
>>> from scipy.linalg import solve_triangular
>>> a = np.array([[3, 0, 0, 0], [2, 1, 0, 0], [1, 0, 1, 0], [1, 1, 1, 1]])
>>> b = np.array([4, 2, 4, 2])
>>> x = solve_triangular(a, b, lower=True)
>>> x
array([ 1.33333333, -0.66666667,  2.66666667, -1.33333333])
>>> a.dot(x)  # Check the result
array([ 4.,  2.,  4.,  2.])