Guest User

Untitled

a guest
Feb 11th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 0.71 KB | None | 0 0
  1. function X = gauss(A, f)
  2.     n = length(f);
  3.     X = zeros(n, 1);
  4.     buffer = zeros(n, 1);
  5.     for i=1:n
  6.         main_el = A(i, i);
  7.         row = i;
  8.         col = i;
  9.         %find main element
  10.         for k=i:n
  11.             for l=1:n
  12.                 if abs(A(row, col)) < abs(A(k, l))
  13.                     row = k;
  14.                     col = l;
  15.                 end;               
  16.             end;
  17.         end;
  18.         buffer(i) = col;
  19.         for j=i:n
  20.             if (j == row)
  21.                 continue;
  22.             end;   
  23.             d = A(j, col)/A(row, col);
  24.             A(j, 1:n) =  A(j, 1:n) - d*A(row, 1:n);
  25.             f(j) = f(j) - d*f(row);
  26.         end;
  27.         %swap lines
  28.         B = A(row, 1:n);
  29.         A(row, 1:n) = A(i, 1:n);
  30.         A(i, 1:n) = B;
  31.     end;
  32.     for i=n:-1:1
  33.         s = f(i);
  34.         for j=i+1:n
  35.             s = s - A(i, buffer(j))*X(buffer(j));
  36.         end;
  37.         X(buffer(i)) = s/A(i, buffer(i));
  38.     end;
  39.     A*X - f
  40. endfunction
Add Comment
Please, Sign In to add comment