torch.linalg.eigvalsh#
- torch.linalg.eigvalsh(A,UPLO='L',*,out=None)→Tensor#
Computes the eigenvalues of a complex Hermitian or real symmetric matrix.
Letting be or,theeigenvalues of a complex Hermitian or real symmetric matrixare defined as the roots (counted with multiplicity) of the polynomialp of degreen given by
where 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 if
Ais a batch of matrices thenthe output has the same batch dimensions.The eigenvalues are returned in ascending order.
Ais assumed to be Hermitian (resp. symmetric), but this is not checked internally, instead:If
UPLO= ‘L’ (default), only the lower triangular part of the matrix is used in the computation.If
UPLO= ‘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 partof
Ain the computations. Default:‘L’.
- Keyword Arguments
out (Tensor,optional) – output tensor. Ignored ifNone. Default:None.
- Returns
A real-valued tensor containing the eigenvalues even when
Ais 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)