F08QKF (DTREVC) computes selected left and/or right eigenvectors of a real upper quasi-triangular matrix.
SUBROUTINE F08QKF ( |
JOB, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR, MM, M, WORK, INFO) |
INTEGER |
N, LDT, LDVL, LDVR, MM, M, INFO |
REAL (KIND=nag_wp) |
T(LDT,*), VL(LDVL,*), VR(LDVR,*), WORK(3*N) |
LOGICAL |
SELECT(*) |
CHARACTER(1) |
JOB, HOWMNY |
|
F08QKF (DTREVC) computes left and/or right eigenvectors of a real upper quasi-triangular matrix
in canonical Schur form. Such a matrix arises from the Schur factorization of a real general matrix, as computed by
F08PEF (DHSEQR), for example.
The right eigenvector
, and the left eigenvector
, corresponding to an eigenvalue
, are defined by:
Note that even though
is real,
,
and
may be complex. If
is an eigenvector corresponding to a complex eigenvalue
, then the complex conjugate vector
is the eigenvector corresponding to the complex conjugate eigenvalue
.
The routine can compute the eigenvectors corresponding to selected eigenvalues, or it can compute all the eigenvectors. In the latter case the eigenvectors may optionally be pre-multiplied by an input matrix . Normally is an orthogonal matrix from the Schur factorization of a matrix as ; if is a (left or right) eigenvector of , then is an eigenvector of .
The eigenvectors are computed by forward or backward substitution. They are scaled so that, for a real eigenvector ,
,
and for a complex eigenvector,
.
If
is an exact right eigenvector, and
is the corresponding computed eigenvector, then the angle
between them is bounded as follows:
where
is the reciprocal condition number of
.
The condition number
may be computed by calling
F08QLF (DTRSNA).
For a description of canonical Schur form, see the document for
F08PEF (DHSEQR).
The complex analogue of this routine is
F08QXF (ZTREVC).