评价此页

torch.linalg.ldl_solve#

torch.linalg.ldl_solve(LD, pivots, B, *, hermitian=False, out=None) Tensor#

使用 LDL 分解计算线性方程组的解。

LDpivots 是 LDL 分解的紧凑表示,它们应该由 torch.linalg.ldl_factor_ex() 计算得出。此函数中的 hermitian 参数应与 torch.linalg.ldl_factor_ex() 中的相应参数相同。

支持浮点 (float)、双精度浮点 (double)、复数浮点 (cfloat) 和复数双精度浮点 (cdouble) 数据类型。还支持矩阵批处理,如果 `A` 是一个矩阵批处理,则输出具有相同的批处理维度。

警告

此函数是“实验性的”,未来 PyTorch 版本中可能会发生变化。

参数
  • LD (Tensor) – 尺寸为 n x n 的矩阵,或此类矩阵的批次,大小为 (*, n, n),其中 * 表示一个或多个批次维度。

  • pivots (Tensor) – 与 LD 的 LDL 分解相关的枢轴。

  • B (Tensor) – 右侧的张量,形状为 (*, n, k)

关键字参数
  • hermitian (bool, optional) – 是否将分解的矩阵视为厄米(Hermitian)或对称(symmetric)。对于实值矩阵,此开关无效。默认值:False

  • out (tuple, optional) – 输出张量。可以将 B 作为 out 传递,结果将在 B 上就地计算。如果为 None,则忽略。默认值:None

示例

>>> A = torch.randn(2, 3, 3)
>>> A = A @ A.mT # make symmetric
>>> LD, pivots, info = torch.linalg.ldl_factor_ex(A)
>>> B = torch.randn(2, 3, 4)
>>> X = torch.linalg.ldl_solve(LD, pivots, B)
>>> torch.linalg.norm(A @ X - B)
>>> tensor(0.0001)