We shall utilize a special orthogonal transformation to implement these
deflation schemes. The deflation schemes are related to an eigenvector
associated with a Ritz value that is to be deflated (either locked or purged).
Given a vector of unit length, Algorithm 7.8 computes an
orthogonal matrix
such that
(hence
).
The following orthogonal deflating transformation
Algorithm 7.8 is identical to
Algorithm 4.9 used in IRLM (see §4.5),
but for completeness, we present it again.
The orthogonal matrix constructed as prescribed
in Algorithm 7.8 has a very special form and
may be written as
Q = R + y e_1^*, with
R e_1 = 0 , R^* y = 0,
where
is upper triangular. It may also be written as
Q = L + y g^* , with
L e_1 = 0 , L^* y = e_1 - g,
where
is lower triangular,
and
.
Now, consider the matrix . The
substitutions
,
from (7.19) and (7.18) will give
Q^* H Q &=& Q^* H ( R + y e_1^*)
&=& (L^* + g y^*) H R + Q^*Hy e_1^*
&=& L^*HR + g y^*H R + Q^*Hy e_1^*.
Since both and
are upper triangular, it follows
that
is upper Hessenberg, with the first row and the first column each being zero
due to
.
From this discussion, we see that when is a right eigenvector
of
with
, then
is of the form
H_+ = [
cc
& h^*
0 & H_2
].
On the other hand, when is a left eigenvector
of
with
, then
is of the form
H_+ = [
cc
& 0
h & H_2
],
where is upper Hessenberg.
We shall use (7.20) for locking a converged Ritz value, and we shall use (7.21) to purge an unwanted but converged Ritz value.
It should be noted that, as computed by Algorithm 7.8,
will have componentwise relative
errors on the order of machine precision
with no
element growth. Moreover, extension to complex arithmetic is
completely straightforward (unlike Givens or Householder transformations).