function u=fct_gauss(A,b)
//
// resolution de A.u=b par la methode de Gauss 
//
[n,n2]=size(A);
for j=1:n-1
                     //     recherche du meilleur pivot
      [x,k]=max(abs(A(j:n,j)));k=k+j-1;
                      //   permutation de lignes      
      a3=A(j,j:n);
      A(j,j:n)=A(k,j:n);
      A(k,j:n)=a3;
      b3=b(j);
      b(j)=b(k);
      b(k)=b3;
                        //   operations sur les lignes     
      for i=j+1:n
	     m=-A(i,j)/A(j,j);
            A(i,:)=A(i,:)+A(j,:)*m;
             b(i)=b(i)+m*b(j);
    end
end
                      //           remontee
u=zeros(n,1);
u(n)=b(n)/A(n,n);
for j=n-1:-1:1,
  u(j)=(b(j)-A(j,j+1:n)*u(j+1:n))/A(j,j);
end
endfunction
//
//
A=rand(100,100);
b=rand(100,1);
//
disp('resolution de Au=b avec une matrice 100*100 aleatoire:');
timer();
u1=linsolve(A,-b);
t1=timer();
u2=fct_gauss(A,b);
t2=timer();
ecart=max(abs(u2-u1))/max(abs(u1));
disp('temps de resolution avec linsolve:');disp(t1);
disp('temps de resolution avec fct_gauss:');disp(t2);
disp('valeur maximale de Au-b, solution linsolve:');disp(max(abs(A*u1-b)));
disp('valeur maximale de Au-b, solution fct_gauss:');disp(max(abs(A*u2-b)));

