SSTEIN(3)
computes the eigenvectors of a real symmetric tridiagonal matrix T corresponding to specified eigenvalues, using inverse iteration
SYNOPSIS
- SUBROUTINE SSTEIN(
-
N, D, E, M, W, IBLOCK, ISPLIT, Z, LDZ, WORK,
IWORK, IFAIL, INFO )
-
INTEGER
INFO, LDZ, M, N
-
INTEGER
IBLOCK( * ), IFAIL( * ), ISPLIT( * ),
IWORK( * )
-
REAL
D( * ), E( * ), W( * ), WORK( * ), Z( LDZ, * )
PURPOSE
SSTEIN computes the eigenvectors of a real symmetric tridiagonal
matrix T corresponding to specified eigenvalues, using inverse
iteration.
The maximum number of iterations allowed for each eigenvector is
specified by an internal parameter MAXITS (currently set to 5).
ARGUMENTS
- N (input) INTEGER
-
The order of the matrix. N >= 0.
- D (input) REAL array, dimension (N)
-
The n diagonal elements of the tridiagonal matrix T.
- E (input) REAL array, dimension (N-1)
-
The (n-1) subdiagonal elements of the tridiagonal matrix
T, in elements 1 to N-1.
- M (input) INTEGER
-
The number of eigenvectors to be found. 0 <= M <= N.
- W (input) REAL array, dimension (N)
-
The first M elements of W contain the eigenvalues for
which eigenvectors are to be computed. The eigenvalues
should be grouped by split-off block and ordered from
smallest to largest within the block. ( The output array
W from SSTEBZ with ORDER = 'B' is expected here. )
- IBLOCK (input) INTEGER array, dimension (N)
-
The submatrix indices associated with the corresponding
eigenvalues in W; IBLOCK(i)=1 if eigenvalue W(i) belongs to
the first submatrix from the top, =2 if W(i) belongs to
the second submatrix, etc. ( The output array IBLOCK
from SSTEBZ is expected here. )
- ISPLIT (input) INTEGER array, dimension (N)
-
The splitting points, at which T breaks up into submatrices.
The first submatrix consists of rows/columns 1 to
ISPLIT( 1 ), the second of rows/columns ISPLIT( 1 )+1
through ISPLIT( 2 ), etc.
( The output array ISPLIT from SSTEBZ is expected here. )
- Z (output) REAL array, dimension (LDZ, M)
-
The computed eigenvectors. The eigenvector associated
with the eigenvalue W(i) is stored in the i-th column of
Z. Any vector which fails to converge is set to its current
iterate after MAXITS iterations.
- LDZ (input) INTEGER
-
The leading dimension of the array Z. LDZ >= max(1,N).
- WORK (workspace) REAL array, dimension (5*N)
-
- IWORK (workspace) INTEGER array, dimension (N)
-
- IFAIL (output) INTEGER array, dimension (M)
-
On normal exit, all elements of IFAIL are zero.
If one or more eigenvectors fail to converge after
MAXITS iterations, then their indices are stored in
array IFAIL.
- INFO (output) INTEGER
-
= 0: successful exit.
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, then i eigenvectors failed to converge
in MAXITS iterations. Their indices are stored in
array IFAIL.
PARAMETERS
- MAXITS INTEGER, default = 5
-
The maximum number of iterations performed.
- EXTRA INTEGER, default = 2
-
The number of iterations performed after norm growth
criterion is satisfied, should be at least 1.