• Aucun résultat trouvé

R´esoudre des syst`emes d’´equations lin´eaires

3.1 Introduction

Les ´equations lin´eaires sont des ´equations polynomiales du premier degr´e en leurs inconnues. Un syst`eme d’´equations lin´eaires peut donc s’´ecrire

Ax= b, (3.1) o`u la matrice A et le vecteur b sont connus et o`u x est un vecteur d’inconnues. Nous supposons dans ce chapitre que

— tous les ´el´ements de A, b et x sont des nombres r´eels,

— il y a n ´equations scalaires `a n inconnues scalaires (A est une matrice carr´ee n× n et dimx = dimb = n),

— ces ´equations d´efinissent x uniquement (A est inversible).

Quand A est inversible, la solution de (3.1) est donn´ee math´ematiquement sous forme explicite par x= A−1b. Nous ne sommes pas int´eress´es ici par cette solu-tion explicite, et voulons au contraire calculer num´eriquement x `a partir des valeurs num´eriquement connues de A et de b. Ce probl`eme joue un rˆole central dans tant d’algorithmes qu’il m´erite son propre chapitre. Les syst`emes d’´equations lin´eaires `a plus d’´equations que d’inconnues seront consid´er´es en section 9.2.

Remarque 3.1.Quand A est carr´ee mais singuli`ere (c’est `a dire non inversible), ses colonnes ne forment plus une base de Rn, de sorte que le vecteur Ax ne peut pas prendre une direction arbitraire dans Rn. La direction de b d´eterminera alors si (3.1) a une infinit´e de solutions ou aucune.

Quand b peut ˆetre exprim´e comme une combinaison lin´eaire de colonnes de A, des ´equations sont lin´eairement d´ependantes et il y a un continuum de solutions. Le syst`eme x1+ x2= 1 et 2x1+ 2x2= 2 correspond `a cette situation.

Quand b ne peut pas ˆetre exprim´e comme une combinaison lin´eaire de colonnes de A, les ´equations sont incompatibles et il n’y a aucune solution. Le syst`eme x1+ x2= 1 et x1+ x2= 2 correspond `a cette situation. 

D’excellents livres sur les th`emes de ce chapitre et du chapitre 4 (ainsi que sur de nombreux th`emes d’autres chapitres) sont [80], [49] et [6].

3.2 Exemples

Exemple 3.1. D´etermination d’un ´equilibre statique

Les conditions pour qu’un syst`eme dynamique lin´eaire soit en ´equilibre statique se traduisent par un syst`eme d’´equations lin´eaires. Consid´erons, par exemple, trois ressorts verticaux en s´erie si (i = 1, 2, 3), dont le premier est attach´e au plafond et le dernier `a un objet de masse m. N´egligeons la masse de chaque ressort, et notons kile coefficient de raideur du i-`eme ressort. Nous voulons calculer l’´elongation xi de l’extr´emit´e inf´erieure du ressort i(i = 1, 2, 3) qui r´esulte de l’action de la masse de l’objet quand le syst`eme a atteint son ´equilibre statique. La somme de toutes les forces agissant en un point quelconque est alors nulle. Pourvu que m soit suffisam-ment petite pour que la loi d’´elasticit´e de Hooke s’applique, les ´equations lin´eaires suivantes sont ainsi satisfaites :

mg = k3(x3− x2), (3.2) k3(x2− x3) = k2(x1− x2), (3.3) k2(x2− x1) = k1x1, (3.4) avec g l’acc´el´eration due `a la gravit´e. Ce syst`eme d’´equations peut encore s’´ecrire

  k1+ k2 −k2 0 −k2 k2+ k3 −k3 0 −k3 k3  ·   x1 x2 x3  =   0 0 mg  . (3.5) La matrice du membre de gauche de (3.5) est tridiagonale, car tous ses ´el´ements non nuls sont sur sa diagonale principale et sur les diagonales situ´ees juste au dessus et juste en dessous. Ceci resterait vrai s’il y avait beaucoup plus de ressorts en s´erie, auquel cas la matrice serait aussi creuse, c’est `a dire avec une majorit´e d’´el´ements nuls. Notons qu’un changement de la masse de l’objet ne modifierait que le membre de droite de (3.5). On peut ainsi ˆetre int´eress´e `a la r´esolution de plusieurs syst`emes lin´eaires de mˆeme matrice A.  Exemple 3.2. Interpolation polynomiale.

Supposons la valeur yi d’une quantit´e d’int´erˆet mesur´ee aux instants ti, pour i = 1, 2, 3. Pour interpoler ces donn´ees avec le polynˆome

P(t, x) = a0+ a1t+ a2t2, (3.6) o`u x= (a0, a1, a2)T, il suffit de r´esoudre (3.1) avec

A=     1 t1 t2 1 1 t2 t22 1 t3 t32     et b=     y1 y2 y3     . (3.7)

Voir le chapitre 5 pour plus d’informations sur l’interpolation. 

3.3 Conditionnement

La notion de conditionnement joue un rˆole central dans l’´evaluation de la diffi-cult´e intrins`eque de la r´esolution d’un probl`eme num´erique donn´e ind´ependamment de l’algorithme qui sera employ´e[193, 48]. Elle peut donc ˆetre utilis´ee pour d´etecter des probl`emes pour lesquels il convient d’ˆetre particuli`erement prudent. Nous nous limitons ici au probl`eme du calcul du x solution de (3.1). En g´en´eral, A et b sont imparfaitement connues, pour au moins deux raisons. Premi`erement, le simple fait de convertir un nombre r´eel en sa repr´esentation `a virgule flottante ou de conduire des calculs sur des flottants se traduit presque toujours par des approximations. De plus, les ´el´ements de A et b r´esultent souvent de mesures impr´ecises. Il est donc important de quantifier l’effet que des perturbations sur A et b peuvent avoir sur la solution x.

Remplac¸ons A par A+ δ A et b par b + δ b, et d´efinissonsbx comme la solution du syst`eme perturb´e

(A + δ A)bx= b + δ b. (3.8) La diff´erence entre les solutions du syst`eme perturb´e (3.8) et du syst`eme original (3.1) est

δ x=bx− x. (3.9) Elle satisfait

δ x= A−1[δ b− (δ A)bx]. (3.10) Pourvu que des normes compatibles soient utilis´ees, ceci implique que

||δ x|| 6 ||A−1|| · (||δ b|| + ||δ A|| · ||bx||). (3.11) Divisons les deux cˆot´es de (3.11) par||bx||, et multiplions le cˆot´e droit du r´esultat par ||A||/||A|| pour obtenir

||δ x|| ||bx|| 6||A−1|| · ||A||  ||δ b|| ||A|| · ||bx||+ ||δ A|| ||A||  . (3.12) Le coefficient multiplicatif||A−1|| · ||A|| dans le membre de droite de (3.12) est le conditionnementde A

Il quantifie les cons´equences qu’une erreur sur A ou b peut avoir sur l’erreur sur x. Nous souhaitons qu’il soit aussi petit que possible, pour que la solution soit aussi insensible que possible aux erreurs δ A et δ b.

Remarque 3.2.Quand les erreurs sur b sont n´egligeables, (3.12) devient

||δ x|| ||bx|| 6 (cond A)·  ||δ A|| ||A||  . (3.14)  Remarque 3.3.Quand les erreurs sur A sont n´egligeables,

δ x= A−1δ b, (3.15) de sorte que kδ xk 6 kA−1k · kδ bk. (3.16) Or (3.1) implique que kbk 6 kAk · kxk, (3.17) et (3.16) et (3.17) impliquent que kδ xk · kbk 6 kA−1k · kAk · kδ bk · kxk, (3.18) de sorte que kδ xk kxk 6 (cond A)·  ||δ b|| ||b||  . (3.19)  Puisque

1=||I|| = ||A−1· A|| 6 ||A−1|| · ||A||, (3.20) le conditionnement de A satisfait

cond A> 1. (3.21) Sa valeur d´epend de la norme utilis´ee. Pour la norme spectrale, on a

||A||2= σmax(A), (3.22) o`u σmax(A) est la plus grande valeur singuli`ere de A. Puisque

||A−1||2= σmax(A−1) = 1

σmin(A), (3.23) avec σmin(A) la plus petite valeur singuli`ere de A, le conditionnement de A pour la norme spectrale est le rapport de sa plus grande valeur singuli`ere `a sa plus petite :

cond A=σmax(A)

Plus le conditionnement de A croˆıt, plus (3.1) devient mal conditionn´ee.

Il est utile de comparer cond A avec l’inverse de la pr´ecision de la repr´esentation `a virgule flottante utilis´ee. Pour une repr´esentation en double pr´ecision suivant la norme IEEE 754 (typique des calculs en MATLAB), cette pr´ecision est `a peu pr`es ´egale `a 10−16.

Chercher `a ´evaluer le x solution de (3.1) demande un soin particulier quand cond A n’est pas petit devant 1016.

Remarque 3.4.Bien que ce soit sans doute la pire des m´ethodes pour les ´evaluer num´eriquement, les valeurs singuli`eres de A sont les racines carr´ees des valeurs propres de ATA. (Quand A est sym´etrique, ses valeurs singuli`eres sont donc ´egales aux valeurs absolues de ses valeurs propres.)  Remarque 3.5.A est singuli`ere si et seulement si son d´eterminant est nul. On pour-rait donc penser `a utiliser la valeur de ce d´eterminant comme mesure du condi-tionnement, un petit d´eterminant indiquant que le syst`eme d’´equations est presque singulier. Il est cependant tr`es difficile de v´erifier qu’un nombre `a virgule flottante diff`ere de z´ero de fac¸on significative (penser `a ce qui arrive au d´eterminant de A quand A et b sont multipli´es par un nombre positif grand ou petit, ce qui n’a aucun effet sur la difficult´e du probl`eme). Le conditionnement tel qu’il a ´et´e d´efini a beau-coup plus de sens, car il est invariant par multiplication de A par un scalaire non nul de magnitude quelconque (une cons´equence de la mise `a l’´echelle positive de la norme). Comparer det(10−1In) = 10−navec cond(10−1In) = 1.  Remarque 3.6.La valeur num´erique de cond A d´epend de la norme utilis´ee, mais un probl`eme mal conditionn´e pour une norme le sera aussi pour les autres, de sorte que le choix de la norme est affaire de commodit´e.  Remarque 3.7.Bien que l’´evaluation du conditionnement d’une matrice pour la norme spectrale ne demande qu’un appel `a la fonction MATLAB cond(·), ceci peut en fait demander plus de calculs que la r´esolution de (3.1). L’´evaluation du conditionnement de la mˆeme matrice pour la norme 1 (par un appel `a la fonction cond(·,1)) est moins coˆuteux que pour la norme spectrale, et il existe des algo-rithmes pour estimer son ordre de grandeur `a moindre coˆut [49, 99, 105].  Remarque 3.8.Le concept de conditionnement s’´etend aux matrices rectangulaires, le conditionnement pour la norme spectrale restant alors donn´e par (3.24). On peut ´egalement l’´etendre `a des probl`emes non lin´eaires, voir la section 14.5.2.1. 

3.4 Approches `a ´eviter

Pour r´esoudre num´eriquement un syst`eme d’´equations lin´eaires, l’inversion de matriceest presque toujours `a ´eviter, car elle demande en g´en´eral des calculs inutiles.

`

A moins que A n’ait une structure telle que son inversion soit particuli`erement simple, il faut donc y r´efl´echir `a deux fois avant d’inverser A pour tirer avantage de la solution explicite

x= A−1b. (3.25) La r`egle de Cramer pour la r´esolution de syst`emes d’´equations lin´eaires, qui requiert le calcul de rapports de d´eterminants, est la pire approche possible. Les d´eterminants sont connus pour ˆetre difficiles `a ´evaluer avec pr´ecision, et leur cal-cul est inutilement coˆuteux, mˆeme s’il existe des m´ethodes plus ´economiques que l’expansion selon les cofacteurs.

3.5 Questions sur A

La matrice A a souvent des propri´et´es sp´ecifiques dont on peut tirer avantage en choisissant une m´ethode appropri´ee. Il est donc important de se poser les questions suivantes :

— A et b sont-ils `a ´el´ements r´eels (comme nous le supposons ici) ? — A est-elle carr´ee et inversible (comme nous le supposons ici) ? — A est-elle sym´etrique, c’est `a dire telle que AT= A ?

— A est-elle sym´etrique d´efinie positive (ce qu’on note par A 0) ? Ceci veut dire que A est sym´etrique et telle que

∀v 6= 0,vTAv> 0, (3.26) ce qui implique que toutes ses valeurs propres sont r´eelles et strictement po-sitives.

— Si A est de grande taille, est-elle creuse, c’est `a dire telle que la plupart de ses ´el´ements sont nuls ?

— A est-elle `a diagonale dominante, c’est `a dire telle que la valeur absolue de chacun de ses ´el´ements diagonaux est strictement sup´erieure `a la somme des valeurs absolues de tous les autres ´el´ements de la mˆeme ligne ?

— A est-elle tridiagonale, c’est `a dire telle que seule sa diagonale principale et les diagonales situ´ees juste au dessus et en dessous sont non nulles ? Elle peut alors s’´ecrire

A=             b1 c1 0 ··· ··· 0 a2 b2 c2 0 ... 0 a3 . .. . .. . .. ... .. . 0 . .. . .. . .. 0 .. . . .. . .. b n−1 cn−1 0 ··· ··· 0 an bn             . (3.27)

— A est-elle une matrice de Toeplitz, c’est `a dire telle que tous les ´el´ements de la mˆeme diagonale descendante aient la mˆeme valeur ? Elle peut alors s’´ecrire

A=         h0 h−1 h−2 ··· h−n+1 h1 h0 h−1 h−n+2 .. . . .. . .. . .. ... .. . . .. . .. h −1 hn−1 hn−2 ··· h1 h0         . (3.28)

— A est-elle bien conditionn´ee ? (Voir la section 3.3.)

3.6 M´ethodes directes

Les m´ethodes directes ´evaluent le vecteur x solution de (3.1) en un nombre fini de pas. Elles requi`erent une quantit´e de ressources pr´evisible et peuvent ˆetre rendues tr`es robustes, mais deviennent difficiles `a appliquer sur les probl`emes de tr`es grande taille. Ceci les diff´erencie des m´ethodes it´eratives, consid´er´ees dans la section 3.7, qui visent `a g´en´erer une suite d’approximations de la solution. Certaines m´ethodes it´eratives peuvent traiter des probl`emes avec des millions d’inconnues, comme on en rencontre par exemple lors de la r´esolution d’´equations aux d´eriv´ees partielles.

Remarque 3.9.La distinction entre les m´ethodes directes et it´eratives n’est pas aussi nette qu’il pourrait sembler ; des r´esultats obtenus par des m´ethodes directes peuvent ˆetre am´elior´es par des techniques it´eratives (comme en section 3.6.4), et les m´ethodes it´eratives les plus sophistiqu´ees (pr´esent´ees en section 3.7.2) trouveraient la solution exacte en un nombre fini de pas si les calculs ´etaient conduits de fac¸on

exacte. 

3.6.1 Substitution arri`ere ou avant

La substitution arri`ere ou avant s’applique quand A est triangulaire. C’est un cas moins particulier qu’on pourrait le penser, car plusieurs des m´ethodes pr´esent´ees

plus loin et applicables `a des syst`emes lin´eaires g´en´eriques passent par la r´esolution de syst`emes triangulaires.

La substitution arri`ere s’applique au syst`eme triangulaire sup´erieur

Ux= b, (3.29) o`u U=      u1,1 u1,2 ··· u1,n 0 u2,2 u2,n .. . . .. . .. ... 0 ··· 0 un,n      . (3.30)

Quand U est inversible, tous ses ´el´ements diagonaux sont non nuls et (3.29) peut ˆetre r´esolue inconnue par inconnue en commenc¸ant par la derni`ere

xn= bn/un,n, (3.31) puis en remontant pour obtenir

xn−1= (bn−1− un−1,nxn)/un−1,n−1, (3.32)

et ainsi de suite, avec finalement

x1= (b1− u1,2x2− u1,3x3− ··· − u1,nxn)/u1,1. (3.33) La substitution avant, quant `a elle, s’applique au syst`eme triangulaire inf´erieur

Lx= b, (3.34) o`u L=       l1,1 0 ··· 0 l2,1 l2,2 . .. ... .. . . .. 0 ln,1 ln,2 . . . ln,n       . (3.35)

Elle r´esout aussi (3.34) inconnue par inconnue, mais commence par x1puis descend pour ´evaluer x2et ainsi de suite jusqu’`a ce que la valeur de xnsoit obtenue.

La r´esolution de(3.29) par substitution arri`ere peut ˆetre men´ee `a bien en MAT-LAB via l’instruction x=linsolve(U,b,optsUT), avec optsUT.UT=true, ce qui sp´ecifie que U est une matrice triangulaire sup´erieure. On peut de mˆeme r´esoudre(3.34) par substitution avant via x=linsolve(L,b,optsLT), pourvu que optsLT.LT=true, ce qui sp´ecifie que L est une matrice triangulaire inf´erieure.