
1 * GAUSSÂ Â
10 * résolution d'une équation matricielle AX=B
11 * Méthode de GAUSS
20 CHARGER a0,1,'#matri.8'
25 SI IND(a0)#2 ALORS DEBUT AFFICHER 'matrice non rectangulaire';TERMINER FIN
30 nâ†IND(a0,1);SI n#IND(a0,2) ALORS DEBUT AFFICHER 'matrice non carrÉe';TERMINER FIN
100 * on inverse la matrice a0 dans la matrice a1
110 TABLEAU a[n,2*n],a1[n,n],x[n],prod[n,n]
115 FAIRE 120 POUR iâ†1 JUSQUA n
116 FAIRE 117 POUR jâ†1 JUSQUA n;a[i,j]â†a0[i,j]
117 *fin de boucle 116
118 FAIRE 119 POUR jâ†n+1 JUSQUA 2*n;a[i,j]â†SI j=i+n ALORS 1 SINON 0
119 * fin de boucle 118
120 * fin de boucle 115
200 * on commence le processus de triangulation
201 FAIRE 300 POUR iâ†1 JUSQUA n-1
205 * on teste si pivot nul : si OUI il faut Échanger la ligne I avec une autre ligne K
210 SI a[i,i]#0 ALORS ALLER EN 220
212 FAIRE 213 POUR kâ†i+1 JUSQUA n;SI a[k,i]#0 ALORS ALLER EN 215
213 *fin de boucle 213
214 AFFICHER 'tous coefficients nuls ; matrice non inversible';TERMINER
215 * on échange ligne I avec ligne K
216 FAIRE 217 POUR jâ†1 JUSQUA 2*n;sâ†a[i,j];a[i,j]â†a[k,j];a[k,j]â†s
217 * fin de boucle 216
220 pâ†a[i,i];FAIRE 221 POUR jâ†i JUSQUA 2*n;a[i,j]â†a[i,j]/p
221 * fin de boucle 220
225 FAIRE 240 POUR kâ†i+1 JUSQUA n
230 FAIRE 235 POUR jâ†1 JUSQUA 2*n;a[k,j]â†a[k,j]-a[k,i]*a[i,j]
235 * fin de boucle 230
240 * fin de boucle 225
250
300 * fin de boucle 201
310 SI a[n,n]=0 ALORS DEBUT AFFICHER 'problème : matrice non inversible';TERMINER FIN
320 pâ†a[n,n];FAIRE 321 POUR jâ†n JUSQUA 2*n;a[n,j]â†a[n,j]/p
398
399
400 * la partie gauche de A est maintenant triangulaire supérieure
401 * avec des 1 sur la diagonale
402
403 * on résoud AX=B pour chacun des vecteurs colonnes
405 FAIRE 430 POUR jâ†n+1 JUSQUA 2*n
406 * pour un vecteur colonne donné
410 x[n]â†a[n,j]
415 FAIRE 420 POUR iâ†n-1 PAS -1 JUSQUA 1
416 sâ†a[i,j]
417 FAIRE 418 POUR kâ†i+1 JUSQUA n-1;sâ†s-a[k,j]*x[k]
418 * fin boucle 418
419 x[i]â†s
420 *fin boucle 415
425 * on recopie X dans la colonne J de la matrice A1
426 FAIRE 427 POUR kâ†1 JUSQUA n;a1[k,j-n]â†x[k]
427 * fin de boucle 426
500 * on teste le produit A0*A1
510 &prod(a0,a1,prod)
520 AFFICHER prod;TERMINER
700
800 * création d'un fichier test
805 nâ†3;TABLEAU p[n,n],q[n,n],r[n,n]
808 FAIRE 808 POUR iâ†1 JUSQUA n;FAIRE 808 POUR jâ†1 JUSQUA n;p[i,j]â†0;q[i,j]â†0
810 tâ†ATG(1);câ†COS(t);sâ†SIN(t)
811 p[1,1]â†1;p[2,2]â†c;p[3,3]â†c;p[3,2]â†s;p[2,3]â†s
812 tâ†ATG(1)/2;câ†COS(t);sâ†SIN(t)
813 q[2,1]â†1;q[1,2]â†c;q[3,3]â†c;q[3,2]â†s;q[1,3]â†s
820 &prod(p,q,r)
830 GARER r,1,'#matri.8';TERMINER
840
900 PROCEDURE &prod(p,q,r)
910 FAIRE 920 POUR iâ†1 JUSQUA n;FAIRE 919 POUR jâ†1 JUSQUA n;sâ†0
915 FAIRE 915 POUR kâ†1 JUSQUA n;sâ†s+p[i,k]*q[k,j]
917 r[i,j]â†s
920 *fin des boucles en 910
930 RETOUR