(Difference between revisions)
 Revision as of 07:07, 14 September 2005 (view source)Zxaar (Talk | contribs)← Older edit Latest revision as of 15:04, 27 July 2006 (view source)Derouler (Talk | contribs) m (→Algorithm: Made the use of = and := consistent) (8 intermediate revisions not shown) Line 8: Line 8: A = coefficient matrix
A = coefficient matrix
- M = the precondioning matrix constructued by matrix A
+ M = the preconditioning matrix constructed by matrix A
- + === Algorithm === === Algorithm === + ---- + :  Allocate temperary vectors r,z,p,q, rtilde,ztilde,qtilde
+ :  Allocate temerary reals rho_1, rho_2 , alpha, beta
+ :
+ :  r := b - A$\cdot$x
+ :  rtilde := r
+ :
+ :  for i := 1 step 1 until max_itr do + ::      solve (M$\cdot$z = r )
+ ::      solve (MT$\cdot$ztilde = rtilde )
+ ::      rho_1 := z$\cdot$rtilde
+ ::      if i = 1 then + :::        p := z
+ :::        ptilde := ztilde
+ ::        else
+ :::        beta := (rho_1/rho_2)
+ :::        p := z + beta * p
+ :::        ptilde := ztilde + beta * ptilde
+ ::      end if
+ ::      q := A$\cdot$p
+ ::      qtilde := AT$\cdot$ptilde
+ ::      alpha := rho_1 / (ptilde$\cdot$q)
+ ::      x := x + alpha * p
+ ::      r := r - alpha * q
+ ::      rtilde := rtilde - alpha * qtilde
+ ::      rho_2 := rho_1
+ :  end (i-loop) + :
+ :  deallocate all temp memory
+ :  return TRUE
+ ---- + + === Reference === + #'''Richard Barret, Michael Berry, Tony F. Chan, James Demmel, June M. Donato, Jack Dongarra, Victor Eijihout, Roldan Pozo, Charles Romine, Henk Van der Vorst''', "Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods", Philadelphia, PA: SIAM, 1994. [http://www.netlib.org/linalg/html_templates/node32.html | http://www.netlib.org/linalg/html_templates/Templates.html] - Allocate temperary vectors p, phat, s, shat, t, v, rtilde
+ ---- - Allocate temerary reals rho_1, rho_2 , alpha, beta, omega
+ Return to [[Numerical methods | Numerical Methods]] - r := b - A$\bullet$x
+ - rtilde = r
+ - for i := 1 step 1 until max_itr do + - rho_1 = rtilde$\bullet$r
+ - if i = 1 then p := r else
+ - beta = (rho_1/rho_2) * (alpha/omega)
+ - p = r + beta * (p - omega * v)
+ - end if
+ - solve (M$\bullet$phat  = p )
+ - v = A$\bullet$phat
+ - alpha = rho_1 / (rtilde$\bullet$v)
+ - s = r - alpha * v
+ - solve (M\bulletshat = s )
+ - t = A * shat; + - omega = (t$\bullet$s) / (t$\bullet$t)
+ - x = x + alpha * phat + omega * shat
+ - r = s - omega * t
+ - rho_2 = rho_1
+ - end (i-loop) + - + - deallocate all temp memory
+ - return TRUE
+

## Contents

Biconjugate gradient method could be summarized as follows

### System of equation

For the given system of equation
Ax = b ;
b = source vector
x = solution variable for which we seek the solution
A = coefficient matrix

M = the preconditioning matrix constructed by matrix A

### Algorithm

Allocate temperary vectors r,z,p,q, rtilde,ztilde,qtilde
Allocate temerary reals rho_1, rho_2 , alpha, beta

r := b - A$\cdot$x
rtilde := r

for i := 1 step 1 until max_itr do
solve (M$\cdot$z = r )
solve (MT$\cdot$ztilde = rtilde )
rho_1 := z$\cdot$rtilde
if i = 1 then
p := z
ptilde := ztilde
else
beta := (rho_1/rho_2)
p := z + beta * p
ptilde := ztilde + beta * ptilde
end if
q := A$\cdot$p
qtilde := AT$\cdot$ptilde
alpha := rho_1 / (ptilde$\cdot$q)
x := x + alpha * p
r := r - alpha * q
rtilde := rtilde - alpha * qtilde
rho_2 := rho_1
end (i-loop)

deallocate all temp memory
return TRUE

### Reference

1. Richard Barret, Michael Berry, Tony F. Chan, James Demmel, June M. Donato, Jack Dongarra, Victor Eijihout, Roldan Pozo, Charles Romine, Henk Van der Vorst, "Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods", Philadelphia, PA: SIAM, 1994. | http://www.netlib.org/linalg/html_templates/Templates.html