Méthode de Gauss

Le météorologiste peut se retrouver à résoudre un systeme d'équations généré par les relevés d'observations visant à établir une prévision .

Une seule méthode s'impose : la méthode de Gauss .

 

1 ) Généralités

a ) Méthode du pivot

b ) Méthode de Cramer ( calcul direct )

c ) Méthode itérative

2 ) Exemple de programme

 

1 ) Généralités

Un système de N équations à N inconnues intervient souvent dans de nombreux phénomènes atmosphériques :

a11x1 + a12x2 + ... + anxn = y1

a22x1 + a22x2 + ... + a2nxn = y2

                        ...

an1x1 + an2x2 + ... + annxn = yn

Ce systeme peut se résoudre en considérant une matrice A telle que Ax = y avec x vecteur propre .

Il existe alors trois possibilités de résolution de ce systeme .

 

a ) Méthode du pivot

On considère une matrice T telle que T = Ay .

La méthode du pivot consiste à transformer T en une nouvelle matrice T' telle que T' = ( 1 0 ... 0 x1, 0 1 ... 0 x2, ..., 0 0 ...1 xn ) où x1, x2, ..., xn représentent les solutions du système .

Concrètement, il faut effectuer les opérations suivantes ( i lignes, j colonnes ) :

L(i) >> L(i) - a(ij)L(j)/a(jj) pour i#j

L(j) >> L(j)/a(jj)

 

b ) Méthode de Cramer ( calcul direct )

Elle revient à utiliser la formule x(i) = [ det (A0,A1,A2,...,A(j-1), Y , A(j+1),...A(n)) ] / [ det ( A0,A1,A2,...,A(n) )] .

Un calcul trop compliqué nécessitant à chaque ligne du système ( n+1 )! termes !

 

c ) Méthode itérative

Elle utilise la technique du gradient conjugué, c'est-à-dire que seuls les éléments non nuls de la matrice A sont stockés nécessitant très peu d'opérations par rapport à la méthode de Cramer .

Pour la mettre en évidence, nous pouvons nous servir des fonctions flops et whos sur le logiciel Scilab .

 

2 ) Exemple de programme sous Scilab

Création de la fonction Gauss sous un fichier au nom gauss.sci :

function x=fct_gauss(A,b)

// resolution de A.x=b par la methode de Gauss //

[imax,jmax]=size(A);

for j=2:imax

      Aex=A((j-1):imax,(j-1):imax);

      bex=b((j-1):imax);

      kp=find(abs(Aex(:,1))==max(abs(Aex(:,1))));  

      Aex=echange(Aex,kp,1)

      bex=echange(bex,kp,1)

     for i=2:imax-j+2

      m=Aex(i,1)/Aex(1,1);

      Aex=combin(Aex,i,1,-m);

      bex=combin(bex,i,1,-m);

      A((j-1):imax,(j-1):imax)=Aex;

      b((j-1):imax)=bex;

    end

end

x=remonte(A,b);

 

Appel de la fonction gauss pour résoudre le systeme d'équations :

A=[8 14 2 -6;-5 5 9 10;2 -5 3 7]; // transposée de la matrice du systeme //

A=A';

b=[10;5;23;-4];

getf('gauss.sci') // Appel de la fonction Gauss //

a=gauss(A,b) // determination des solutions ( vecteur x )//

 
Positionnement et Statistiques Gratuites  
Accueil   Livre d'or   Forum