Vous êtes sur la page 1sur 24

Rapport projet MMSN

Résolution de système linéaire


par la méthode de Gauss et
calcul de déterminants

HOUISSE Victor SCHIRRU Raphaël

octobre 2021
Table des matières

1 Introduction 2

2 Résolution de systèmes linéaires 3


2.1 Présentation du problème . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Résolution mathématiques . . . . . . . . . . . . . . . . . . . . . . 3

3 Méthode de Gauss 5
3.1 Pivot de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.1 Approche théorique . . . . . . . . . . . . . . . . . . . . . 5
3.1.2 Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Loi du conditionnement . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.1 Définitions et théorèmes . . . . . . . . . . . . . . . . . . . 7
3.2.2 Approche expérimentale . . . . . . . . . . . . . . . . . . . 8
3.3 Calcul de déterminant . . . . . . . . . . . . . . . . . . . . . . . . 8

4 Résultats informatiques 10
4.1 Matrice de Hilbert . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1.1 Sans perturbation . . . . . . . . . . . . . . . . . . . . . . 11
4.1.2 Avec perturbation . . . . . . . . . . . . . . . . . . . . . . 14
4.2 Matrice de Wilson . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.1 Sans perturbation . . . . . . . . . . . . . . . . . . . . . . 16
4.2.2 Avec perturbation . . . . . . . . . . . . . . . . . . . . . . 17

5 Conclusion 19

6 Bibliographie 20

7 Annexes 21

1
Chapitre 1

Introduction

Le but de ce projet est d’étudier, à l’aide de différents outils mathématiques,


la résolution de systèmes linéaires. Pour cela, il a été nécessaire de s’imprégner
des différents enjeux de ce problème mathématique et de comprendre les diffé-
rentes méthodes de résolution.
Pour notre part, nous avons utilisé la méthode de Gauss et sa décomposition
tout en introduisant les mineurs principaux des matrices étudiées ainsi que les
lois de conditionnement.
Notre travail de programmation a été réalisé sous Linux en langage C.

2
Chapitre 2

Résolution de systèmes
linéaires

2.1 Présentation du problème


La résolution de systèmes linéaires est un problème qui occupe aujourd’hui
l’intérêt de nombreux secteurs que ce soit celui de l’industrie, de la santé ou
encore de la finance et des assurances. La course au progrès et à l’avancée tech-
nologique doit obligatoiremment passer par la résolution de tels systèmes que
nous pouvons introduire à l’aide de la relation suivante :

Ax=b

Avec A le premier membre de l’équation, une matrice carrée inversible de


dimension connue n, b un vecteur connu de taille n et x le vecteur solution. (
Tout au long du travail de programmation nous avons construit le vecteur b de
telle manière que le vecteur solution x soit toujours égal à 1 )
Il parait évident que la résolution d’un tel système à n équations linéaires est
totalement impossible à résoudre à la main. Cela nécessite l’implémentation de
différentes méthodes numériques qui possèdent toutes leurs avantages et leurs
inconvénients en fonction du sytème étudié et en fonction des possibles pertur-
bations sur le premier membre de l’équation. Cela constitue un aspect décisif
dans la compréhension de la résolution de ces systèmes.

2.2 Résolution mathématiques


Il existe deux grandes familles de méthodes de résolution : les méthodes di-
rectes et les méthodes itératives

3
Parmis les méthodes directes nous retrouvons le pivot de Gauss, la factorisa-
tion LU, la factorisation de Cholesky ou les factorisations de Householder
et QR. Ces méthodes de résolution permettent de résoudre de manière exacte
le système étudié soit par triangularisation ou factorisation de la matrice A.
Pour les méthodes itératives nous pouvons retrouver les méthodes de Jacobi,
de Gauss-Seidel ou du gradient. Ces méthodes introduisent une notion de
convergence vers le vecteur solution x.
Ces méthodes sont définies de manière théorique sur papier mais leur résolution
est uniquement possible par l’implémentation des algorithmes sur machine.

figure 1 : Portrait de Carl Friedrich Gauss

4
Chapitre 3

Méthode de Gauss

Nous introduisons maintenant la méthode de Gauss qui a été celle étudiée


tout au long de ce projet et utilisée pour le travail de programmation.

3.1 Pivot de Gauss


3.1.1 Approche théorique
La méthode du Pivot de Gauss consiste en la triangularisation de la matrice
A en une matrice triangulaire supérieure U . Cette méthode nous permet donc
de transformer le système linéaire Ax = b de base en un système équivalent (
qui admet la même solution ) : U x = b′ .
Avec U une matrice triangulaire supérieure et b′ le vecteur second membre mo-
difié par cette réduction par pivot de Gauss.
La méthode, comme son nom l’indique consiste à choisir un premier pivot, gé-
néralement le premier élément en haut à gauche de la matrice a11 puis, pour la
première étape nous posons les multiplicateurs :

ai1
mi1 = a11 , i = 1, ..., n

De cette manière nous calculons les nouvelles lignes (Lj+1 ) pour j = 1, ...n−1
de la matrice tel que :

(Lj+1 ) = (Lj+1 ) − mi1 (Lj )

de la même manière le vecteur b est modifié comme suit :

bj+1 = bj+1 − mi1 bj

A la fin de cette première étape nous obtenons donc le premier système mo-
difié A(2) x = b(2) avec que des zéros en dessous du pivot (c’est à dire avec que

5
des zéros en dessous du pivot, sur la première colonne). Par la suite nous procé-
dons à la même manoeuvre en prenant à chaque fois comme pivot le coefficient
(k) (k)
akk ∀k=1,...,n-1, avec : akk ̸= 0 de manière à avoir à chaque passage de l’étape
k à k+1 :

(k)
aik
mik = (k) , i = k + 1, ..., n
akk

(k+1) (k) (k)


aij = aij − mik akj , i, j = k + 1, ..., n
(k+1) (k) (k)
bi = bi − mik bk , i = k + 1, ..., n

A la fin de toutes ces étapes nous obtenons donc le système :


A(n) x = b(n) ⇔ U x = b′

Avec A(n) une matrice triangulaire supérieure et b(n) le nouveau vecteur se-
cond membre. Tout l’intêret de cette méthode de triangularisation réside dans le
fait qu’un tel système peut être résolu très simplement ( et très rapidement sur
mahcine ). En effet, nous introduisons un algorithme de remontée qui consiste à
résoudre en premier la dernière ligne n du système qui ne contient qu’un élement
dans le premier membre du système ( la matrice triangulaire supérieure U ) ce
qui nous permet de résoudre une équation à une inconnue :

b′n
unn .xn = b′n ⇔ xn = unn

Ensuite comme indiqué dans le nom de l’algorithme nous remontons à la


ligne n − 1 jusqu’à la ligne 1, et nous définissons les solutions xi par :

∀i = n − 1, ..., 1

1
Pn
xi = uii (bi − j=i+1 uij .xj )

3.1.2 Algorithmes
Dans cette section nous pésentons les deux principaux algorithmes qui nous
ont permis tout au long de ce projet de pouvoir tester informatiquement la mé-
thode de Gauss. Premièrement nous retrouvons la traduction algorithmique de
la méthode de Gauss qui transforme la matrice de départ A en une matrice tri-
angulaire supérieure U puis, afin de résoudre le système U x = b′ , nous utilisons
l’algorithme de remontée.

6
3.2 Loi du conditionnement
3.2.1 Définitions et théorèmes
L’intêret de ce projet n’était pas seulement d’étudier la méthode de Gauss
dans le cas général et théorique, il a aussi été intéressant de tester cette méthode
informatiquement avec différentes matrices et surtout avec différentes perturba-
tions sur le premier membre de l’équation, A. L’introduction de ces jeux de tests
avec et sans perturbations nous ont permis d’étudier de manière expérimentale
le comportement du système linéaire à travers la réduction de Gauss.
De plus, cela nous a permis de pouvoir vérifier ce que nous allons introduire
comme étant la loi du conditionnement avec perturbation sur le premier membre.
Pour cela, nous introduisons tout d’abord le conditionnement d’une matrice
carré inversible A par le nombre :

condq (A) =|| A ||q || A−1 ||q

La loi du contionnement nous indique que si nous considérons un système


linéaire :

Ax = b

comme définit précédemment dans le rapport et si on admet une erreur δA


dans le premier membre ce qui revient à résoudre un sytème : (A+δA)(x+δx) =
b, alors, on peut estimer l’erreur dans la solution obtenue par :

7
||δx||q ||δA||q
||x+δx||q ≤ condq (A) ||A||q

Cette formule nous indique clairement que si cond(A) ≫ 1, même de petites


perturbations sur A peuvent entraîner d’énormes erreurs sur la solution x.
||Ax||q
( Nous définissons la norme q d’une matrice A par : || A ||q = sup ||x||q avec
|| x ||̸= 0 )

3.2.2 Approche expérimentale


Dans notre cas il a donc été question de vérifier expérimentalement tous ces
théorèmes et pour cela nous avons défini pour chaque jeu de tests les pertur-
bations suivantes : soit une matrice carré inversible quelconque A = (aij ) pour
i, j = 1, .., n, nous écrivons que (A + δA) appelée matrice perturbée est égale à
la somme entre la matrice A et la matrice perturbation δA tel que :

(A + δA) = (aij + λij aij ) = aij (1 + λij )

avec λij l’erreur relative que nous définissons par :

λij = ϵij .10nij

(ϵij ∈ (−1; 0; 1),nij ∈ (13, 14, 15, 16))

Nous nous arrêtons à 16 puisque nous codons en double précision et la pré-


cision machine nous permet d’obtenir des résultats avec 16 chiffres après la
virgule.

3.3 Calcul de déterminant


La résolution de systèmes linéaires de si grande dimension entraîne forcé-
ment de nombreuses difficultés de calcul dont l’une d’entre elles est le calcul de
déterminant. En effet, la formule générale du déterminant ou formule de Leib-
niz, nous donne la relation suivante : Pour toute matrice A = (aij ) ∈ Mn×n (R)
le déterminant ( noté det(A) ) est :
Pn Pn
det(A) = j=1 (−1)i+j aij det(Mij ) = i=1 (−1)i+j aij det(Mij )

où Mij est la matrice A à laquelle on a retiré la ième ligne et la jème, le déter-


minant de Mij est appelé mineur.
Cependant, cette technique de calcul devient rapidement très longue et très
compliquée à mettre en pratique pour des matrices de grandes dimensions. De
plus l’implémentation de cette formule sur machine est extrêmement couteuse
de part l’immensité de calculs à réaliser lorsque la dimension des matrices aug-
mente. Or, nous savons que pour des matrices triangulaire inférieures ou supé-
rieurs, le déterminant est égal au produit des éléments diagonaux. On comprend

8
donc rapidement que la méthode du pivot de Gauss va nous être très utile pour
les calculs de déterminants.
En effet, la réduction de Gauss, nous permet grâce aux pivots akk de transfor-
mer une matrice quelconque A en une matrice triangulaire supérieure U dans
laquelle tous les éléments diagonaux sont les pivots akk . Ainsi, nous pouvons
dire que pour n’importe quelle étape k de réduction et pour l’étape k=n :

det(A) = det(A(k) ) = det(A(n) ) = det(U )


Qn
det(U ) = k=1 akk

Cette idée de déterminant à chaque étape k nous permet d’expliquer la re-


lation précédente par l’introduction des sous matrices principales de A de la
forme Ak,k , pour k = 1, ..., n obtenues en extrayant les lignes et colonnes de
même indices. Pour cela, nous considérons la matrice de départ à une étape
(k)
quelconque k, soit A(k) . Nous remarquons qu’à cette étape la sous matrice Akk
est une matrice triangulaire supérieure tel que pour k = 2 on ait :

(2)
 
(2) a11 a12
A2,2 =
0 a22

Nous obtenons donc :

(2)
det(A2,2 ) = det(A2,2 ) = a11 × a22

De cette manière, chaque détermiant de sous matrice principales, appelés


mineurs principaux, à l’étape k sera égal au mineur principal de la matrice A
de départ et lorsque nous arriverons à l’étape n de la réduction de Gauss nous
retrouverons bien le résultat attendu :

(n) Qn
det(An,n ) = det(An,n ) = det(A) = k=1 akk .

Il est évident que ce calcul à n multiplications est bien moins coûteux et bien
plus rapide à éxecuter pour une machine que la formule générale de Leibniz.

9
Chapitre 4

Résultats informatiques

Le but de ces jeux de test informatiques était d’observer le comportement


de la méthode de Gauss, du conditionnement et des déterminants en testant
différentes matrices, à différentes dimensions et avec ou sans perturbatipns sur
le premier membre. Il était donc intéressant de comparer les résultats expéri-
mentaux avec les résultats théoriques. Pour cela nous avons donc fait en sorte
que les solutions théoriques attendues soient toujours égales 1 tel que :

 
1

 . 

x=
 . 

 . 
1

Pour cela on conditionne le vecteur b de la manière suivante :


Pn
bi = j=1 aij

∀i = 1, .., n.

4.1 Matrice de Hilbert


Les premiers tests informatiques ont été réalisés sur des matrices de Hilbert.
Ces matrices sont des matrices carrés de terme général :
1
Hij = i+j−1

∀i, j = 1, ..., n.

10
4.1.1 Sans perturbation
Lors des tests sans perturbations nous avons pu remarqur que malgré que
nous ayons conditionné le vecteur b de telle sorte à n’avoir que des 1 en solutions,
les solutions obtenues en double précision, ( soit 16 chiffres après la virgules )
ne sont jamais exactement égales à 1. De plus, nous remarquons que plus la
dimension de la matrice augmente, moins le vecteur solution est proche de 1,
comme nous pouvons le voir sur les captures d’écrans ci dessous :

Matrice h5
Pour la matrice h5, le vecteur solution reste extrêmement proche des résul-
tats théoriques malgré une très faible erreur.

Cette erreur sur le vecteur solution n’est pas évitable, c’est une erreur qui sera
présente dans tous les autres résultats puisqu’elle est causée par l’accumulation
d’arrondis dans les calculs.

11
Matrice h12

Ici pour h12 on remarque que le vecteur solution s’éloigne de 1 sans être
pour autant absurde.

12
Matrice h20

En revanche pour h20 on constate que le vecteur solution ( qui on le rappelle


n’a subi aucune perturbation ) s’est totalement éloigné des résultats théoriques.
Ce premier résultat absurde peut nous donner une première indication quant
à l’efficacité de la méthode de Gauss et l’accumulation des arrondis de calculs
( causé par la précision machine ) sur des matrices de grandes dimensions qui
comme nous le voyons est loin d’être acceptable.

13
4.1.2 Avec perturbation
Lorsque nous introduisons les perturbations sur le premier membre, la ma-
trice A, nous constatons un comportement légèremment différent à celui des
tests sans perturbations puisqu’ici il suffit de deux exemples pour observer une
anomalie conséquente.

Matrice h5

Pour la matrice h5, malgré la présence des perturbations nous constatons


que très peu de changement sur le vecteur solution x.

Matrice h12

Dans le premier test de la matrice h12, sans perturbation, nous avons observé
une très faible modification de la solution x et les résultats absurdes n’arrivaient
que sur des dimensions supérieures. En revanche, nous constatons que pour la

14
dimension 12, la méthode de Gauss nous produit des résultats significativement
différents de 1 comme nous pouvons le voir sur la capture d’écrans. Il parait
donc maintenant évident que cette méthode de réduction par pivot réagit très
mal lorsque nous augmentons même faiblement la dimension des matrices.

Loi du conditionnement
Nous pouvons constater sur les captures d’écrans suivantes que l’inégalité
du conditionnement ( définie plus haut dans le rapport ) a pu être vérifié dans
n’importe quel cas :

15
4.2 Matrice de Wilson
Les deuxièmes jeux de test ont été réalisés sur la matrice de Wilson que nous
définissons ci dessous par :

 
10 7 8 7
 7 5 6 5 
W =
 8

6 10 9 
7 5 9 10

4.2.1 Sans perturbation

16
4.2.2 Avec perturbation

Nous pouvons remarquer que pour la matrice de Wilson la présence de per-


turbation ne change que très peu les résultats obtenus ce qui confirme l’idée
comme quoi la méthode de réduction de Gauss est bien adaptée pour des ma-
trices de faibles dimensions.

17
Loi du conditionnement

18
Chapitre 5

Conclusion

En conclusion, nous pouvons dire que l’étude de la méthode du pivot de


Gauss ainsi que les différents jeux de test réalisés sur machine nous ont permis
de comprendre un grand nombre de choses sur la résolution de systèmes linéaires
et sur différentes théorèmes liés aux matrices et aux équations linéaires. En effet,
lors de l’étude théorique, la méthode de Gauss paraissait parfaite et prometteuse
pour la résolution de systèmes linèaires à grandes dimensions. Cependant, nous
nous sommes vite rendus compte que la précision machine ne nous permettait
pas d’obtenir des résultats convaincants en comparaison avec les valeurs théo-
riques. Les arrondis de calculs s’accumulent avec l’augmentation de la taille du
système ce qui finit par nous donner des résultats qu’on pourrait qualifier d’ab-
surde. Sans parler de l’introduction des perturbations sur le premier membre
qui produit très rapidement des valeurs expérimentales totalement erronées.
Toutefois, cela reste difficile de généraliser ces affirmations suite à des jeux de
test sur deux types de matrices. Si le temps nous l’avait permis nous aurions
aimé observer les résultats informatiques sur des matrices de Vandermonde ou
tri-diagonales.
Ces résultats informatiques nous ont tout de même permis de vérifier d’impor-
tants théorèmes sur l’estimation des erreurs dans les sytèmes comme l’inégalite
du conditionnement. De plus, la méthode de Gauss nous a fait découvrir une
technique de calcul de déterminant par pivot beaucoup plus simple et rapide à
mettre en oeuvre que les calculs habituels.

19
Chapitre 6

Bibliographie

P. Lascaux R. Théodor Analyse numérique matricielle appliquée à l’art de


l’ingénieur, tome 1, 2ème édition, Masson, 1993.
1. T.Schmoderer Cours d’analyse numérique
2.http ://www.normalesup.org/ pastre/meth-num/MN/1-gauss/cours-gauss.pdf
3.https ://membres-ljk.imag.fr/Bernard.Ycart/mel/de/node7.html
4.https ://fr.wikipedia.org/wiki/Matriced eH ilbert

20
Chapitre 7

Annexes

Notre programme final (fonc.c) datant du 19/10/21 :

21
22
23

Vous aimerez peut-être aussi