Rate this Page

torch.linalg.eigvalsh#

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

Computes the eigenvalues of a complex Hermitian or real symmetric matrix.

LettingK\mathbb{K} beR\mathbb{R} orC\mathbb{C},theeigenvalues of a complex Hermitian or real symmetric matrixAKn×nA \in \mathbb{K}^{n \times n}are defined as the roots (counted with multiplicity) of the polynomialp of degreen given by

whereIn\mathrm{I}_n is then-dimensional identity matrix.The eigenvalues of a real symmetric or complex Hermitian matrix are always real.

Supports input of float, double, cfloat and cdouble dtypes.Also supports batches of matrices, and ifA is a batch of matrices thenthe output has the same batch dimensions.

The eigenvalues are returned in ascending order.

A is assumed to be Hermitian (resp. symmetric), but this is not checked internally, instead:

  • IfUPLO= ‘L’ (default), only the lower triangular part of the matrix is used in the computation.

  • IfUPLO= ‘U’, only the upper triangular part of the matrix is used.

Note

When inputs are on a CUDA device, this function synchronizes that device with the CPU.

See also

torch.linalg.eigh() computes the full eigenvalue decomposition.

Parameters
  • A (Tensor) – tensor of shape(*, n, n) where* is zero or more batch dimensionsconsisting of symmetric or Hermitian matrices.

  • UPLO ('L','U',optional) – controls whether to use the upper or lower triangular partofA in the computations. Default:‘L’.

Keyword Arguments

out (Tensor,optional) – output tensor. Ignored ifNone. Default:None.

Returns

A real-valued tensor containing the eigenvalues even whenA is complex.The eigenvalues are returned in ascending order.

Examples:

>>>A=torch.randn(2,2,dtype=torch.complex128)>>>A=A+A.T.conj()# creates a Hermitian matrix>>>Atensor([[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)