% Gausselimination mit Zeilenpivotsuche
function x = gauss_zeilenpivot(A,b)
  
M = [A b];
n = length(b);

% Vorwaertselimination:
for j=1:n-1
  % Bestimme die Pivotzeile
  [pivot,p] = max(abs(M(j:n,j)));
  p = p+j-1; % Index der Pivotzeile
  % Vertausche j-te Zeile mit der Pivotzeile
  x      = M(j,:);
  M(j,:) = M(p,:);
  M(p,:) = x;
  % Jetzt weiter wie bisher...
  for k=j+1:n
    M(k,:) = M(k,:) - (M(k,j)/M(j,j)) * M(j,:);
  end
end

% Rueckwaerts einsetzen:
x = [zeros(n,1); -1];
for j=0:n-1
  x(n-j) = -M(n-j,:)*x / M(n-j,n-j);
end
x(n+1) = [];
