Advertisement
DMG

SOLE :: Gauss complete pivoting

DMG
Oct 27th, 2014
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.29 KB | None | 0 0
  1. function [x] = gauss_complete_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_i = k;
  12.         max_index_j = k;
  13.         for counter_1 = k+1:n
  14.             for counter_2 = k+1:m
  15.                 if abs(A(counter_1, counter_2)) > abs(A(max_index_i, max_index_j))
  16.                     max_index_i = counter_1;
  17.                     max_index_j = counter_2;
  18.                 end
  19.             end
  20.         end
  21.        
  22.         % Mijenja redove i kolone pivot elementa i trenutnog elementa
  23.         A([k max_index_i], [k max_index_j]) = A([max_index_i k], [max_index_j k]);
  24.         % Mijenjamo redove i vektora kolone b
  25.         b([k max_index_i], 1) = b([max_index_i k], 1);
  26.        
  27.         for i = k+1:m
  28.             coefficient = (-1) * A(i,k)/A(k,k);
  29.             for j = k:n
  30.                 A(i, j) = A(i, j) + A(k, j)*coefficient;
  31.             end
  32.             b(i) = b(i) + b(k)*coefficient;
  33.         end
  34.     end
  35.  
  36.     % Izracunamo posljednje x i vracamo u sve prethodne
  37.     x(n) = b(n)/A(n,n);
  38.     for i = n-1:-1:1
  39.         sum = 0;
  40.         for j = n:-1:i+1
  41.             sum = sum + A(i, j)*x(j);
  42.         end
  43.         x(i) = (b(i) - sum)/A(i,i);
  44.     end
  45.    
  46. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement