scipy.sparse.linalg.

spsolve_triangular#

scipy.sparse.linalg.spsolve_triangular(A, b, lower=True, overwrite_A=False, overwrite_b=False, unit_diagonal=False)[source]#

求解方程 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 具有适当的 dtype 以便能够存储结果。

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