Vous êtes sur la page 1sur 14

14

Algorithmes du pivot de Gauss.


Applications
On utilise les dénitions et notations du chapitre 13.
On se reportera au paragraphe 13.1 pour les dénitions d'opérations élémentaires, de matrices
de transvection, de dilatation, de permutation.

14.1 Matrices échelonnées


Soit A = ((aij )) 1≤i≤n ∈ Mn,m (K) .
1≤j≤m
Si A est non nulle, on dénit alors pour tout entier i compris entre 1 et n tel que la ligne
numéro i de A soit non nulle l'entier di comme le plus petit entier j compris entre 1 et m tel
que aij ̸= 0, soit :
di = inf {j ∈ {1, · · · , m} | aij ̸= 0}

Dénition 14.1 On dit qu'une matrice A ∈ Mn,m (K) est échelonnée en ligne si elle est nulle
ou si elle est non nulle et il existe un entier r compris entre 1 et n tel que :
 ∀i ∈ {1, · · · , r} , Li ̸= 0 ;
 ∀i ∈ {r + 1, · · · , n} , Li = 0 ;
 1 ≤ d1 < d2 < · · · < dr ≤ m.
On dit qu'une matrice A ∈ Mn,m (K) est échelonnée en colonne si la matrice t A ∈ Mn,m (K)
est échelonnée en ligne.

Le cas où r = n correspond à une matrice ayant toutes ses lignes non nulles et de la forme :
 
0 ··· 0 a1d1 · · · ··· ··· ··· ··· a1m
 0 ··· ··· ··· 0 a2d2 · · · ··· ··· a2m 
 
A =  .. .. .. .. .. .. .. .. .. .. 
 . . . . . . . . . . 
0 ··· ··· ··· ··· ··· 0 andn · · · anm

avec aidi ̸= 0 pour tout i compris entre 1 et n.


Pour r = n = m (cas d'une matrice carrée), on a nécessairement di = i pour i compris entre
1 et n et la matrice A est triangulaire supérieure à diagonale non nulle, donc inversible.

347
348 Algorithmes du pivot de Gauss. Applications

Pour 1 ≤ r ≤ n − 1, une matrice échelonnée est de la forme :


 
0 ··· 0 a1d1 · · · ··· ··· ··· ··· a1m
 0 ··· ··· ··· 0 a2d2 · · · ··· ··· a2m 
 . . .. .. .. .. .. .. .. .. 
 . .
 . . . . . . . . . . 
 
A =  0 ··· ··· ··· ··· ··· 0 ardr · · · arm 
 
 0 ··· ··· ··· ··· ··· ··· ··· ··· 0 
 . . .. .. .. .. .. .. .. .. 
 .. .. . . . . . . . . 
0 ··· ··· ··· ··· ··· ··· ··· ··· 0
Les coecients aidi , pour i compris entre 1 et r, sont les pivots de la matrice échelonnée A.
Théorème 14.1 Avec les notations de la dénition précédente, une matrice non nulle éche-
lonnée en ligne [resp. en colonne] A est de rang r (le nombre de lignes [resp. de colonnes] non
nulles).
Démonstration. On rappelle que, pour A ∈ Mn,m (K) non nulle, on a 1 ≤ rg (A) ≤
min (n, m) .
Comme :  
a1d1 a1d2 · · · · · · a1dr
 0 a2d2 · · · · · · a2dr 
  ∏ r
 . . . .. .. 
det  0 0 . . = aidi ̸= 0
 . . .. 
 ··· ··· .. .. .  i=1

0 0 · · · 0 ardr
on a rg (A) ≥ r.
Pour r = n, on a nécessairement rg (A) = n = r puisque rg (A) ≤ n.
Pour 1 ≤ r ≤ n − 1, on a rg (A) ≤ r puisque les lignes r + 1 à n de A sont nulles et là encore
rg (A) = r.
Et comme rg (A) = rg ( t A) , on a le résultat pour les matrices échelonnées en colonnes.
Dénition 14.2 On dit qu'un système linéaire Ax = b est échelonné si la matrice A est
échelonnée en lignes.

14.2 Résolution des systèmes linéaires par la méthode des


pivots de Gauss
Nous allons voir ici que toute matrice A ∈ Mn,m (K) peut être transformée en une matrice
échelonnée par une suite d'opérations élémentaires. Cette transformation peut être utilisée pour
résoudre des systèmes linéaires ou pour inverser des matrices carrées (qui sont inversibles).
Tout est basé sur les résultats suivants.
Lemme 14.1 Soit A = ((aij )) 1≤i≤n ∈ Mn,m (K) . Il existe une matrice P ∈ GLn (K) produit
1≤j≤m
de matrices de permutation et de transvection telle que :
 (1) (1) (1) 
a11 a12 · · · a1m
 0 (1)
a22 · · · a2m 
(1)
 
PA =  . .. . . . .. 
 .. . . 
(1) (1)
0 an2 · · · anm
Résolution des systèmes linéaires par la méthode des pivots de Gauss 349

Démonstration. Si la première colonne de A est nulle, la matrice A a déjà la forme souhaitée


et P = In convient.
Sinon, il existe un indice i compris entre 1 et m tel que ai1 ̸= 0. Si i ≥ 2, on permute alors
la ligne 1 avec la ligne i, ce qui revient à multiplier à gauche la matrice A par la matrice de
permutation P1i , sinon on ne fait rien.
Dans tous les cas, on s'est ramené à une matrice de coecient a(1) 11 ̸= 0 et en eectuant les
opérations élémentaires :
(1)
ai1
Li ← Li − (1)
L1 (2 ≤ i ≤ n)
a11
ce qui revient à multiplier à gauche la matrice par les matrices de transvection :
( )
(1)
ai1
Ti = Ti1 − (1)
(2 ≤ i ≤ n)
a11

on obtient la matrice :  (1) (1) (1) 


a11 a12 · · · a1m
 0 (1)
a22 · · · a2m 
(1)
 
A(1) = PA =  . .. ... .. 
 .. . . 
(1) (1)
0 an2 · · · anm
où P = Tn · · · T2 P1 avec P1 = In ou une matrice de permutation et, pour i compris entre 2 et
n, Ti = In ou une matrice de transvection de paramètre non nul.
( )
Remarque 14.1 Pour a(1)
11 ̸= 0, on a rg (A) = 1 + rg B (1) , en notant :
 (1) (1)

a22 ··· a2m
B (1) =  ... ..  ∈ M
 ...
.  n−1,m−1 (K)
(1) (1)
an2 · · · anm


n
Remarque 14.2 La matrice Ti est de la forme :
i=2
 
1 0 ··· ··· 0
( )  λ21 1 0 ··· 0 

n (1)  

ai1  .. .. . . . . . .. 
Ti1 (1)
=
 . . . . 

a11  λn−1,1
i=2 0 ··· 1 0 
λn1 0 ··· 0 1

Une telle matrice est dite de Frobenius.

Dénition 14.3 On appelle matrice de Frobenius une matrice carrée d'ordre n qui ne dière
de l'identité que par une colonne (ou une ligne).

Théorème 14.2 Soit A = ((aij )) 1≤i≤n ∈ Mn,m (K) . Il existe une matrice P ∈ GLn (K)
1≤j≤m
produit de matrices de permutation et de transvection telle que la matrice P A soit échelonnée
en ligne.
350 Algorithmes du pivot de Gauss. Applications

Démonstration. En reprenant les notations de la remarque précédente, on applique le


lemme à la matrice B (1) . De proche en proche, on aboutit à une matrice P A échelonnée en
ligne.

Remarque 14.3 En appliquant le théorème à la matrice A ∈ Mm,n (K) , on déduit l'existence


t

de P ∈ GLn (K) produit de matrices de permutation et de transvection telle que la matrice P t A


soit échelonnée en ligne. La matrice t (P t A) = A t P est alors échelonnée en colonne, la matrice
Q ∈ GLn (K) étant un produit de matrices de permutation et de transvection.

Remarque 14.4 En utilisant des matrices de dilatation, on peut se ramener, pour A ̸= 0, à


une matrice échelonnée de pivots tous égaux à 1.

Remarque 14.5 Pour n = m, la matrice P A est équivalente à la matrice A mais pas semblable
(sauf si P = In ).

Le théorème précédent nous donne un algorithme de résolution d'un système linéaire de n


équations à m inconnues. C'est la méthode des pivots de Gauss.
Cette méthode nous donne aussi un moyen de calculer le rang de la matrice A, c'est le rang
de la matrice échelonnée P A.
Précisément, pour A = ((aij )) 1≤i≤n ∈ Mn,m (K) et b ∈ Kn , on s'intéresse aux solutions dans
1≤j≤m
K du système linéaire de n équations à m inconnues :

m
aij xj = bi (1 ≤ i ≤ n) (14.1)
j=1

qui peut aussi s'écrire sous forme matricielle, Ax = b.


Dans le cas où le second membre b est nul, on dit que le système est homogène.
On appelle solution du système (14.1) tout vecteur x = (xi )1≤i≤m ∈ Km qui vérie (14.1) .
On dit qu'un système linéaire est compatible si l'ensemble de ses solutions est non vide.

Remarque 14.6 Un système homogène est toujours compatible puisque le vecteur nul est so-
lution.

Remarque 14.7 Dans le cas où la matrice A est carrée et inversible, on dit que le système
linéaire Ax = b est de Cramer. Il a alors une unique solution.

On dit que deux systèmes linéaires Ax = b et A′ x = b′ sont équivalents s'ils ont même
ensemble de solutions.
En désignant par u l'application linéaire de Km dans Kn ayant A pour matrice dans les
bases canoniques, on peut remarquer que l'ensemble des solutions du système homogène associé
à (14.1) est le noyau de u et le système (14.1) est compatible si, et seulement si, b est dans
l'image de u.
Si le système (14.1) est compatible et si x0 en est une solution particulière, alors pour tout
autre solution x, le vecteur x − x0 est dans le noyau de u. L'ensemble des solutions de (14.1) est
donc, dans ce cas, x0 + ker (u) , c'est-à-dire le sous-espace ane de Km de dimension n − rg (A)
dirigé par ker (u) et passant par x0 .
On déduit donc, dans le cas où le système (14.1) est compatible, que l'ensemble des solutions
est soit réduit à un point (cas où ker (u) = {0}), soit inni (cas où ker (u) ̸= {0}).
Résolution des systèmes linéaires par la méthode des pivots de Gauss 351

On peut également donner l'interprétation vectorielle suivante du système (14.1) :


( )

p
(∃x ∈ Km | Ax = b) ⇔ ∃x ∈ Km | xj Cj = b
j=1

Dans le cas où le système est compatible, le vecteur b est dans l'espace vectoriel engendré par
les vecteurs colonnes Cj et tout revient à déterminer toutes les écritures possibles de b comme
combinaison linéaire des Cj .
Le système homogène associé Ax = 0 possède d'autres solutions que la solution nulle si, et
seulement si, le système (C1 , · · · , Cm ) est lié dans Kn .
On appelle opération élémentaire sur le système (14.1) toute opération élémentaire sur les
lignes ou les colonnes de la matrice (A, b) ∈ Mn,m+1 (K) .

Théorème 14.3 Une opération élémentaire sur les lignes d'un système linéaire Ax = b le
transforme en un système équivalent.

Démonstration. Une opération élémentaire sur les lignes du système linéaire Ax = b


revient à multiplier à gauche les matrices A et b par une même matrice inversible P ∈ GLn (K)
et l'équation Ax = b est équivalente à P Ax = P b.
Dans ce qui suit on considère le système linéaire de n équations à m inconnues :


 a11 x1 + · · · + a1m xm = b1
.. (14.2)
 .
 a x + ··· + a x = b
n1 1 nm m n

et on note, pour tout i compris entre 1 et n, Li = (ai1 , · · · , aim , bi ) la ligne numéro i de ce


système.
On suppose que la matrice A n'est pas la matrice nulle (sinon l'ensemble des solutions du
système (14.2) est Km ).
Si les premières colonne C1 , · · · , Cd1 de la matrice A sont nulles, les variable x1 , · · · , xd1
peuvent être quelconques et on passe à la colonne d1 + 1, ce qui nous donne un système de n
équations à m − d inconnues.
On suppose donc que la première colonne de la matrice A n'est pas nulle et en permutant
la ligne 1 avec une des lignes suivantes, on se ramène à un système A(1) x = b(1) , avec a(1) 11 non
nul. On élimine alors x1 des lignes 2 à n en eectuant les opérations élémentaires suivantes :
(1)
ai1
Li ← Li − (1)
L1 (2 ≤ i ≤ n)
a11
ce qui donne le système :
 (1) (1) (1) (1)

 a11 x1 + a12 x2 + · · · + a1m xm = b1

 (2) (2) (2)
a22 x2 + · · · + a2m xm = b2
 ..

 .
 (2) (2) (2)
an2 x2 + · · · + anm xm = bn

Si l'un des coecients a(2)


i2 est non nul (2 ≤ i ≤ n), on recommence avec un procédé analogue
pour éliminer x2 des équations 3 à n.
i2 sont nuls, on passe alors à la colonne suivante.
Si tous les coecients a(2)
352 Algorithmes du pivot de Gauss. Applications

Et on continue ainsi de suite.


Au bout d'un nombre ni d'étapes, on aboutit à un système échelonné qui est équivalent au
système (14.2) .
Trois cas de gure sont alors possibles.
 Soit on a obtenu un système de Cramer triangulaire supérieur d'ordre n = m = r :


 α11 x1 + α12 x2 + · · · + α1n xn = β1

 α22 x2 + · · · + α2n xn = β2

..

 .
 αnn xn = βn

les pivots αii étant tous non nuls. Un tel système a une unique solution et se résout alors
 en remontée  :
 βn


 xn = α
n( )
 1 ∑n

 xi = βi − αij xj (i = n − 1, · · · , 1)
αii j=i+1

Dans ce cas, la matrice A est de rang n = m.


Du fait qu'une permutation de lignes change le déterminant de signe et qu'ajouter un
multiple d'une ligne à une autre ne change pas ce dernier, on aura :

p

n
det (A) = (−1) αii
i=1

où p est le nombre de permutations qui ont été nécessaires pour avoir des pivots αii non
nuls, ce qui nous donne un algorithme de calcul du déterminant de A.
 Soit on a obtenu un système de r ≤ n équations à m > r inconnues de la forme :


 α11 x1 + α12 x2 + · · · + α1r xr + α1,r+1 xr+1 + · · · + α1m xm = β1

 α22 x2 + · · · + α2r xr + α2,r+1 xr+1 + · · · + α2m xm = β2

..

 .
 αrr xr + αr,r+1 xr+1 + · · · + αrm xm = βr

Les r premières inconnues sont appelées inconnues principales et les autres inconnues non
principales. Les inconnues non principales sont alors utilisées comme paramètres en second
membre et on résout le système aux inconnues principales x1 , · · · , xr :


 α11 x1 + α12 x2 + · · · + α1r xr = β1 − (α1,r+1 xr+1 + · · · + α1m xm )

 α22 x2 + · · · + α2r xr = β2 − (α2,r+1 xr+1 + · · · + α2m xm )

..

 .
 αrr xr = βr − (αr,r+1 xr+1 + · · · + αnm xm )

les pivots αii , pour i compris entre 1 et r, étant tous non nuls. L'ensemble des solutions
est alors un espace ane de dimension n − r (le nombre de paramètres) et le rang de la
matrice est r.
Résolution des systèmes linéaires par la méthode des pivots de Gauss 353

 Soit on a obtenu un système de n équations à r = m < n inconnues de la forme :



 α11 x1 + α12 x2 + · · · + α1m xm = β1



 α22 x2 + · · · + α2m xm = β2

 ..


 .
αmm xm = βm



 0 = βm+1

 ..

 .


0 = βn
Si l'un des βi , pour i compris entre m + 1 et n est non nul, alors le système n'a pas de
solution.
Si tous βi , pour i compris entre m + 1 et n sont nuls, le système restant, appelé système
aux équations principales, est de Cramer et on a une unique solution.
Dans ce cas, la matrice est de rang m.
Exemple 14.1 Soit à résoudre le système :

 x+y+z =1
x + 2y + 2z = 2

x + 2y + 3z = 3
Les opérations élémentaires :
Li ← Li − L1 (i = 2, 3)
donnent le système : 
 x+y+z =1
y+z =1

y + 2z = 2
puis l'opération L3 ← L3 − L2 donne :

 x+y+z =1
y+z =1

z=1
et le système a pour unique solution (x, y, z) = (0, 0, 1) .
Exemple 14.2 Soit à résoudre le système :

 x+y+z =1
x + 2y + 2z = 2

x + 2y + 2z = 3
Les opérations élémentaires :
Li ← Li − L1 (i = 2, 3)
donnent le système : 
 x+y+z =1
y+z =1

y+z =2
puis l'opération L3 ← L3 − L2 donne :

 x+y+z =1
y+z =1

0=1
et le système n'a pas de solution.
354 Algorithmes du pivot de Gauss. Applications

Exemple 14.3 Soit à résoudre le système :



 x − 2y + t = 1
x − y − z + 4t = 1

x − 3y + z − 2t = 1

Les opérations élémentaires :


Li ← Li − L1 (i = 2, 3)
donnent le système : 
 x − 2y + t = 1
y − z + 3t = 0

−y + z − 3t = 0
équivalent à : {
x − 2y + t = 1
y − z + 3t = 0
et le système a innité de solutions données par :
(x, y, z, t) = (1 + 2z − 7t, z − 3t, z, t)

où (z, t) ∈ R2 .

Exemple 14.4 Soient A, B, C, D quatre points distincts et alignés dans un plan. Peut-on dé-
terminer quatre points distincts et alignés M, N, P, Q tels que A, B, C, D soient respectivement
les milieux des segments [M, N ] , [N, P ] , [P, Q] et [Q, M ] ?
Si les points M, N, P, Q existent, ils sont nécessairement sur la droite (AB) . On munit (AB)
d'un repère et on désigne par a, b, c, d les abscisses respectives des points A, B, C, D et x, y, z, t
celles de M, N, P, Q dans ce repère. Le problème a des solutions si, et seulement si, le système :


 x + y = 2a

y + z = 2b

 z + t = 2c

x + t = 2d

a des solutions. La méthode des pivots de Gauss transforme ce système en :



 x + y = 2a
y + z = 2b

0 = 2 (b + d − a − c)

et ce système a des solutions si, et seulement si, a + c = b + d.

Remarque 14.8 Pour éviter de faire une division par un nombre trop petit, dans le choix du
pivot, on aura intérêt, à chaque étape de l'algorithme, à permuter la ligne i avec la ligne j ≥ i
telle que :
|ajk | = max {|aik | | i = k, · · · , n}
de manière à avoir le pivot le plus grand possible en valeur absolue.
Si ce maximum est trop petit, alors le système est numériquement dégénéré.

Remarque 14.9 La résolution d'un système de n équations à n inconnues par la méthode de


Gauss nécessite un nombre d'opérations qui est un O (n3 ) .
Résolution des systèmes de Cramer à coecients entiers 355

Pour la programmation, on peut procéder comme suit dans le cas d'un système de Cramer
(n = m et det (A) ̸= 0).
La variable L utilisée dans la procédure PivotMax est le numéro de la ligne où se trouve le
pivot le plus grand en valeur absolue, pour tout k compris entre 1 et n.
La procédure PermuterLigne, facile à écrire permet de permuter deux lignes du système.
Après exécution de la procédure la matrice A est devenue triangulaire et le vecteur b est
transformé, de sorte que les valeurs initiales de A et b sont perdues. C'est-à-dire que les variables
A et b sont passées par adresse (c'est le mode Entrée_Sortie).
PROCEDURE PivotMax(Entrée k, n : Entier ; ε : Réel ; Entrée_Sortie A : Matrice ; b :
Vecteur) ;
Début
L = k;
Pour i Allant de k + 1 à n Faire
Début
Si |aik | > |aLk | Alors L = i ;
Si |aik | < ε Alors Stop('Pivot trop petit') ;
Si L ̸= k Alors PermuterLignes(n, k, L, A, b) ;
Fin ;
Fin ;
PROCEDURE Eliminer(Entrée k, n : Entier ; Entrée_Sortie A : Matrice ; b : Vecteur) ;
Début
Pour i Allant de k + 1 à n Faire
Début aik
m= ;
akk
Pour j Allant de k + 1 à n Faire aij = aij − m · akj ;
aik = 0 ;
bi = bi − m · bk ;
Fin ;
Fin ;
PROCEDURE Pivotage(Entrée n : Entier ; Entrée_ Sortie A : Matrice ; b : Vecteur) ;
Début
Pour k Allant de 1 à n − 1 Faire
Début
PivotMax(k, n, A, b) ;
Eliminer(k, n, A, b) ;
Fin ;
Fin ;
Puis, la résolution du système linéaire Ax = b se fait en appelant une procédure de résolution
d'un système triangulaire supérieur facile à écrire.

14.3 Résolution des systèmes de Cramer à coecients en-


tiers
On suppose ici que m = n et que A ∈ Mn (Z) , b ∈ Mn,1 (Z) .
Dans ce cas, en modiant la méthode de Gauss, on peut calculer la solution x de façon exacte
comme vecteur à coecients dans Q.
On procède comme suit.
356 Algorithmes du pivot de Gauss. Applications

Etape 0  Après une éventuelle permutation de lignes, on a obtenu le système A(1) x = b(1)
à coecients dans Z avec un premier pivot non nul.
Etape 1  Elimination de x1 dans les équations 2, · · · , n.
En eectuant la division de la ligne 1 par le premier pivot, on perd le caractère entier du
système. Il est préférable de procéder comme suit :
 garder la ligne 1 ;
 L(1)
i 7→ a11 Li − ai1 L1 , pour i = 2, · · · , n.
(1) (1) (1) (1)

Ce qui donne le système A(2) x = b(2) , avec un deuxième pivot non nul (au prix d'une
éventuelle permutation).
Etape 2  Elimination de x2 dans les équations 3, · · · , n.
Si on procède de la même façon pour cette étape, on constate que les coecients de la
matrice A(3) et du vecteur b(3) sont divisibles par le premier pivot. On peut donc s'autoriser
une division par ce premier pivot pour cette étape 2, ce qui aura l'avantage de diminuer les
coecients obtenus.
Etape k  Elimination de xk dans les équations k + 1, · · · , n.
Cette étape est décrite par les formules :
( )
(k) (k) (k) (k)
akk aij − aik akj
(k+1)
aij = (k−1)
ak−1,k−1

pour i = k + 1, · · · , n et j = k + 1, · · · , n + 1 (en prenant b comme colonne numéro n + 1).


Ce qui donne au bout de n − 1 étapes un système triangulaire supérieur à coecients entiers
qui peut se résoudre de façon exacte dans Qn .
Calcul du déterminant  Au signe près, on a :
( ) ( (1) )n−1
det A(2) = a11 det (A)
( )n−2
( ) (2)
a22 ( ) ( (2) )n−2 (1) ( )
det A(3) = (1)
det A(2) = a22 a11 det A(1)
a11
De proche en proche, on a alors :
( )
( ) ∏
n
(k)
det A(n) = (−1)p akk det (A)
k=1
( )
ce qui donne, en tenant compte de l'expression de det A(n) comme produit des pivots :

det (A) = (−1)p a(n)


nn

Dans la programmation structurée ci-dessus, on peut aussi travailler avec une matrice à n
lignes et n + 1 colonnes en prenant b pour colonne n + 1.
De manière plus générale, pour résoudre en parallèle p systèmes linéaires de même matrice
A et de seconds membres respectifs b1 , · · · , bp , on travaillera avec une matrice à n lignes et n + p
colonnes en prenant, pour j compris entre 1 et p, bj comme colonne n + j.
En prenant pour valeurs particulières des seconds membres les vecteurs de la base canonique
de Kn , on dispose d'un procédé de calcul de l'inverse d'une matrice. Mais, en fait, pour calculer
l'inverse d'une matrice on préfère utiliser la méthode Gauss-Jordan qui est une variante de la
méthode de Gauss.
La méthode de Gauss-Jordan pour les systèmes de Cramer 357

14.4 La méthode de Gauss-Jordan pour les systèmes de


Cramer
Voir le paragraphe 13.7.
Pour la programmation de cette méthode, on peut procéder comme suit, le vecteur b conte-
nant en n d'opération la solution du système.
PROCEDURE EliminerGaussJordan(Entrée k, n : Entier ; Entrée_Sortie A : Matrice ; b :
Vecteur) ;
Début a
Pour j Allant de k + 1 à n Faire akj = kj ;
akk
bk
bk = ; akk = 1 ;
akk
Pour i Allant de 1 à k − 1 Faire
Début
Pour j Allant de k + 1 à n Faire aij = aij − aik akj ;
bi = bi − aik bk ;
aik = 0 ;
Fin ;
Pour i Allant de k + 1 à n Faire
Début
Pour j Allant de k + 1 à n Faire aij = aij − aik akj ;
bi = bi − aik bk ;
aik = 0 ;
Fin ;
Fin ;
PROCEDURE GaussJordan(Entrée n : Entier ; Entrée_Sortie A : Matrice ; b :Vecteur) ;
Début
Pour k Allant de 1 à n Faire
Début
PivotMax(k, n, A, b) ;
EliminerGaussJordan(k, n, A, b) ;
Fin ;
Fin ;
Le calcul de l'inverse et du déterminant d'une matrice peut alors se faire en remplaçant le
vecteur b par la matrice identité, ce qui revient à résoudre en parallèle les n systèmes linéaires
de même matrice A et de seconds membres respectifs e1 , · · · , en formant la base canonique de
Kn .
On obtient alors la programmation structurée suivante.
PROCEDURE InitInverse(Entrée : n : Entier ; Sortie Inv : Matrice) ;
Début
Pour i Allant de 1 à n Faire
Début
Pour j Allant de 1 à n Faire
Début
Si j ̸= i Alors Invij = 0 Sinon Invij = 1 ;
Fin ;
Fin ;
Fin ;
358 Algorithmes du pivot de Gauss. Applications

PROCEDURE PivotMaxInv(Entrées k, n : Entiers ; ε : Réel ; Entrée_Sortie A, Inv : Ma-


trice) ;
Début
L = k;
Pour i Allant de k + 1 à n Faire
Si |aik | > |aLk | Alors L = i ;
Si |aLk | < ε Alors Arrêter('Pivot trop petit') ;
Si L ̸= k Alors
Début
Pour j Allant de k à n Echanger(akj , aLj ) ;
Pour j Allant de 1 à n Echanger(Invkj , InvLj ) ;
Fin ;
Fin ;
PROCEDURE EliminerInvGaussJordan(Entrées k, n : Entiers ; Entrée_Sortie A, Inv : Ma-
trice) ;
Début a
Pour j Allant de k + 1 à n Faire akj = kj ;
akk
Invkj
Pour j Allant de k + 1 à n Faire Invkj = ;
Invkk
akk = 1 ;
Pour i Allant de 1 à k − 1 Faire
Début
Pour j Allant de k + 1 à n Faire aij = aij − aik akj ;
Pour j Allant de 1 à n Faire Invij = Invij − aik Invkj ;
aik = 0 ;
Fin ;
Pour i Allant de k + 1 à n Faire
Début
Pour j Allant de k + 1 à n Faire aij = aij − aik akj ;
Pour j Allant de 1 à n Faire Invij = Invij − aik Invkj ;
aik = 0 ;
Fin
Fin ;
PROCEDURE InversionGaussJordan(Entrée n : Entier ; Entrée_Sortie A, Inv : Matrice) ;
Début
InitInverse(n, Inv ) ;
Pour k Allant de 1 à n Faire
Début
PivotMaxInv(k, n, A, Inv ) ;
EliminerInvGaussJordan(k, n, A, Inv ) ;
Fin ;
Fin ;

14.5 Applications
14.5.1 Décomposition LR (méthode de Crout)
Voir le paragraphe 13.4.
Applications 359

14.5.2 Décomposition LD tL des matrices symétriques réelles


Voir le paragraphe 13.5.

14.5.3 Décomposition de Cholesky des matrices symétriques réelles


dénies positives
Voir le paragraphe 13.6.
360 Algorithmes du pivot de Gauss. Applications

Vous aimerez peut-être aussi