Syntax

Note: the interface to this routine has changed since earlier releases of the toolbox:

Mark 23: abstol is now an optional input parameter

.

Description

nag_lapack_zstegr (f08jy) computes all the eigenvalues and, optionally, the eigenvectors, of a real symmetric tridiagonal matrix TT. That is, the function computes the spectral factorization of TT given by

T = ZΛZT,

T=ZΛZT,

where ΛΛ is a diagonal matrix whose diagonal elements are the eigenvalues, λiλi, of TT and ZZ is an orthogonal matrix whose columns are the eigenvectors, zizi, of TT. Thus

Tzi = λizi, i = 1,2, … ,n.

Tzi=λizi, i=1,2,…,n.

The function stores the real orthogonal matrix ZZ in a complex array, so that it may also be used to compute all the eigenvalues and eigenvectors of a complex Hermitian matrix AA which has been reduced to tridiagonal form TT:

A

= QTQH, where ​Q​ is unitary

= (QZ)Λ(QZ)H.

A=QTQH, where ​Q​ is unitary=(QZ)Λ(QZ)H.

In this case, the matrix QQ must be explicitly applied to the output matrix ZZ. The functions which must be called to perform the reduction to tridiagonal form and apply QQ are:

This function uses the dqds and the Relatively Robust Representation algorithms to compute the eigenvalues and eigenvectors respectively; see for example Parlett and Dhillon (2000) and Dhillon and Parlett (2004) for further details. nag_lapack_zstegr (f08jy) can usually compute all the eigenvalues and eigenvectors in O(n2)O(n2) floating point operations and so, for large matrices, is often considerably faster than the other symmetric tridiagonal functions in this chapter when all the eigenvectors are required, particularly so compared to those functions that are based on the QRQR algorithm.

Note: the dimension of the array isuppz
must be at least
max(1,2 × n)max(1,2×n).

The support of the eigenvectors in ZZ, i.e., the indices indicating the nonzero elements in ZZ. The iith eigenvector is nonzero only in elements isuppz(2 × i − 1)isuppz2×i-1 through isuppz(2 × i)isuppz2×i.

It is possible that info refers to a parameter that is omitted from the MATLAB interface. This usually indicates that an error in one of the other input parameters has caused an incorrect value to be inferred.