torch.linalg.solve_triangular¶
- torch.linalg.solve_triangular(A, B, *, upper, left=True, unitriangular=False, out=None) Tensor ¶
计算具有唯一解的三角线性方程组的解。
令 为 或 ,此函数计算与三角矩阵 (对角线不含零,即它是可逆的)和矩形矩阵 相关联的线性系统的解
参数
upper
表示 是上三角还是下三角。如果
left
= False,则此函数返回解此方程组的矩阵如果
upper
= True(或 False),则仅访问A
的上(或下)三角部分。主对角线以下的元素将被视为零,并且不会访问。如果
unitriangular
= True,则假设A
的对角线为 1,并且不会访问。结果可能包含 NaN,如果
A
的对角线包含零或接近零的元素,并且unitriangular
= False(默认)或输入矩阵具有非常小的特征值。支持浮点数、双精度浮点数、复浮点数和复双精度浮点数的数据类型输入。也支持矩阵批处理,如果输入是矩阵批处理,则输出具有相同的批处理维度。
参见
torch.linalg.solve()
计算具有唯一解的一般平方线性方程组的解。- 参数:
A(张量)- 形状为(*, n, n)的张量(如果
left
= False,则为(*, k, k)),其中*为零个或多个批处理维度。B(张量)- 形状为(*, n, k)的右侧张量。
- 关键字参数:
upper(布尔值)-
A
是否为上三角或下三角矩阵。left(布尔值,可选)- 是否求解系统 或 。默认:True。
单位三角矩阵(bool,可选)- 如果为 True,则假定
A
的对角元素都等于 1。默认:False。输出(Tensor,可选)- 输出张量。可以将 B 传递为 out,并在 B 上就地计算结果。如果为 None 则忽略。默认:None。
示例:
>>> A = torch.randn(3, 3).triu_() >>> B = torch.randn(3, 4) >>> X = torch.linalg.solve_triangular(A, B, upper=True) >>> torch.allclose(A @ X, B) True >>> A = torch.randn(2, 3, 3).tril_() >>> B = torch.randn(2, 3, 4) >>> X = torch.linalg.solve_triangular(A, B, upper=False) >>> torch.allclose(A @ X, B) True >>> A = torch.randn(2, 4, 4).tril_() >>> B = torch.randn(2, 3, 4) >>> X = torch.linalg.solve_triangular(A, B, upper=False, left=False) >>> torch.allclose(X @ A, B) True