Biconjugate gradient method

From testwiki
Jump to navigation Jump to search

Template:Short description Template:No footnotes

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 Template:Math.

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 unstableTemplate: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 Template:Math 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

Template:Numerical linear algebra