Spec-Zone.ru › PyTorch 2

torch.linalg.solve_triangular

torch.linalg.solve_triangular(A, B, *, upper, left=True, unitriangular=False, out=None) → Tensor

Вычисляет решение треугольной системы линейных уравнений с единственным решением.

Пусть K\mathbb{K} — это R\mathbb{R} или C\mathbb{C}, эта функция вычисляет решение X∈Kn×kX \in \mathbb{K}^{n \times k} связанной с треугольной матрицей A∈Kn×nA \in \mathbb{K}^{n \times n} без нулей на диагонали (то есть, она обратима) и прямоугольной матрицей B∈Kn×kB \in \mathbb{K}^{n \times k}, которая определяется как

AX=BAX = B

Аргумент upper указывает, является ли AA верхней или нижней треугольной.

Если left= False, эта функция возвращает матрицу X∈Kn×kX \in \mathbb{K}^{n \times k}, которая решает систему

XA=BA∈Kk×k,B∈Kn×k.XA = B\mathrlap{\qquad A \in \mathbb{K}^{k \times k}, B \in \mathbb{K}^{n \times k}.}

Если upper= True (соответственно False) будет обращаться только верхняя (соответственно нижняя) треугольная половина A. Элементы ниже главной диагонали будут считаться равными нулю и не будут обработаны.

Если unitriangular= True, диагональ A предполагается равной единице и не будет обработана.

Результат может содержать NaN если диагональ A содержит нули или элементы, очень близкие к нулю, и unitriangular= False (по умолчанию), или если входная матрица имеет очень маленькие собственные значения.

Поддерживает ввод типов float, double, cfloat и cdouble. Также поддерживает пакетные матрицы, и если входные данные представляют собой пакетные матрицы, то выходные данные имеют те же размерности пакета.

См. также

torch.linalg.solve() вычисляет решение общей квадратной системы линейных уравнений с единственным решением.

Параметры
  • A (Tensor) – тензор формы (*, n, n) (или (*, k, k) если left= True) где * — это нулевая или более размерности пакета.
  • B (Tensor) – тензор правой части формы (*, n, k).
Ключевые аргументы
  • upper (bool) – является ли A верхней или нижней треугольной матрицей.
  • left (bool, необязательно) – решать ли систему AX=BAX=B или XA=BXA = B. По умолчанию: True.
  • unitriangular (bool, необязательно) – если True, диагональные элементы A предполагаются равными 1. По умолчанию: False.
  • out (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

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.linalg.solve_triangular.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API