SHARE
TWEET

Scilab, gausseidel function

SilLAwNeD Nov 5th, 2018 (edited) 128 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function [x, k] = gausseidel(A, b, tol, N, x0)
  2.     precision = 1e-10;
  3.     n = size(A,1);
  4.     x = zeros(n, 1);
  5.     xk = zeros(n, 1);
  6.     tolerance = 0;
  7.     x = x0;
  8.     test = 0;
  9.    
  10.     for i = 1:n
  11.         if abs(A(i,i)) < precision then
  12.             error("Coefficient diagonaux trop petit.")
  13.         end
  14.     end
  15.    
  16.     for k = 1:N
  17.         for i = 1:n
  18.             sommeTermesPrec = A(i,1:i-1) * x(1:i-1)
  19.             sommeTermesSuiv = A(i,i+1:n) * x(i+1:n)
  20.            
  21.             // Pour avoir une matrice nulle à la place d'une matrice vide
  22.             // Sur Scilab 6.0+
  23.             if (sommeTermesPrec == []) then
  24.                 sommeTermesPrec = [0]
  25.             end
  26.             if (sommeTermesSuiv == []) then
  27.                 sommeTermesSuiv = [0]
  28.             end
  29.            
  30.             xk = x;
  31.             x(i) = (b(i) - sommeTermesPrec - sommeTermesSuiv) / A(i,i);
  32.         end
  33.        
  34.         tolerance = norm(x - xk) / norm(x)
  35.         if tolerance < tol then
  36.             // On est rentré dans le test
  37.             test = 1;
  38.             break;
  39.         end
  40.     end
  41.    
  42.     if (test == 0) then
  43.         error("Pas de convergence en Nmax itérations.")
  44.     end
  45. endfunction
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top