Advertisement
ruhan008

gauss jacobi

Nov 1st, 2024
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.95 KB | None | 0 0
  1. function x = gaussJacobi(A, B)
  2.     [n, m] = size(A);
  3.     if n ~= m
  4.         error('Not a square matrix');
  5.     end
  6.  
  7.     for i = 1 : n
  8.         sum = 0;
  9.         for j = 1 : n
  10.             if i == j
  11.                 continue;
  12.             end
  13.             sum = sum + abs(A(i, j));
  14.         end
  15.  
  16.         if abs(A(i, i)) <= sum
  17.             error('Not diagonally dominant');
  18.         end
  19.  
  20.     end
  21.    
  22.     for i = 1 : n
  23.         val = A(i, i);
  24.         for j = 1 : n
  25.             A(i, j) = A(i, j) / val;
  26.         end
  27.         B(i, 1) = B(i, 1) / val;
  28.     end
  29.  
  30.     x = zeros(1, n);
  31.     while(1)
  32.         y = zeros(1, n);
  33.  
  34.         for i = 1 : n
  35.             y(1, i) = B(i, 1);
  36.             for j = 1 : n
  37.                 if i == j
  38.                     continue;
  39.                 end
  40.  
  41.                 y(1, i) = y(1, i) - A(i, j) * x(1, j);
  42.             end
  43.         end
  44.      
  45.         if x == y
  46.             break;
  47.         end
  48.         x = y;
  49.     end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement