Intel® oneAPI Math Kernel Library Developer Reference - C

Symmetric Eigenvalue Problems: LAPACK Computational Routines

Symmetric eigenvalue problems are posed as follows: given an n-by-n real symmetric or complex Hermitian matrix A, find the eigenvalues λ and the corresponding eigenvectors z that satisfy the equation

Az = λz (or, equivalently, zHA = λzH).

In such eigenvalue problems, all n eigenvalues are real not only for real symmetric but also for complex Hermitian matrices A, and there exists an orthonormal system of n eigenvectors. If A is a symmetric or Hermitian positive-definite matrix, all eigenvalues are positive.

To solve a symmetric eigenvalue problem with LAPACK, you usually need to reduce the matrix to tridiagonal form and then solve the eigenvalue problem with the tridiagonal matrix obtained. LAPACK includes routines for reducing the matrix to a tridiagonal form by an orthogonal (or unitary) similarity transformation A = QTQH as well as for solving tridiagonal symmetric eigenvalue problems. These routines are listed in Table "Computational Routines for Solving Symmetric Eigenvalue Problems".

There are different routines for symmetric eigenvalue problems, depending on whether you need all eigenvectors or only some of them or eigenvalues only, whether the matrix A is positive-definite or not, and so on.

These routines are based on three primary algorithms for computing eigenvalues and eigenvectors of symmetric problems: the divide and conquer algorithm, the QR algorithm, and bisection followed by inverse iteration. The divide and conquer algorithm is generally more efficient and is recommended for computing all eigenvalues and eigenvectors. Furthermore, to solve an eigenvalue problem using the divide and conquer algorithm, you need to call only one routine. In general, more than one routine has to be called if the QR algorithm or bisection followed by inverse iteration is used.

Computational Routines for Solving Symmetric Eigenvalue Problems

Operation

Real symmetric matrices

Complex Hermitian matrices

Reduce to tridiagonal form A = QTQH (full storage)

sytrd 

hetrd 

Reduce to tridiagonal form A = QTQH (packed storage)

sptrd

hptrd

Reduce to tridiagonal form A = QTQH (band storage).

sbtrd

hbtrd

Generate matrix Q (full storage)

orgtr

ungtr

Generate matrix Q (packed storage)

opgtr

upgtr

Apply matrix Q (full storage)

ormtr

unmtr

Apply matrix Q (packed storage)

opmtr

upmtr

Find all eigenvalues of a tridiagonal matrix T

sterf

 

Find all eigenvalues and eigenvectors of a tridiagonal matrix T

steqr  stedc

steqr  stedc

Find all eigenvalues and eigenvectors of a tridiagonal positive-definite matrix T.

pteqr

pteqr

Find selected eigenvalues of a tridiagonal matrix T

stebz  stegr

stegr

Find selected eigenvectors of a tridiagonal matrix T

stein  stegr

stein  stegr

Find selected eigenvalues and eigenvectors of f a real symmetric tridiagonal matrix T

stemr

stemr

Compute the reciprocal condition numbers for the eigenvectors

disna

disna