eigh

tenpy.linalg.np_conserved.eigh(a, UPLO='L', sort=None)[source]

Calculate eigenvalues and eigenvectors for a hermitian matrix.

W, V = eigh(a) yields \(a = V diag(w) V^{\dagger}\). Assumes that a is hermitian, a.conj().transpose() == a.

Parameters
aArray

The hermitian square matrix to be diagonalized.

UPLO{‘L’, ‘U’}

Whether to take the lower (‘L’, default) or upper (‘U’) triangular part of a.

sort{‘m>’, ‘m<’, ‘>’, ‘<’, None}

How the eigenvalues should are sorted within each charge block. Defaults to None, which is same as ‘<’. See argsort() for details.

Returns
W1D ndarray

The eigenvalues, sorted within the same charge blocks according to sort.

VArray

Unitary matrix; V[:, i] is normalized eigenvector with eigenvalue W[i]. The first label is inherited from A, the second label is 'eig'.

Notes

Requires the legs to be contractible. If a is not blocked by charge, a blocked copy is made via a permutation P, :math:` a’ = P a P = V’ W’ (V’)^{dagger}`. The eigenvectors V are then obtained by the reverse permutation, \(V = P^{-1} V'\) such that A = V W V^{dagger}.