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