Spec-Zone.ru › PyTorch 2.14

torch.linalg.eigvalsh

torch.linalg.eigvalsh(A, UPLO='L', *, out=None) → Tensor [исходный код]

Вычисляет собственные значения комплексной эрмитовой или вещественной симметричной матрицы.

Пусть K\mathbb{K} равно R\mathbb{R} или C\mathbb{C}. Тогда собственные значения комплексной эрмитовой или вещественной симметричной матрицы A∈Kn×nA \in \mathbb{K}^{n \times n} определяются как корни (с учётом кратности) многочлена p степени n, заданного формулой

p(λ)=det⁡(A−λIn)λ∈Rp(\lambda) = \operatorname{det}(A - \lambda \mathrm{I}_n)\mathrlap{\qquad \lambda \in \mathbb{R}}

где In\mathrm{I}_n — единичная матрица размерности n. Собственные значения вещественной симметричной или комплексной эрмитовой матрицы всегда являются вещественными.

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

Собственные значения возвращаются в порядке возрастания.

Предполагается, что A является эрмитовой (соответственно симметричной), однако это не проверяется внутри функции. Вместо этого:

  • Если UPLO= ‘L’ (по умолчанию), при вычислениях используется только нижняя треугольная часть матрицы.
  • Если UPLO= ‘U’, используется только верхняя треугольная часть матрицы.

Примечание

Если входные данные находятся на устройстве CUDA, эта функция синхронизирует это устройство с CPU.

См. также

torch.linalg.eigh() вычисляет полное разложение по собственным значениям.

Параметры:
  • A (Tensor) – тензор формы (*, n, n), где * — ноль или несколько пакетных размерностей, состоящих из симметричных или эрмитовых матриц.
  • UPLO ('L', 'U', необязательно) – определяет, использовать ли при вычислениях верхнюю или нижнюю треугольную часть A. По умолчанию: ‘L’.
Именованные аргументы:

out (Tensor, необязательно) – выходной тензор. Игнорируется, если None. По умолчанию: None.

Возвращает:

Тензор с вещественными значениями, содержащий собственные значения, даже если A является комплексным. Собственные значения возвращаются в порядке возрастания.

Примеры:

>>> A = torch.randn(2, 2, dtype=torch.complex128)
>>> A = A + A.T.conj()  # creates a Hermitian matrix
>>> A
tensor([[2.9228+0.0000j, 0.2029-0.0862j],
        [0.2029+0.0862j, 0.3464+0.0000j]], dtype=torch.complex128)
>>> torch.linalg.eigvalsh(A)
tensor([0.3277, 2.9415], dtype=torch.float64)

>>> A = torch.randn(3, 2, 2, dtype=torch.float64)
>>> A = A + A.mT  # creates a batch of symmetric matrices
>>> torch.linalg.eigvalsh(A)
tensor([[ 2.5797,  3.4629],
        [-4.1605,  1.3780],
        [-3.1113,  2.7381]], dtype=torch.float64)

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

Spec-Zone.ru

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