Biconjugate gradient method

From HandWiki

In mathematics, more specifically in numerical linear algebra, the biconjugate gradient method is an algorithm to solve systems of linear equations

Ax=b.

Unlike the conjugate gradient method, this algorithm does not require the matrix A to be self-adjoint, but instead one needs to perform multiplications by the conjugate transpose A*.

The Algorithm

  1. Choose initial guess x0, two other vectors x0* and b* and a preconditioner M
  2. r0←b−Ax0
  3. r0*←b*−x0*A*
  4. p0←M−1r0
  5. p0*←r0*M−1
  6. for k=0,1,… do
    1. αk←rk*M−1rkpk*Apk
    2. xk+1←xk+αk⋅pk
    3. xk+1*←xk*+αk‾⋅pk*
    4. rk+1←rk−αk⋅Apk
    5. rk+1*←rk*−αk‾⋅pk*A*
    6. βk←rk+1*M−1rk+1rk*M−1rk
    7. pk+1←M−1rk+1+βk⋅pk
    8. pk+1*←rk+1*M−1+βk‾⋅pk*

In the above formulation, the computed rk and rk* satisfy

rk=b−Axk,
rk*=b*−xk*A*

and thus are the respective residuals corresponding to xk and xk*, as approximate solutions to the systems

Ax=b,
x*A*=b*;

x* is the adjoint, and α‾ is the complex conjugate.

Unpreconditioned version of the algorithm

  1. Choose initial guess x0,
  2. r0←b−Ax0
  3. r^0←b^−x^0A
  4. p0←r0
  5. p^0←r^0
  6. for k=0,1,… do
    1. αk←r^krkp^kApk
    2. xk+1←xk+αk⋅pk
    3. x^k+1←x^k+αk⋅p^k
    4. rk+1←rk−αk⋅Apk
    5. r^k+1←r^k−αk⋅p^kA
    6. βk←r^k+1rk+1r^krk
    7. pk+1←rk+1+βk⋅pk
    8. p^k+1←r^k+1+βk⋅p^k

Discussion

The biconjugate gradient method is numerically unstable[citation needed] (compare to the biconjugate gradient stabilized method), but very important from a theoretical point of view. Define the iteration steps by

xk:=xj+PkA−1(b−Axj),
xk*:=xj*+(b*−xj*A)PkA−1,

where j<k using the related projection

Pk:=𝐮k(𝐯k*A𝐮k)−1𝐯k*A,

with

𝐮k=[u0,u1,…,uk−1],
𝐯k=[v0,v1,…,vk−1].

These related projections may be iterated themselves as

Pk+1=Pk+(1−Pk)uk⊗vk*A(1−Pk)vk*A(1−Pk)uk.

A relation to Quasi-Newton methods is given by Pk=Ak−1A and xk+1=xk−Ak+1−1(Axk−b), where

Ak+1−1=Ak−1+(1−Ak−1A)uk⊗vk*(1−AAk−1)vk*A(1−Ak−1A)uk.

The new directions

pk=(1−Pk)uk,
pk*=vk*A(1−Pk)A−1

are then orthogonal to the residuals:

vi*rk=pi*rk=0,
rk*uj=rk*pj=0,

which themselves satisfy

rk=A(1−Pk)A−1rj,
rk*=rj*(1−Pk)

where i,j<k.

The biconjugate gradient method now makes a special choice and uses the setting

uk=M−1rk,
vk*=rk*M−1.

With this particular choice, explicit evaluations of Pk and A−1 are avoided, and the algorithm takes the form stated above.

Properties

  • If A=A* is self-adjoint, x0*=x0 and b*=b, then rk=rk*, pk=pk*, and the conjugate gradient method produces the same sequence xk=xk* at half the computational cost.
  • The sequences produced by the algorithm are biorthogonal, i.e., pi*Apj=ri*M−1rj=0 for i≠j.
  • if Pj′ is a polynomial with deg⁡(Pj′)+j<k, then rk*Pj′(M−1A)uj=0. The algorithm thus produces projections onto the Krylov subspace.
  • if Pi′ is a polynomial with i+deg⁡(Pi′)<k, then vi*Pi′(AM−1)rk=0.

See also

References