nag_dtrevc (f08qkc) computes selected left and/or right eigenvectors of a real upper quasi-triangular matrix.
nag_dtrevc (f08qkc) 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
nag_dhseqr (f08pec), 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 function 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,
.
- NE_ALLOC_FAIL
Dynamic memory allocation failed.
- NE_BAD_PARAM
On entry, argument had an illegal value.
- NE_ENUM_INT_2
On entry, , , .
Constraint: if or ,
;
if ,
.
On entry, , and .
Constraint: if or , ;
if , .
On entry, , , .
Constraint: if or ,
;
if ,
.
On entry, , and .
Constraint: if or , ;
if , .
- NE_INT
On entry, .
Constraint: , where is obtained by counting for each selected real eigenvector and for each selected complex eigenvector.
On entry, .
Constraint: .
On entry, .
Constraint: .
On entry, .
Constraint: .
On entry, .
Constraint: .
- NE_INT_2
On entry, and .
Constraint: .
- NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact
NAG for assistance.
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
nag_dtrsna (f08qlc).
For a description of canonical Schur form, see the document for
nag_dhseqr (f08pec).
The complex analogue of this function is
nag_ztrevc (f08qxc).