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) array_like

三角矩阵

b(M,) 或 (M, N) array_like

方程 a x = b 中的右侧矩阵

下限bool, 可选

仅使用 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 匹配。

Raises:
LinAlgError

如果 a 是单数

注释

Added in version 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.])