
174 Introduction to Computational Linear Algebra
The procedure is depicted in Algorithm 6.7.
Algorithm 6.7 Preconditioned Bi-Conjugate Gradient Algorithm
% x0,b given; eps1 given tolerance
% kmax maximum number of iterations,
r=b-A*x0;beta=0;r1=r;p=0;p1=0;
x=x0;k=0;e=1;nb=norm(b);
while e>eps1 & k<=kmax
k=k+1;z=M\r;p=z+beta*p;
z1=M^T \ r1;p1=z1+beta*p1;
q=A*p;q1=A^T p1;
nr=r1’*z;nap=p1’*q;alpha=nr/nap;
x=x+alpha*p;r=r-alpha*q;
r1=r1-alpha*q1;nr1=r1’*z;
beta=nr1/nr;nr=nr1;e=norm(r)/nb;
end
6.7 Preconditioning Issues
Preconditioning is essential in practice in order to get a competitive Krylov
method with fast convergence [9]. A first class of preconditioning