Special care must be taken when the symmetric indefinite Lanczos procedure is
implemented with a singular matrix. Here we limit our discussion to the
case where
is diagonalizable.
If
is defective the problem is more complicated and the reader is
referred to [161] for details.
When is
singular,
has infinite eigenvalues; the eigenvectors corresponding to
the infinite eigenvalues lie in the null space of
, while the eigenvectors
corresponding to the eigenvalues of interest (i.e., the finite eigenvalues)
belong to the range of
.
Consider the following example:
Note that the eigenvector has a component ( in the example)
in the null space of
and that the range space
of
is independent of
.
It is important that the Lanczos starting vector
lies in this
range space since components outside the space may grow
during the Lanczos iteration and contaminate the Ritz vectors.
It is essential that Algorithm 8.4 produce
Ritz vectors which lie entirely in the
range of . To this end, we recommend a preprocessing step as
well as a postprocessing step for Algorithm 8.4.
The initial vector in Algorithm 8.4
should lie in the range of
. For example, one could use
the product of
and a random vector.
In exact arithmetic,
if the initial vector
lies in the range of
, then
all of the Lanczos vectors
will belong to the range of
[340].
However, in finite precision arithmetic, preprocessing the initial
vector may not be enough to ensure that the Ritz vectors
lie in the range of
. As the Lanczos iteration progresses,
roundoff errors cause the Lanczos vectors to acquire
unwanted components in the
null space of
. There is no cheap way to eliminate
these components from the
Lanczos vectors, even though the size of the components may be monitored
via an inexpensive recurrence derived in [340].
Fortunately, there is a simple postprocessing scheme for purging
the undesired components of Ritz vectors which lie in the null space of
.
The idea is to replace the Ritz vector
with a multiple of
, which clearly belongs to the range of
.
In practice, there is no need to explicitly compute the
vector
;
we may take advantage of quantities which are readily available in the
Lanczos procedure to compute a vector parallel to
. From equation (8.23), it follows that