NAG Library Routine Document
F08JEF (DSTEQR)
1 Purpose
F08JEF (DSTEQR) computes all the eigenvalues and, optionally, all the eigenvectors of a real symmetric tridiagonal matrix, or of a real symmetric matrix which has been reduced to tridiagonal form.
2 Specification
INTEGER |
N, LDZ, INFO |
REAL (KIND=nag_wp) |
D(*), E(*), Z(LDZ,*), WORK(*) |
CHARACTER(1) |
COMPZ |
|
The routine may be called by its
LAPACK
name dsteqr.
3 Description
F08JEF (DSTEQR) computes all the eigenvalues and, optionally, all the eigenvectors of a real symmetric tridiagonal matrix
.
In other words, it can compute the spectral factorization of
as
where
is a diagonal matrix whose diagonal elements are the eigenvalues
, and
is the orthogonal matrix whose columns are the eigenvectors
. Thus
The routine may also be used to compute all the eigenvalues and eigenvectors of a real symmetric matrix
which has been reduced to tridiagonal form
:
In this case, the matrix
must be formed explicitly and passed to F08JEF (DSTEQR), which must be called with
. The routines which must be called to perform the reduction to tridiagonal form and form
are:
F08JEF (DSTEQR) uses the implicitly shifted
algorithm, switching between the
and
variants in order to handle graded matrices effectively (see
Greenbaum and Dongarra (1980)). The eigenvectors are normalized so that
, but are determined only to within a factor
.
If only the eigenvalues of
are required, it is more efficient to call
F08JFF (DSTERF) instead. If
is positive definite, small eigenvalues can be computed more accurately by
F08JGF (DPTEQR).
4 References
Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
Greenbaum A and Dongarra J J (1980) Experiments with QR/QL methods for the symmetric triangular eigenproblem LAPACK Working Note No. 17 (Technical Report CS-89-92) University of Tennessee, Knoxville
Parlett B N (1998) The Symmetric Eigenvalue Problem SIAM, Philadelphia
5 Parameters
- 1: COMPZ – CHARACTER(1)Input
On entry: indicates whether the eigenvectors are to be computed.
- Only the eigenvalues are computed (and the array Z is not referenced).
- The eigenvalues and eigenvectors of are computed (and the array Z is initialized by the routine).
- The eigenvalues and eigenvectors of are computed (and the array Z must contain the matrix on entry).
Constraint:
, or .
- 2: N – INTEGERInput
On entry: , the order of the matrix .
Constraint:
.
- 3: D() – REAL (KIND=nag_wp) arrayInput/Output
-
Note: the dimension of the array
D
must be at least
.
On entry: the diagonal elements of the tridiagonal matrix .
On exit: the
eigenvalues in ascending order, unless
(in which case see
Section 6).
- 4: E() – REAL (KIND=nag_wp) arrayInput/Output
-
Note: the dimension of the array
E
must be at least
.
On entry: the off-diagonal elements of the tridiagonal matrix .
On exit:
E is overwritten.
- 5: Z(LDZ,) – REAL (KIND=nag_wp) arrayInput/Output
-
Note: the second dimension of the array
Z
must be at least
if
or
and at least
if
.
On entry: if
,
Z must contain the orthogonal matrix
from the reduction to tridiagonal form.
If
,
Z need not be set.
On exit: if
or
, the
required orthonormal eigenvectors stored as columns of
; the
th column corresponds to the
th eigenvalue, where
, unless
.
If
,
Z is not referenced.
- 6: LDZ – INTEGERInput
On entry: the first dimension of the array
Z as declared in the (sub)program from which F08JEF (DSTEQR) is called.
Constraints:
- if or , ;
- if , .
- 7: WORK() – REAL (KIND=nag_wp) arrayWorkspace
-
Note: the dimension of the array
WORK
must be at least
if
or
and at least
if
.
If
,
WORK is not referenced.
- 8: INFO – INTEGEROutput
On exit:
unless the routine detects an error (see
Section 6).
6 Error Indicators and Warnings
Errors or warnings detected by the routine:
If , argument had an illegal value. An explanatory message is output, and execution of the program is terminated.
The algorithm has failed to find all the eigenvalues after a total of
iterations. In this case,
D and
E contain on exit the diagonal and off-diagonal elements, respectively, of a tridiagonal matrix
similar to
. If
, then
off-diagonal elements have not converged to zero.
7 Accuracy
The computed eigenvalues and eigenvectors are exact for a nearby matrix
, where
and
is the
machine precision.
If
is an exact eigenvalue and
is the corresponding computed value, then
where
is a modestly increasing function of
.
If
is the corresponding exact eigenvector, and
is the corresponding computed eigenvector, then the angle
between them is bounded as follows:
Thus the accuracy of a computed eigenvector depends on the gap between its eigenvalue and all the other eigenvalues.
The total number of floating point operations is typically about if and about if or , but depends on how rapidly the algorithm converges. When , the operations are all performed in scalar mode; the additional operations to compute the eigenvectors when or can be vectorized and on some machines may be performed much faster.
The complex analogue of this routine is
F08JSF (ZSTEQR).
9 Example
This example computes all the eigenvalues and eigenvectors of the symmetric tridiagonal matrix
, where
See also the examples for
F08FFF (DORGTR),
F08GFF (DOPGTR) or
F08HEF (DSBTRD), which illustrate the use of this routine to compute the eigenvalues and eigenvectors of a full or band symmetric matrix.
9.1 Program Text
Program Text (f08jefe.f90)
9.2 Program Data
Program Data (f08jefe.d)
9.3 Program Results
Program Results (f08jefe.r)