4.6 Symmetric and Hermitian Eigenvalue Decomposition

The first four routines compute all or selected eigenvalues and eigenvectors of a real symmetric matrix $A$:

\begin{displaymath}
A = V\mbox{\bf diag}\,(\lambda)V^T,\qquad V^TV = I.
\end{displaymath}

syev( A, W[, jobz='N'[, uplo='L']])
Eigenvalue decomposition of a real symmetric matrix of order n. W is a real matrix of length at least n. On exit, W contains the eigenvalues in ascending order. If jobz is 'V', the eigenvectors are also computed and returned in A. If jobz is 'N', the eigenvectors are not returned and the contents of A are destroyed. Raises an ArithmeticError if the eigenvalue decomposition fails.

syevd( A, W[, jobz='N'[, uplo='L']])
This is an alternative to syev(), based on a different algorithm. It is faster on large problems, but also uses more memory.

syevx( A, W[, jobz='N'[, range='A'[, uplo='L'[, vl=0.0, vu=0.0[, il=1, iu=1[, Z=None]]]]]])
Computes selected eigenvalues and eigenvectors of a real symmetric matrix A of order n.

W is a real matrix of length at least n. On exit, W contains the eigenvalues in ascending order. If range is 'A', all the eigenvalues are computed. If range is 'I', eigenvalues il through iu are computed, where 1 <= il <= iu <= n. If range is 'V', the eigenvalues in the interval (vl,vu] are computed.

If jobz is 'V', the (normalized) eigenvectors are computed, and returned in Z. If jobz is 'N', the eigenvectors are not computed. In both cases, the contents of A are destroyed on exit. Z is optional (and not referenced) if jobz is 'N'. It is required if jobz is 'V' and must have at least n columns if range is 'A' or 'V' and at least iu-il+1 columns if range is 'I'.

syevx() returns the number of computed eigenvalues.

syevr( A, W[, jobz='N'[, range='A'[, uplo='L'[, vl=0.0, vu=0.0[, il=1, iu=n[, Z=None]]]]]])
This is an alternative to syevx(). syevr() is the most recent LAPACK routine for symmetric eigenvalue problems, and expected to supersede the three other routines in future releases.

The next four routines can be used to compute eigenvalues and eigenvectors for complex Hermitian matrices:

\begin{displaymath}
A = V\mbox{\bf diag}\,(\lambda)V^H,\qquad V^HV = I.
\end{displaymath}

For real symmetric matrices they are identical to the corresponding syev_() routines.

heev( A, W[, jobz='N'[, uplo='L']])
Eigenvalue decomposition of a real symmetric or complex Hermitian matrix of order n. The calling sequence is identical to syev(), except that A can be real or complex.

heevd( A, W[, jobz='N'[, uplo='L']])
This is an alternative to heev().

heevx( A, W[, jobz='N'[, range='A'[, uplo='L'[, vl=0.0, vu=0.0 [, il=1, iu=n[, Z=None]]]]]])
Computes selected eigenvalues and eigenvectors of a real symmetric or complex Hermitian matrix of order n. The calling sequence is identical to syevx(), except that A can be real or complex. Z must have the same type as A.

heevr( A, W[, jobz='N'[, range='A'[, uplo='L'[, vl=0.0, vu=0.0[, il=1, iu=n[, Z=None]]]]]])
This is an alternative to heevx().