Advertisement
DMG

SOLE :: Gauss partial pivoting

DMG
Oct 24th, 2014
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.08 KB | None | 0 0
  1. function [x] = gauss_partial_pivoting(A, b)
  2.     [m, n] = size(A);
  3.    
  4.     if (m ~= n)
  5.         x = -0;
  6.         return
  7.     end
  8.  
  9.     for k = 1:m-1
  10.         % Nalazi indeks reda pivot elementa
  11.         max_index = k;
  12.         for counter = k+1:n
  13.             if abs(A(counter, k)) > abs(A(max_index, k))
  14.                 max_index = counter;
  15.             end
  16.         end
  17.        
  18.         % Mijenja redove pivot elementa i trenutnog elementa
  19.         A([k max_index], :) = A([max_index k], :);
  20.         % Mijenjamo redove i vektora kolone b
  21.         b([k max_index], 1) = b([max_index k], 1);
  22.        
  23.         for i = k+1:m
  24.             coefficient = (-1) * A(i,k)/A(k,k);
  25.             for j = k:n
  26.                 A(i, j) = A(i, j) + A(k, j)*coefficient;
  27.             end
  28.             b(i) = b(i) + b(k)*coefficient;
  29.         end
  30.     end
  31.  
  32.     % Izracunamo posljednje x i vracamo u sve prethodne
  33.     x(n) = b(n)/A(n,n);
  34.     for i = n-1:-1:1
  35.         sum = 0;
  36.         for j = n:-1:i+1
  37.             sum = sum + A(i, j)*x(j);
  38.         end
  39.         x(i) = (b(i) - sum)/A(i,i);
  40.     end
  41.    
  42. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement