You are on page 1of 5

Biconjugate gradient stabilized method

From Wikipedia, the free encyclopedia

In numerical linear algebra, the biconjugate gradient stabilized method, often abbreviated as
BiCGSTAB, is an iterative method developed by H. A. van der Vorst for the numerical solution of
nonsymmetric linear systems. It is a variant of the biconjugate gradient method (BiCG) and has
faster and smoother convergence than the original BiCG as well as other variants such as the
conjugate gradient squared method (CGS). It is a Krylov subspace method.

1 Algorithmic steps
1.1 Unpreconditioned BiCGSTAB
1.2 Preconditioned BiCGSTAB
2 Derivation
2.1 BiCG in polynomial form
2.2 Derivation of BiCGSTAB from BiCG
2.3 Determination of BiCGSTAB constants
3 Generalization
4 See also
5 References

Algorithmic steps
Unpreconditioned BiCGSTAB
To solve a linear system Ax = b , BiCGSTAB starts with an initial guess x 0 and proceeds as

1. r0 = b Ax0
2. Choose an arbitrary vector r 0 such that (r
0, r0) 0, e.g., r
0 = r0
3. 0 = = 0 = 1
4. v0 = p0 = 0
5. For i = 1, 2, 3,
1. i = (r0, ri1)
2. = (i/i1)(/i1)
3. p i = ri1 + (p i1 i1v i1)
4. v i = Ap i
5. = i/(r 0, v i)
6. s = ri1 v i
7. t = As
8. i = (t, s)/(t, t)
9. x i = x i1 + p i + is
10. If x i is accurate enough then quit
11. ri = s it

Preconditioned BiCGSTAB

Preconditioners are usually used to accelerate convergence of iterative methods. To solve a

linear system Ax = b with a preconditioner K = K1K2 A, preconditioned BiCGSTAB starts with an
initial guess x 0 and proceeds as follows:
1. r0 = b Ax0
2. Choose an arbitrary vector r 0 such that (r
0, r0) 0, e.g., r
0 = r0
3. 0 = = 0 = 1
4. v0 = p0 = 0
5. For i = 1, 2, 3,
1. i = (r0, ri1)
2. = (i/i1)(/i1)
3. p i = ri1 + (p i1 i1v i1)
4. y = K1p i
5. v i = Ay
6. = i/(r0, v i)
7. s = ri1 v i
8. z = K1s
9. t = Az
1 1 1 1
10. i = (K 1 t, K 1 s)/(K 1 t, K 1 t)
11. x i = x i1 + y + iz
12. If x i is accurate enough then quit
13. ri = s it

This formulation is equivalent to applying unpreconditioned BiCGSTAB to the explicitly

preconditioned system

= b
1 1 1
with = K 1 AK 2 , x = K2x and b = K 1 b. In other words, both left- and right-preconditioning
are possible with this formulation.

BiCG in polynomial form

In BiCG, the search directions p i and p

i and the residuals ri and r
i are updated using the
following recurrence relations:

pi = ri1 + ipi1,
pi = ri1 + ip
ri = ri1 iApi,
r T .
i = ri1 iA p i

The constants i and i are chosen to be

i = i/(p
i, Ap i),
i = i/i1
where i = (r
i1, ri1) so that the residuals and the search directions satisfy biorthogonality and
biconjugacy, respectively, i.e., for i j,

i, rj ) = 0,
(pi, Ap j ) = 0.

It is straightforward to show that

ri = Pi(A)r0,
r T ,
i = Pi(A )r
pi+1 = Ti(A)r0,
p T
i+1 = Ti(A )r

where Pi(A) and Ti(A) are ith-degree polynomials in A. These polynomials satisfy the following
recurrence relations:

Pi(A) = Pi1(A) iATi1(A),

Ti(A) = Pi(A) i+1Ti1(A).

Derivation of BiCGSTAB from BiCG

It is unnecessary to explicitly keep track of the residuals and search directions of BiCG. In
other words, the BiCG iterations can be performed implicitly. In BiCGSTAB, one wishes to have
recurrence relations for

= Qi(A)Pi(A)r0
where Qi(A) = (I 1A)(I 2A)(I iA) with suitable constants j instead of ri = Pi(A) in
the hope that Qi(A) will enable faster and smoother convergence in rithan ri.

It follows from the recurrence relations for Pi(A) and Ti(A) and the definition of Qi(A) that

Qi(A)Pi(A)r0 = (I iA)(Qi1(A)Pi1(A)r0 iAQi1(A)Ti1(A)r0),

which entails the necessity of a recurrence relation for Qi(A)Ti(A)r0. This can also be derived
from the BiCG relations:

Qi(A)Ti(A)r0 = Qi(A)Pi(A)r0 + i+1(I iA)Qi1(A)Pi1(A)r0.

Similarly to defining ri
, BiCGSTAB defines

i+1 = Qi(A)Ti(A)r0.

Written in vector form, the recurrence relations for p

i and riare

pi = ri1
+ i(I i1A)p
ri= (I iA)(ri1

To derive a recurrence relation for x i, define

si = ri1

The recurrence relation for rican then be written as

= ri1
i iAsi,

which corresponds to

xi = xi1 + ip
i + isi.

Determination of BiCGSTAB constants

Now it remains to determine the BiCG constants i and i and choose a suitable i.

In BiCG, i = i/i1 with

i = (r T , P (A)r ).
i1, ri1) = (Pi1(A )r
0 i1 0

Since BiCGSTAB does not explicitly keep track of r

i or ri, i is not immediately computable from
this formula. However, it can be related to the scalar

T , P (A)r ) = (r
i = (Qi1(A )r
0 i1 0 0, Qi1(A)Pi1(A)r0) = (r
0, ri1).

Due to biorthogonality, ri1 = Pi1(A)r0 is orthogonal to Ui2(AT)r T

0 where Ui2(A ) is any
polynomial of degree i 2 in AT. Hence, only the highest-order terms of Pi1(AT) and Qi1(AT)
matter in the dot products (Pi1(AT)r T , P (A)r ). The leading
0, Pi1(A)r0) and (Qi1(A )r
0 i1 0
coefficients of Pi1(AT) and Qi1(AT) are (1)i112i1 and (1)i112i1,
respectively. It follows that

i = (1/1)(2/2)(i1/i1)

and thus

i = i/i1 = (

A simple formula for i can be similarly derived. In BiCG,

i = i/(p T , P (A)r )/(T (AT)r

i, Ap i) = (Pi1(A )r
0 i1 0 i1 0, ATi1(A)r0).

Similarly to the case above, only the highest-order terms of Pi1(AT) and Ti1(AT) matter in the
dot products thanks to biorthogonality and biconjugacy. It happens that Pi1(AT) and Ti1(AT)
have the same leading coefficient. Thus, they can be replaced simultaneously with Qi1(AT) in the
formula, which leads to

i = (Qi1(AT)r T , AT (A)r ) =
0, Pi1(A)r0)/(Qi1(A )r
0 i1 0 i/(r i/(r
0, AQi1(A)Ti1(A)r0) = 0, Ap

Finally, BiCGSTAB selects i to minimize ri

= (I iA)si in 2-norm as a function of i. This is
achieved when

((I iA)si, Asi) = 0,

giving the optimal value

i = (Asi, si)/(Asi, Asi).

BiCGSTAB can viewed as a combination of BiCG and GMRES where each BiCG step is followed by a
GMRES(1) (i.e., GMRES restarted at each step) step to repair the irregular convergence behavior
of CGS, as an improvement of which BiCGSTAB was developed. However, due to the use of degree-one
minimum residual polynomials, such repair may not be effective if the matrix A has large complex
eigenpairs. In such cases, BiCGSTAB is likely to stagnate as confirmed by numerical experiments.

One may expect that higher-degree minimum residual polynomials may better handle this situation.
This gives rise to algorithms including BiCGSTAB2[1] and the more general BiCGSTAB(l)[2] . In
BiCGSTAB(l), a GMRES(l) step follows every l BiCG steps. BiCGSTAB2 is equivalent to BiCGSTAB(l)
with l = 2.

See also
Biconjugate gradient method
Conjugate gradient squared method
Conjugate gradient method

Van der Vorst, H. A. (1992). "Bi-CGSTAB: A Fast and Smoothly Converging Variant of Bi-CG for
the Solution of Nonsymmetric Linear Systems". SIAM J. Sci. and Stat. Comput. 13 (2): 631
644. doi:10.1137/0913035 (
Saad, Y. (2003). "7.4.2 BICGSTAB". Iterative Methods for Sparse Linear Systems (2nd ed.).
SIAM. pp. 231234. doi:10.2277/0898715342 (
ISBN 978-0-89871-534-7.
^ Gutknecht, M. H. (1993). "Variants of BICGSTAB for Matrices with Complex Spectrum". SIAM
J. Sci. Comput. 14 (5): 10201033. doi:10.1137/0914062
^ Sleijpen, G. L. G.; Fokkema, D. R. (November 1993). "BiCGstab(l) for linear equations
involving unsymmetric matrices with complex spectrum"
( (PDF). Electronic
Transactions on Numerical Analysis (Kent, OH: Kent State University) 1: 1132. ISSN 1068-
9613 (//

Retrieved from "

Categories: Numerical linear algebra Gradient methods

This page was last modified on 11 November 2013 at 16:12.

Text is available under the Creative Commons Attribution-ShareAlike License; additional
terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.
Wikipedia is a registered trademark of the Wikimedia Foundation, Inc., a non-profit