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