Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [x, k] = gausseidel(A, b, tol, N, x0)
- precision = 1e-10;
- n = size(A,1);
- x = zeros(n, 1);
- xk = zeros(n, 1);
- tolerance = 0;
- x = x0;
- test = 0;
- for i = 1:n
- if abs(A(i,i)) < precision then
- error("Coefficient diagonaux trop petit.")
- end
- end
- for k = 1:N
- for i = 1:n
- sommeTermesPrec = A(i,1:i-1) * x(1:i-1)
- sommeTermesSuiv = A(i,i+1:n) * x(i+1:n)
- // Pour avoir une matrice nulle à la place d'une matrice vide
- // Sur Scilab 6.0+
- if (sommeTermesPrec == []) then
- sommeTermesPrec = [0]
- end
- if (sommeTermesSuiv == []) then
- sommeTermesSuiv = [0]
- end
- xk = x;
- x(i) = (b(i) - sommeTermesPrec - sommeTermesSuiv) / A(i,i);
- end
- tolerance = norm(x - xk) / norm(x)
- if tolerance < tol then
- // On est rentré dans le test
- test = 1;
- break;
- end
- end
- if (test == 0) then
- error("Pas de convergence en Nmax itérations.")
- end
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement