torch.linalg.eigvalsh

torch.linalg.eigvalsh(A, UPLO='L', *, out=None) Tensor

计算复 Hermite 矩阵或实对称矩阵的特征值。

$\mathbb{K}$为实数集$\mathbb{R}$或复数集$\mathbb{C}$,复赫mitte矩阵或实对称矩阵$A \in \math biochemical.keitex">\mathbb{K}^{n \times n}$特征值定义为由下式给出的次数为n的多项式p的根(按重数计算):

$p(\lambda) = \operatorname{det}(A - \lambda \mathrm{I}_n)\mathrlap{\qquad \lambda \in \mathbb{R}}$

其中$\mathrm{I}_n$ 表示 n 维单位矩阵。实对称矩阵或复赫米特矩阵的特征值始终为实数。

支持浮点型、双精度型、复数浮点型和复数双精度型的数据类型作为输入。还支持矩阵的批量处理,如果A是一组矩阵,那么输出将具有相同的批处理维度。

特征值以升序排列返回。

A 被假设为厄米矩阵(或对应的对称矩阵),但不会进行内部验证,而是:

  • 如果 UPLO = ‘L’(默认情况),则在计算中只使用矩阵的下三角部分。

  • 如果 UPLO = 'U',则只使用矩阵的上三角部分。

注意

当输入位于CUDA设备上时,此函数会将其与CPU进行同步。

参见

torch.linalg.eigh() 用于计算完整的特征值分解。

参数
  • A (Tensor) – 形状为(*, n, n)的张量,其中*表示零个或多个批次维度,包含对称或厄米矩阵。

  • UPLO ('L', 'U', 可选) – 控制在计算中使用矩阵A的上三角部分还是下三角部分。默认值:‘L’

关键字参数

out (Tensor, optional) – 输出张量。默认为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)
本页目录