torch.linalg.eigvalsh
-
torch.linalg.eigvalsh(A, UPLO='L', *, out=None) → Tensor[исходный код] -
Вычисляет собственные значения комплексной эрмитовой или вещественной симметричной матрицы.
Пусть равно или . Тогда собственные значения комплексной эрмитовой или вещественной симметричной матрицы определяются как корни (с учётом кратности) многочлена
pстепени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’.
-
A (Tensor) – тензор формы
- Именованные аргументы:
-
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