Let A be a square n-by-n matrix. A scalar
is called
an eigenvalue and a non-zero column vector v the corresponding
right eigenvector if
. A nonzero column vector u
satisfying
is called the left eigenvector .
The first basic task
of the routines described in this section
is to compute, for a given matrix A, all n values of
and,
if desired, their associated right eigenvectors v and/or
left eigenvectors u.
A second basic task is to compute the Schur factorization of a matrix A.
If A is complex, then its Schur factorization is
, where
Z is unitary and T is upper triangular. If A is real, its
Schur factorization is
, where Z is orthogonal.
and T is upper quasi-triangular (1-by-1 and 2-by-2 blocks on
its diagonal).
The columns of Z are called the Schur vectors of A.
The eigenvalues of A appear on the diagonal of T; complex conjugate
eigenvalues of a real A correspond to 2-by-2 blocks on the diagonal of T.
These two basic tasks can be performed in the following stages:
with Q orthogonal if A is real, or
with Q unitary if A is complex.
The reduction is performed by subroutine xGEHRD, which
represents
Q in a factored form, as described in section 5.4.
The routine xORGHR (or in the complex case xUNGHR) is provided to
form Q explicitly.
The routine xORMHR (or in the complex case xUNMHR) is provided to
multiply another matrix by Q without forming Q explicitly.
(for H real) or
(for H complex). The matrix A (the Schur vectors
of H) may
optionally be computed as well. Alternatively S may be postmultiplied
into the matrix Q determined in stage 1, to give the matrix Z = QS, the
Schur vectors of A. The eigenvalues are obtained from the
diagonal of T. All this is done by subroutine xHSEQR.
Other subsidiary tasks may be performed before or after those just described.