Develop
The
method can be used as a basis for building a
preconditioner that normally one uses if incomplete Cholesky preconditioning is not effective or fails. Assume the diagonal elements of
are nonzero. The formula
specifies the
iteration in matrix form (see Equation 20.15). Using the equation
along with some matrix algebra, it follows that (Problem 21.12):
Unfortunately, an
preconditioner is not symmetric and cannot be used for a symmetric positive definite matrix. As a result, we will use Equation 21.20 to construct a symmetric positive definite matrix termed the
preconditioning
backward sweep by reversing the iteration direction to obtain
(k+1)
The reader can verify that in the backward sweep, the roles of
and
are swapped, so we have the two equations
where
(k+1)
are residuals. Eliminating
(k+1/2)
from Equation 21.21 gives the
preconditioning matrix. The somewhat involved computations follow:
The reader should verify that
SSOR
is symmetric positive definite (Problem 21.9). Using
in Equation 21.22 gives
The matrix
PGS
corresponds to the Gauss-Seidel method. The value of
is not as critical as the choice of ω for the SOR iteration, and ω = 1 can be quite effective in many cases. Solve
PGS
or
−1
in two stages.
Solve
1
for
1
Solve
1
for
In MATLAB, compute
as follows:
The function precg in the book software distribution implements Algorithm 21.3 and adds the option of using the
preconditioner
PGS
Its calling format is
where method
’incomplete Cholesky’ or ’SSOR’ and droptol is the drop tolerance. The drop tolerance is only applicable when method is ’incomplete Cholesky’. If method is omitted, incomplete Cholesky is assumed with zerofill. If method is specified and droptol is not, droptol defaults to
There is an extensive literature concerning preconditioning that includes the
method as well as other iterations. We will present a preconditioner for the
method in Section
For a general discussion of preconditioning, see Refs.
and the book by Ref.