scipy.sparse.linalg.
spsolve_triangular#
- scipy.sparse.linalg.spsolve_triangular(A, b, lower=True, overwrite_A=False, overwrite_b=False, unit_diagonal=False)[源代码]#
求解方程
A x = b
中的 x,假设 A 是一个三角矩阵。- 参数:
- A(M, M) 稀疏数组或矩阵
一个稀疏的方形三角矩阵。应为 CSR 或 CSC 格式。
- b(M,) 或 (M, N) 类数组
方程
A x = b
中的右侧矩阵- lowerbool, 可选
指示 A 是下三角矩阵还是上三角矩阵。默认为下三角矩阵。
- overwrite_Abool, 可选
允许修改 A。启用可以提高性能。默认为 False。
- overwrite_bbool, 可选
允许覆盖 b 中的数据。启用可以提高性能。默认为 False。如果 overwrite_b 为 True,则应确保 b 具有适当的数据类型以能够存储结果。
- unit_diagonalbool, 可选
如果为 True,则假定 a 的对角线元素为 1。
1.4.0 版本中新增。
- 返回:
- x(M,) 或 (M, N) ndarray
系统
A x = b
的解。返回值的形状与 b 的形状匹配。
- 引发:
- LinAlgError
如果 A 是奇异的或不是三角形的。
- ValueError
如果 A 的形状或 b 的形状不符合要求。
注释
在 0.19.0 版本中添加。
示例
>>> import numpy as np >>> from scipy.sparse import csc_array >>> from scipy.sparse.linalg import spsolve_triangular >>> A = csc_array([[3, 0, 0], [1, -1, 0], [2, 0, 1]], dtype=float) >>> B = np.array([[2, 0], [-1, 0], [2, 0]], dtype=float) >>> x = spsolve_triangular(A, B) >>> np.allclose(A.dot(x), B) True