%
%  file gaussel.m
%
%  x=gaussel(A,b) liefert die Loesung des linearen
%  Systems A*x=b durch Gauss Elimination ohne Pivotisierung.
%  b und x koennen mehrere Spalten haben
%
%
function [x] = gaussel(A,b)
[m,n]=size(A);
if m~=n || n~=size(b,1), error('kein quadratisches problem'); end;

B=[A b];
N=size(B,2);

% Triangularisierung (Vorwaertselimination):

for k=1:n-1,    % loop ueber Spalten wo Nullen entstehen
  for i=k+1:n   % loop ueber zu subtrahierende Zeilen
    aux=B(i,k)/B(k,k); % Multiplikator
    B(i,k)=0; % neue Null per Konstruktion
    B(i,k+1:N)=B(i,k+1:N)-B(k,k+1:N)*aux; % Subtraktion
  end
end

% Aufloesung (Rueckwaertssubstitution):
x=zeros(size(b)); % x vordefinieren
for k=n:-1:1
  x(k,:)=B(k,n+1:N);
  for j=k+1:n
    x(k,:)=x(k,:)-B(k,j)*x(j,:);
  end
  x(k,:)=x(k,:)/B(k,k);
end
