function x = gauss0(A,b)

 
% x = gauss0(A,b)
% 
% Risolve il sistema lineare
%
%  A*x = b
%
% applicando il metodo di eliminazione di Gauss

                  
[n,m]=size(A);

if (n~=m),
   error('La matrice dei coefficienti deve essere quadrata'),
end

% Le seguenti istruzioni trasformano il sistema di
% equazioni in uno ad esso equivalente ma con matrice
% dei coefficienti triangolare superiore

for j=1:n-1

  if (A(j,j)==0), 
     error('Metodo di eliminazione di Gauss non applicabile'), 
  end

  for i=j+1:n 

     lij = A(i,j)/A(j,j);

     for k = j+1:n
        A(i,k)=A(i,k)-lij*A(j,k);
     end

     b(i) = b(i) - lij*b(j);
  end

end

if (A(n,n)==0), 
     error('Metodo di eliminazione di Gauss non applicabile'), 
end

% Risoluzione del sistema triangolare superiore ottenuto
% mediante sostituzioni successive all'indietro

x(n) = b(n)/A(n,n); 

x= x(:); % Rende x un vettore colonna 

for i=n-1:-1:1

   x(i) = b(i);

   for j=i+1:n
     x(i) = x(i) - A(i,j)*x(j);
   end

   x(i) = x(i)/A(i,i);

end    

return
