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