scipy.linalg.solve_triangular

scipy.linalg.solve_triangular(a, b, trans=0, lower=False, unit_diagonal=False, overwrite_b=False, debug=None, check_finite=True)[源代码]

解这个方程式 a x = bx ,假设a是一个三角矩阵。

参数
a(M,M)类数组

三角形矩阵

b(M,)或(M,N)类阵列

中的右侧矩阵 a x = b

lower布尔值,可选

仅使用包含在以下三角形中的数据 a 。默认情况下使用上三角形。

trans{0,1,2,‘N’,‘T’,‘C’},可选

要解决的系统类型:

运输

系统

0或“N”

a x=b

1或“T”

a^T x=b

2或“C”

a^H x=b

unit_diagonal布尔值,可选

如果为True,则 a 假定为1,不会被引用。

overwrite_b布尔值,可选

允许覆盖中的数据 b (可增强性能)

check_finite布尔值,可选

是否检查输入矩阵是否仅包含有限个数字。禁用可能会带来性能提升,但如果输入确实包含无穷大或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]
>>> 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.])