Bonjour à tous,
Dans le cadre d’une introduction à Matlab, on nous a proposé d’implémenter l’élimination de Gauss pour des systèmes carrés de type Ax=b.
J’ai donc écrit un petit algorithme à priori pas trop faux mais qui finalement fait n’importe quoi sur les 2/3 des systèmes qu’on lui propose…Si quelqu’un pouvait m’aider à voir la faute dans le code ce serait vraiment sympa car je suis à cours d’inspiration.
Merci à ceux qui liront !Code:%On nous propose de tester avec : %A=[1 3 4 5 7; 2 3 7 10 11; -3 4 66 -5 7; -4 1 2 6 3; 56 78 1 1 1] %b=[8 11 12 12 12] ça ne fonctionne pas. %Mais avec : A=[ 1 2 1 1; 0 1 2 1; 1 0 1 2; 2 1 0 1] et b=[0 0 1 0] ça %fonctionne. function [x] = elimgauss(A,b) n=length(A(1,:)); for k=1:1:n-1 % Le pas. % Opérations sur la sous-matrice de dimension n-k et modification de b. for j=k+1:n for i=k+1:n if A(k,k)~=0 b(i)=b(i)-(A(i,k)/A(k,k))*b(k); A(i,j)=A(i,j)-(A(i,k)/A(k,k))*A(k,j); else disp('Erreur pivot nul.') return; end end end %Affectation des zéros. A(k+1:n,1:k)=0; end %Régression. x(n)=b(n)/A(n,n); for i=n:-1:1 S=0; for j=i+1:n; S=S+A(i,j)*x(j); end; x(i)=(b(i)-S)/A(i,i); end end
-----