• Aucun résultat trouvé

M´ ethode d’´ elimination de Gauss et factorisation LU

Dans le document Méthodes Numériques (Page 84-95)

M´ ethodes directes pour la r´ esolution des syst` emes lin´ eaires

3.3 M´ ethode d’´ elimination de Gauss et factorisation LU

La m´ethode d’´elimination de Gauss a pour but de transformer le syst`eme Ax=b en un syst`eme ´equivalent (c’est-`a-dire ayant la mˆeme solution) de la forme Ux=b,o`u U est une matrice triangulaire sup´erieure etbest un second membre convenablement modifi´e. Ce dernier syst`eme peut ˆetre alors r´esolu par une m´ethode de substitution r´etrograde.

Au cours de la transformation, on utilise essentiellement la propri´et´e se-lon laquelle on ne change pas la solution du syst`eme quand on ajoute `a une

´

equation donn´ee une combinaison lin´eaire des autres ´equations.

Consid´erons une matrice inversible A∈Rn×n dont le terme diagonala11 est suppos´e non nul. On pose A(1)= A etb(1)=b. On introduit les de mˆeme pour le membre de droite. On d´efinit alors

a(2)ij =a(1)ij −mi1a(1)1j, i, j= 2, . . . , n,

On peut `a nouveau transformer ce syst`eme de fa¸con `a ´eliminer l’inconnuex2 des lignes 3, . . . , n. En poursuivant ainsi, on obtient une suite finie de syst`emes A(k)x=b(k), 1≤k≤n, (3.26) o`u, pourk≥2, la matrice A(k)est de la forme suivante

A(k)=

Pour ˆetre consistant avec les notations introduites pr´ec´edemment, on note U la matrice triangulaire sup´erieure A(n). Les termesa(kkk)sont appel´espivotset doivent ˆetre ´evidemment non nuls pourk= 1, . . . , n−1.

Afin d’expliciter les formules permettant de passer duk-i`eme syst`eme au k+ 1-i`eme, pourk = 1, . . . , n−1, on suppose que a(kkk) = 0 et on d´efinit les

Exemple 3.1 Utilisons la m´ethode de Gauss pour r´esoudre le syst`eme suivant

(A(1)x=b(1))

qui admet la solution x=(1, 1, 1)T. A la premi`ere ´etape, on calcule les multipli-cateurs m21 = 1/2 etm31 = 1/3, et on soustrait de la deuxi`eme (resp. troisi`eme)

´

equation la premi`ere ligne multipli´ee par m21 (resp. m31). On obtient le syst`eme

´

Si on soustrait `a pr´esent de la troisi`eme ligne la seconde multipli´ee parm32= 1, on obtient le syst`eme triangulaire sup´erieur

(A(3)x=b(3))

a partir duquel on calcule imm´ediatementx3= 1 et, par substitution r´etrograde, les

autres inconnuesx1=x2= 1. •

Remarque 3.2 La matrice de l’Exemple 3.1 est appel´ee matrice de Hilbert d’ordre 3. Dans le cas g´en´eral n×n, ses ´el´ements sont

hij= 1/(i+j−1), i, j= 1, . . . , n. (3.29) Comme nous le verrons plus tard, cette matrice est un exemple type de matrice

ayant un grand conditionnement.

Pour effectuer l’´elimination de Gauss, 2(n−1)n(n+ 1)3 +n(n−1)flops sont n´ecessaires, auxquels il faut ajouter n2 flops pour la r´esolution par “re-mont´ee” du syst`eme triangulaire Ux=b(n). Ainsi, environ (2n3/3+2n2)flops sont n´ecessaires pour r´esoudre le syst`eme lin´eaire en utilisant la m´ethode de Gauss. En ne conservant que le terme dominant, on peut dire que le proc´ed´e d’´elimination de Gauss a un coˆut de 2n3/3flops.

Comme indiqu´e pr´ec´edemment, la m´ethode de Gauss n’est correctement d´ e-finie que si les pivots a(kkk) sont diff´erents de z´ero pourk= 1, . . . , n−1. Mal-heureusement, le fait que les termes diagonaux de A soient non nuls ne suffit pas `a empˆecher l’apparition de pivots nuls durant la phase d’´elimination. Par exemple, la matrice A dans (3.30) est inversible et ses termes diagonaux sont non nuls

Pourtant, on doit interrompre la m´ethode de Gauss `a la seconde ´etape car a(2)22 = 0.

Des conditions plus restrictives sur A sont donc n´ecessaires pour assurer que la m´ethode s’applique bien. Nous verrons `a la Section 3.3.1 que si les mineurs principauxdi de A sont non nuls pouri= 1, . . . , n−1 alors les pivots correspondantsa(iii)sont ´egalement non nuls (rappelons quediest le d´ etermi-nant de la i-i`eme sous-matrice principale Ai, i.e.la sous-matrice constitu´ee des i premi`eres lignes et colonnes de A). La matrice de l’exemple pr´ec´edent ne satisfait pas cette condition puisqued1= 1 et d2= 0.

Il existe des cat´egories de matrices pour lesquelles la m´ethode de Gauss peut ˆ

etre utilis´ee sans risque dans sa forme de base (3.28). Parmi ces matrices, citons les suivantes :

1. les matrices`a diagonale dominante par ligne;

2. les matrices `a diagonale dominante par colonne. Dans ce cas, on peut mˆeme montrer que les multiplicateurs ont un module inf´erieur ou ´egal `a 1 (voir Propri´et´e 3.2) ;

3. les matricessym´etriques d´efinies positives(voir Th´eor`eme 3.6).

Ces r´esultats seront ´etablis rigoureusement dans les prochaines sections.

3.3.1 La m´ethode de Gauss comme m´ethode de factorisation Dans cette section, nous montrons que la m´ethode de Gauss est ´equivalente `a la factorisation de la matrice A sous la forme d’un produit de deux matrices, A=LU, avec U=A(n). Les matrices L et U ne d´ependant que de A (et non du second membre), la mˆeme factorisation peut ˆetre r´eutilis´ee quand on r´ e-sout plusieurs syst`emes lin´eaires ayant la mˆeme matrice A mais des seconds membresbdiff´erents. Le nombre d’op´erations est alors consid´erablement r´ e-duit, puisque l’effort de calcul le plus important, environ 2n3/3flops, est d´edi´e

`

a la proc´edure d’´elimination.

Revenons `a l’Exemple 3.1 concernant la matrice de Hilbert H3. En pra-tique, pour passer de A(1)=H3 `a A(2), on a multipli´e `a la premi`ere ´etape le

De mˆeme, pour effectuer la seconde (et derni`ere) ´etape de la m´ethode de Gauss, on doit multiplier A(2) par la matrice

M2=

D’autre part, les matrices M1et M2´etant triangulaires inf´erieures, leur produit est encore triangulaire inf´erieur ainsi que leur inverse ; on d´eduit donc de (3.31)

A = (M2M1)−1U = LU.

C’est la factorisation de A que l’on souhaitait ´etablir. Cette identit´e peut ˆetre g´en´eralis´ee comme suit. En posant

mk= [0, . . . ,0, mk+1,k, . . . , mn,k]T ∈Rn,

comme lak-i`emematrice de transformation de Gauss, on a (Mk)ipip−(mkeTk)ipip−mikδkp, i, p= 1, . . . , n.

D’autre part, on a d’apr`es (3.28) a(ijk+1)=a(ijk)−mikδkka(kjk)=

n p=1

ip−mikδkp)a(pjk), i, j=k+ 1, . . . , n, ou, de mani`ere ´equivalente,

A(k+1)= MkA(k). (3.32) Par cons´equent, `a la fin du proc´ed´e d’´elimination, on a construit les matrices Mk,k= 1, . . . , n−1, et la matrice U telles que

Mn−1Mn−2. . .M1A = U.

Les matrices Mksont des matrices triangulaires inf´erieures dont les coefficients diagonaux valent 1 et dont l’inverse est donn´e par

M−1k = 2In−Mk= In+mkeTk. (3.33)

Remarquons que, d’apr`es (3.34), les ´el´ements sous-diagonaux de L sont les multiplicateurs mik g´en´er´es par la m´ethode de Gauss, tandis que les termes diagonaux sont ´egaux `a 1.

Une fois calcul´ees les matrices L et U, r´esoudre le syst`eme lin´eaire consiste simplement `a r´esoudre successivement les deux syst`emes triangulaires

Ly=b, Ux=y.

Le coˆut de la factorisation est ´evidemment le mˆeme que celui de la m´ethode de Gauss.

Le r´esultat suivant ´etablit un lien entre les mineurs principaux d’une ma-trice et sa factorisation LU induite par la m´ethode de Gauss.

Th´eor`eme 3.4 Soit A∈Rn×n. La factorisation LU deA avec lii = 1 pour i= 1, . . . , nexiste et est unique si et seulement si les sous-matrices principales Ai de Ad’ordrei= 1, . . . , n−1 sont inversibles.

D´emonstration.Nous pourrions montrer l’existence de la factorisation LU en suivant les ´etapes de la m´ethode de Gauss. Nous pr´ef´erons adopter ici une autre approche que nous r´eutiliserons dans les prochaines sections et qui nous permet de prouver en mˆeme temps l’existence et l’unicit´e.

Supposons les sous-matrices principales Aide A inversibles pouri= 1, . . . , n−1 et montrons par r´ecurrence sur il’existence et l’unicit´e de la factorisation LU de A(= An) aveclii= 1 pouri= 1, . . . , n.

La propri´et´e est ´evidemment vraie sii= 1. Montrons que s’il existe une unique factorisation LU de Ai−1 de la forme Ai−1= L(i−1)U(i−1)aveclkk(i−1)= 1 pourk= et cherchons une factorisation de Aide la forme

⎡ produit de ces deux matrices et en identifiant par blocs les ´el´ements de Ai, on en d´eduit que les vecteursletusont les solutions des syst`emes lin´eaires L(i−1)u=c, lTU(i−1)=dT.

Or, 0= d´et(Ai−1) = d´et(L(i−1))d´et(U(i−1)), les matrices L(i−1) et U(i−1) sont donc inversibles. Par cons´equent, uetlexistent et sont uniques.

Ainsi, il existe une unique factorisation de Ai, et uii est l’unique solution de l’´equation uii= aii−lTu. Ce qui ach`eve la preuve par r´ecurrence.

Il reste maintenant `a prouver que si la factorisation existe et est unique alors les n−1 premi`eres sous-matrices principales de A sont inversibles. Nous distinguerons les cas o`u A est singuli`ere et o`u A est inversible.

Commen¸cons par le second cas, et supposons l’existence et l’unicit´e de la fac-torisation LU de A avec lii = 1 pour i = 1, . . . , n. Alors, d’apr`es (3.35), on a Ai= L(i)U(i)pouri= 1, . . . , n, et donc

d´et(Ai) = d´et(L(i))d´et(U(i)) = d´et(U(i)) =u11u22. . . uii. (3.36) En prenant i = n et en utilisant le fait que A est inversible, on en d´eduit que u11u22. . . unn= 0, et donc d´et(Ai) =u11u22. . . uii= 0 pouri= 1, . . . , n−1.

Consid´erons maintenant le cas o`u A est une matrice singuli`ere et supposons qu’au moins un terme diagonal de U soit ´egal `a z´ero. Notonsukk le terme nul de U dont l’indicek est le plus petit. D’apr`es (3.35), la factorisation peut ˆetre effectu´ee sans probl`eme jusqu’`a lak+ 1-i`eme ´etape. A partir de cette ´etape, la matrice U(k)

´

etant singuli`ere, on perd l’existence et l’unicit´e du vecteurlT. On perd donc aussi l’unicit´e de la factorisation. Afin que ceci ne se produise pas avant la factorisation compl`ete de la matrice A, les termesukkdoivent ˆetre tous non nuls jusqu’`a l’indice k = n−1 inclus, et donc, d’apr`es (3.36), toutes les sous-matrices principales Ak doivent ˆetre inversibles pourk= 1, . . . , n−1. 3

D’apr`es le th´eor`eme pr´ec´edent, si une sous-matrice Ai,i = 1, . . . , n−1, est singuli`ere, alors la factorisation peut ne pas exister ou ne pas ˆetre unique (voir Exercice 8).

Dans le cas o`u la factorisation LU est unique, notons que, puisque d´et(A) = d´et(LU) = d´et(L)d´et(U) = d´et(U), le d´eterminant de A est donn´e par

d´et(A) =u11· · ·unn.

Indiquons la propri´et´e suivante (dont la preuve se trouve par exemple dans [GL89] ou [Hig96]) :

Propri´et´e 3.2 SiAest une matrice `a diagonale dominante par ligne ou par colonne, alors la factorisation LU deAexiste et est unique. En particulier, si A est `a diagonale dominante par colonne alors|lij| ≤1 ∀i, j.

Dans la preuve du Th´eor`eme 3.4, nous avons exploit´e le fait que les termes diagonaux de L ´etaient ´egaux `a 1. Nous aurions pu, de mani`ere analogue, fixer

`

a 1 les termes diagonaux de la matrice triangulaire sup´erieure U, obtenant alors une variante de la m´ethode de Gauss. Nous consid´ererons cette variante

`

a la Section 3.3.4.

La libert´e d’imposer les valeurs des termes diagonaux de L ou de U im-plique que plusieurs factorisations LU existent, chacune pouvant ˆetre d´eduite de l’autre par multiplication par une matrice diagonale convenable (voir Sec-tion 3.4.1).

3.3.2 Effets des erreurs d’arrondi

Si les erreurs d’arrondi sont prises en compte, la factorisation induite par la m´ethode de Gauss conduit `a deux matrices, L etU, telles que LU = A + δA, o`uδA est une matrice de perturbation. Une estimation de cette perturbation est donn´ee par

|δA| ≤ nu

1−nu|L| |U|, (3.37) o`u u est l’unit´e d’arrondi (voir [Hig89] pour la preuve de ce r´esultat). On voit que la pr´esence de petits pivots peut rendre tr`es grand le second membre de l’in´egalit´e (3.37), conduisant alors `a un mauvais contrˆole de la matrice de perturbationδA. Il serait donc int´eressant de trouver des estimations du type

|δA| ≤g(u)|A|,

o`ug(u) est une fonction deu`a d´eterminer. Par exemple, supposons queL et U aient des termes positifs. On obtient alors, puisque |L| |U|=|LU|,

|L| |U|=|LU|=|A +δA| ≤ |A|+|δA| ≤ |A|+ nu

1−nu|L| |U|, (3.38)

d’o`u on d´eduit l’estimation voulue avecg(u) =nu/(1−2nu).

La strat´egie du pivot, examin´ee `a la Section 3.5, permet de maˆıtriser la taille des pivots et rend possible l’obtention d’estimations du type (3.38) pour toute matrice.

3.3.3 Impl´ementation de la factorisation LU

La matrice L ´etant triangulaire inf´erieure avec des 1 sur la diagonale et U ´etant triangulaire sup´erieure, il est possible (et commode) de stocker directement la factorisation LU dans l’emplacement m´emoire occup´e par la matrice A.

Plus pr´ecis´ement, U est stock´ee dans la partie triangulaire sup´erieure de A (y compris la diagonale), et L occupe la partie triangulaire inf´erieure stricte (il est inutile de stocker les ´el´ements diagonaux de L puisqu’on saita priori qu’ils valent 1).

Le code MATLAB de l’algorithme est propos´e dans le Programme 4. La factorisation LU est stock´ee directement `a la place de la matrice A.

Programme 4 - lukji: Factorisation LU de la matrice A, versionkji function [A]=lukji(A)

% LUKJI Factorisation LU de la matrice A dans la version kji

% Y=LUKJI(A): U est stock´e dans la partie triangulaire sup´erieure

% de Y et L est stock´e dans la partie triangulaire inf´erieure

% stricte de Y.

[n,m]=size(A);

if n ˜= m, error(’Seulement les syst`emes carr´es’); end for k=1:n-1

if A(k,k)==0; error(’Pivot nul’); end A(k+1:n,k)=A(k+1:n,k)/A(k,k);

for j=k+1:n

i=[k+1:n]; A(i,j)=A(i,j)-A(i,k)*A(k,j);

end end return

On appelle cette impl´ementation de l’algorithme de factorisationversion kji, `a cause de l’ordre dans lequel les boucles sont ex´ecut´ees. On l’appelle

´

egalement SAXP Y −kji car l’op´eration de base de l’algorithme consiste `a effectuer le produit d’un scalaire par un vecteur puis une addition avec un autre vecteur (SAXP Y est une formule consacr´ee par l’usage ; elle provient de “ScalaireAmultipli´e par vecteur X PlusY”).

La factorisation peut naturellement ˆetre effectu´ee dans un ordre diff´erent.

Quand la boucle sur l’indiceipr´ec`ede celle surj, l’algorithme est ditorient´e ligne. Dans le cas contraire, on dit qu’il est orient´e colonne. Comme d’habi-tude, cette terminologie provient du fait que la matrice est lue par lignes ou par colonnes.

Un exemple de factorisation LU enversionjkiet orient´e colonne est donn´e dans le Programme 5. Cette version est appel´eeGAXP Y−jki, car l’op´eration de base de cette impl´ementation est le produit matrice-vecteur (GAXP Y provenant de “sAXP Y G´en´eralis´e”, ce qu’il faut interpr´eter comme “SAXP Y dans lequel le produit par un scalaire est remplac´e par le produit par une matrice”; pour plus de pr´ecisions voir [DGK84]).

Programme 5 - lujki: Factorisation LU de la matrice A, versionjki function [A]=lujki(A)

% LUJKI Factorisation LU de la matrice A dans la version jki

% Y=LUJKI(A): U est stock´e dans la partie triangulaire sup´erieure

% de Y et L est stock´e dans la partie triangulaire inf´erieure

% stricte de Y.

[n,m]=size(A);

if n ˜= m, error(’Seulement les syst`emes carr´es’); end for j=1:n

if A(j,j)==0; error(’Pivot nul’); end for k=1:j-1

i=[k+1:n]; A(i,j)=A(i,j)-A(i,k)*A(k,j);

end

i=[j+1:n]; A(i,j)=A(i,j)/A(j,j);

end return

3.3.4 Formes compactes de factorisation

La factorisation dite de Crout et celle dite de Doolittle constituent des va-riantes de la factorisation LU. On les appelle aussi formes compactes de la m´ethode d’´elimination de Gauss car elles n´ecessitent moins de r´esultats inter-m´ediaires que la m´ethode de Gauss classique pour produire une factorisation de A.

Calculer la factorisation de A est formellement ´equivalent `a r´esoudre le syst`eme lin´eaire suivant den2´equations

aij =

min(i,j) r=1

lirurj, (3.39)

les inconnues ´etant lesn2+ncoefficients des matrices triangulaires L et U. Si on donne arbitrairement la valeur 1 `ancoefficients, par exemple les ´el´ements diagonaux de L ou de U, on aboutit respectivement aux m´ethodes de Doolittle et de Crout, qui constituent une mani`ere efficace de r´esoudre le syst`eme (3.39).

Supposons que lesk−1 premi`eres colonnes de L et U soient disponibles et fixonslkk= 1 (m´ethode de Doolittle). La relation (3.39) donne alors

akj=

Remarquer que ces ´equations peuvent ˆetre r´esolues de mani`ere s´equentielle par rapport aux inconnues (encadr´ees) ukj etlik.

La m´ethode compacte de Doolittle fournit d’abord lak-i`eme ligne de U, puis la k-i`eme colonne de L, selon les formules : pourk= 1, . . . , n

La factorisation de Crout s’obtient de fa¸con similaire, en calculant d’abord la k-i`eme colonne de L, puis lak-i`eme ligne de U : pourk= 1, . . . , n

o`u on a pos´eukk= 1. Selon les notations introduites pr´ec´edemment, la facto-risation de Doolittle n’est autre que la version ijkde la m´ethode de Gauss.

Nous proposons dans le Programme 6 une impl´ementation du sch´ema de Doolittle. Remarquer que l’op´eration principale est `a pr´esent un produit sca-laire, le sch´ema est donc aussi connu sous le nom de versionDOT −ijkde la m´ethode de Gauss (dot d´esignant en anglais lepoint du produit scalaire).

Programme 6 - luijk: Factorisation LU de la matrice A, versionijk function [A]=luijk(A)

% LUIJK Factorisation LU de la matrice A dans la version ijk

% Y=LUIJK(A): U est stock´e dans la partie triangulaire sup´erieure

% de Y et L est stock´e dans la partie triangulaire inf´erieure

% stricte de Y.

[n,m]=size(A);

if n ˜= m, error(’Seulement les syst`emes carr´es’); end for i=1:n

for j=2:i

if A(j,j)==0; error(’Pivot nul’); end A(i,j-1)=A(i,j-1)/A(j-1,j-1);

k=[1:j-1]; A(i,j)=A(i,j)-A(i,k)*A(k,j);

end k=[1:i-1];

for j=i+1:n

A(i,j)=A(i,j)-A(i,k)*A(k,j);

end end return

Dans le document Méthodes Numériques (Page 84-95)