# Biconjugate gradient stabilized method

(Difference between revisions)
 Revision as of 06:26, 3 October 2005 (view source)Zxaar (Talk | contribs)← Older edit Revision as of 22:13, 13 December 2005 (view source)Tsaad (Talk | contribs) Newer edit → Line 16: Line 16: :  Allocate temerary reals rho_1, rho_2 , alpha, beta, omega
:  Allocate temerary reals rho_1, rho_2 , alpha, beta, omega
:
:
- :  r := b - A$\bullet$x
+ :  r := b - A$\cdot$x
:  rtilde = r
:  rtilde = r
:
:
:  for i := 1 step 1 until max_itr do :  for i := 1 step 1 until max_itr do - ::      rho_1 = rtilde$\bullet$r
+ ::      rho_1 = rtilde$\cdot$r
::      if i = 1 then p := r else
::      if i = 1 then p := r else
:::        beta = (rho_1/rho_2) * (alpha/omega)
:::        beta = (rho_1/rho_2) * (alpha/omega)
:::        p = r + beta * (p - omega * v)
:::        p = r + beta * (p - omega * v)
::      end if
::      end if
- ::      solve (M$\bullet$phat  = p )
+ ::      solve (M$\cdot$phat  = p )
::      v = A$\bullet$phat
::      v = A$\bullet$phat
::      alpha = rho_1 / (rtilde$\bullet$v)
::      alpha = rho_1 / (rtilde$\bullet$v)
::      s = r - alpha * v
::      s = r - alpha * v
- ::      solve (M$\bullet$shat = s )
+ ::      solve (M$\cdot$shat = s )
::      t = A * shat; ::      t = A * shat; - ::      omega = (t$\bullet$s) / (t$\bullet$t)
+ ::      omega = (t$\cdot$s) / (t$\cdot$t)
::      x = x + alpha * phat + omega * shat
::      x = x + alpha * phat + omega * shat
::      r = s - omega * t
::      r = s - omega * t

## Biconjugate gradient stabilized method

Biconjugate gradient stabilized 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 precondioning matrix constructued by matrix A

### Algorithm

Allocate temperary vectors p, phat, s, shat, t, v, rtilde
Allocate temerary reals rho_1, rho_2 , alpha, beta, omega

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

for i := 1 step 1 until max_itr do
rho_1 = rtilde$\cdot$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$\cdot$phat = p )
v = A$\bullet$phat
alpha = rho_1 / (rtilde$\bullet$v)
s = r - alpha * v
solve (M$\cdot$shat = s )
t = A * shat;
omega = (t$\cdot$s) / (t$\cdot$t)
x = x + alpha * phat + omega * shat
r = s - omega * t
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"