Advertisement
Geometrian

CG

Nov 2nd, 2017
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.38 KB | None | 0 0
  1. Matrix<type_numeric,dim,1> r = b - A * x;
  2. Matrix<type_numeric,dim,1> p = r;
  3. type_numeric err_i0 = r | r;
  4.  
  5. for (uint32_t i=0u;i<max_iters;++i) {
  6.     Matrix<type_numeric,dim,1> Ap = A * p;
  7.  
  8.     type_numeric alpha = err_i0 / (p | Ap);
  9.     x += alpha * p;
  10.     r -= alpha * Ap;
  11.  
  12.     type_numeric err_i1 = r | r;
  13.     if (sqrt(err_i1)<tolerance) break;
  14.  
  15.     p = r + (err_i1/err_i0)*p;
  16.  
  17.     err_i0 = err_i1;
  18. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement