mihainan

Suprarelaxare

Mar 27th, 2014
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.57 KB | None | 0 0
  1. function x = suprarelaxare2(A, x0, b, w, maxiter, epsilon)
  2.     [n n] = size(A);
  3.     xc = zeros(n,1);
  4.     xp = x0;
  5.     ok = 1;
  6.     for k = 1 : maxiter
  7.         for i = 1 : n
  8.             ok = 1;
  9.             s1 = 0;
  10.             s2 = 0;
  11.             for j = 1: i-1
  12.                 s1 = s1 + A(i,j)*xc(j);
  13.             endfor
  14.             for j = i+1 : n
  15.                 s2 = s2 + A(i,j)*xp(j);
  16.             endfor
  17.             xc(i) = w *(b(i) - s1 - s2)/A(i,i) + xp(i)*(1-w);;
  18.             if norm(xc - xp) < epsilon
  19.                 ok = 0;    
  20.                 break;
  21.             endif
  22.             xp = xc;
  23.         endfor
  24.     endfor
  25.     x = xc;
  26.     if ok == 0
  27.         disp('Am ajuns la convergenta inainte de maxiter!');
  28.         disp(poz);
  29.     endif
  30. endfunction
Advertisement
Add Comment
Please, Sign In to add comment