• Aucun résultat trouvé

Changement de pivot

Dans le document Méthodes Numériques (Page 101-106)

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

3.5 Changement de pivot

⎢⎢

0.0000 −0.0000 0.0001 −0.0041

−0.0000 0 0.0004 −0.0099 0.0001 0.0004 0 −0.4785

−0.0041 −0.0099 −0.4785 0

⎥⎥

etI−Q˜T= 4.9247·10−11. En utilisant le proc´ed´e de Gram-Schmidt modifi´e, on obtient

I−Q˜TQ =˜ 10−12

⎢⎢

0.0001 −0.0005 0.0069 −0.2853

−0.0005 0 −0.0023 0.0213 0.0069 −0.0023 0.0002 −0.0103

−0.2853 0.0213 −0.0103 0

⎥⎥

et cette foisI−Q˜T= 3.1686·10−13.

Un meilleur r´esultat peut ˆetre obtenu en utilisant la fonctionqr de MATLAB au lieu du Programme 8. On peut utiliser cette fonction aussi bien pour la factori-sation (3.43) que pour sa version r´eduite (3.44). •

3.5 Changement de pivot

Nous avons d´ej`a signal´e que la m´ethode de Gauss ´echoue si un pivot s’annule.

Dans ce cas, on doit recourir `a une technique dite dechangement de pivot qui consiste `a ´echanger des lignes (ou des colonnes) du syst`eme de mani`ere `a ce qu’aucun pivot ne soit nul.

Exemple 3.3 Revenons `a la matrice (3.30) pour laquelle la m´ethode de Gauss donne un pivot nul `a la seconde ´etape. En ´echangeant simplement la deuxi`eme et la troisi`eme ligne, on trouve un pivot non nul et on peut ex´ecuter une ´etape de plus.

Le syst`eme obtenu est ´equivalent au syst`eme de d´epart, et on constate qu’il est d´ej`a triangulaire sup´erieur. En effet,

et les matrices de transformation sont donn´ees par

M1=

D’un point de vue alg´ebrique, ayant effectu´e unepermutationdes lignes de A, l’´egalit´e A=M−11 M−12 U doit ˆetre remplac´ee par A=M−11 P M−12 U o`u P est la matrice de La strat´egie de pivot adopt´ee dans l’Exemple 3.3 peut ˆetre g´en´eralis´ee en re-cherchant, `a chaque ´etapekde l’´elimination, un pivot non nul parmi les termes de la sous-colonne A(k)(k: n, k). On dit alors qu’on effectue un changement de pivot partiel(par ligne).

On peut voir `a partir de (3.27) qu’une grande valeur demik(provenant par exemple d’un petit pivota(kkk)) peut amplifier les erreurs d’arrondi affectant les termes a(kjk). Par cons´equent, afin d’assurer une meilleure stabilit´e, on choisit comme pivot l’´el´ement de la colonne A(k)(k : n, k) le plus grand en module et le changement de pivot partiel est g´en´eralement effectu´e `a chaque ´etape, mˆeme si ce n’est pas strictement n´ecessaire (c’est-`a-dire mˆeme s’il n’y a pas de pivot nul).

Une m´ethode alternative consiste `a rechercher le pivot dans l’ensemble de la sous-matrice A(k)(k:n, k:n), effectuant alors unchangement de pivot total (voir Figure 3.2). Remarquer cependant que le changement de pivot partiel ne requiert qu’un surcoˆut d’environn2tests, alors que le changement de pivot total en n´ecessite environ 2n3/3, ce qui augmente consid´erablement le coˆut de la m´ethode de Gauss.

Exemple 3.4 Consid´erons le syst`eme lin´eaire Ax=bavec A =

10−13 1

1 1

,

000000000000000

Fig. 3.2.Changement de pivot partiel par ligne (`a gauche) et changement de pivot total (`a droite). Les zones les plus sombres de la matrices sont celles o`u est effectu´ee la recherche du pivot

o`ubest choisi de fa¸con `a ce quex= [1,1]T soit la solution exacte. Supposons qu’on travaille en base 2 avec 16 chiffres significatifs. La m´ethode de Gauss sans change-ment de pivot donne xM EG = [0.99920072216264,1]T, alors qu’avec une strat´egie de pivot partiel, la solution obtenue est exacte jusqu’au 16imechiffre. • Analysons comment la strat´egie de pivot partiel affecte la factorisation LU induite par la m´ethode de Gauss. Lors de la premi`ere ´etape de l’´elimination de Gauss avec changement de pivot partiel, apr`es avoir trouv´e l’´el´ement ar1 de module maximum dans la premi`ere colonne, on construit la matrice de permutation ´el´ementaire P1 qui ´echange la premi`ere et la r-i`eme ligne (si r = 1, P1 est la matrice identit´e). On cr´ee ensuite la premi`ere matrice de transformation de Gauss M1 et on pose A(2) = M1P1A(1). On proc`ede de mˆeme avec A(2), en cherchant les nouvelles matrices P2et M2 telles que

A(3)= M2P2A(2) = M2P2M1P1A(1).

Apr`es avoir effectu´e toutes les ´etapes de l’´elimination, la matrice triangulaire sup´erieure U obtenue est donn´ee par

U = A(n)= Mn−1Pn−1· · ·M1P1A(1). (3.48) En posant M = Mn−1Pn−1· · ·M1P1et P = Pn−1· · ·P1, on a U=MA et donc U = (MP−1)PA. On v´erifie facilement que la matrice L = PM−1 est triangu-laire inf´erieure (avec des 1 sur la diagonale), de sorte que la factorisation LU s’´ecrit

PA = LU. (3.49)

On ne doit pas s’inqui´eter de la pr´esence de l’inverse de M, car M−1 = P−11 M−11 · · ·P−1n−1M−1n−1, P−1i = PTi et M−1i = 2In−Mi.

Une fois calcul´ees les matrices L, U et P, la r´esolution du syst`eme initial se ram`ene `a la r´esolution des syst`emes triangulaires Ly= Pbet Ux=y. Re-marquer que les coefficients de la matrice L co¨ıncident avec les multiplicateurs calcul´es par une factorisation LU de la matrice PA sans changement de pivot.

Si on adopte une strat´egie de pivot total, `a la premi`ere ´etape, une fois trouv´e l’´el´ement aqr de plus grand module dans la sous-matrice A(1 : n,1 : n), on doit ´echanger la premi`ere ligne et la premi`ere colonne avec la q-i`eme ligne et la r-i`eme colonne. Ceci conduit `a la matrice P1A(1)Q1, o`u P1 et Q1 sont respectivement des matrices de permutation de lignes et de colonnes.

A ce stade, la matrice M1est donc telle que A(2)= M1P1A(1)Q1. En r´ep´etant ce processus, on obtient `a la derni`ere ´etape

U = A(n)= Mn−1Pn−1· · ·M1P1A(1)Q1· · ·Qn−1, au lieu de (3.48).

Dans le cas d’un changement de pivot total, la factorisation LU devient PAQ = LU

o`u Q = Q1· · ·Qn−1est une matrice de permutation prenant en compte toutes les permutations effectu´ees. Par construction, la matrice L est encore trian-gulaire inf´erieure, et ses ´el´ements ont tous un module inf´erieur ou ´egal `a 1.

Comme pour le changement de pivot partiel, les ´el´ements de L sont les multi-plicateurs produits par la factorisation LU de la matrice PAQ sans changement de pivot.

Le Programme 9 est un code MATLAB de la factorisation LU avec chan-gement de pivot total. Pour une impl´ementation efficace de la factorisation LU avec changement de pivot partiel, nous renvoyons le lecteur `a la fonction lude MATLAB.

Programme 9 - LUpivtot: Factorisation LU avec changement de pivot total function [L,U,P,Q]=LUpivtot(A)

%LUPIVOT Factorisation LU avec changement de pivot total

% [L,U,P,Q]=LUPIVOT(A) retourne une matrice triangulaire inf´erieure L,

% une matrice triangulaire sup´erieure U et des matrices de

% permutation P et Q telles que P*A*Q=L*U.

[n,m]=size(A);

if n ˜= m, error(’Seulement syst`emes carr´es’); end P=eye(n); Q=P; Minv=P; I=eye(n);

for k=1:n-1

[Pk,Qk]=pivot(A,k,n,I); A=Pk*A*Qk;

[Mk,Mkinv]=MGauss(A,k,n);

A=Mk*A; P=Pk*P; Q=Q*Qk;

Minv=Minv*Pk*Mkinv;

end

U=triu(A); L=P*Minv;

Remarque 3.3 La pr´esence de grands pivots ne suffit pas `a elle seule `a ga-rantir la pr´ecision des solutions, comme le montre l’exemple suivant (pris dans [JM92]). Consid´erons le syst`eme lin´eaire Ax=bsuivant

A la premi`ere ´etape, le pivot est le terme diagonal−4000. Pourtant, la m´ e-thode de Gauss appliqu´ee `a cette matrice donne

x= [0.00096365, −0.698496, 0.90042329]T

dont la premi`ere composante diff`ere compl`etement de la premi`ere composante de la solution exactex= [1.9273, −0.698496, 0.9004233]T.

La cause de ce comportement peut ˆetre imput´ee `a la diff´erence des ordres de grandeurs entre les coefficients. Ce probl`eme peut ˆetre corrig´e par unscaling

convenable de la matrice (voir Section 3.11.1).

Remarque 3.4 (cas des matrices sym´etriques) On a d´ej`a not´e que le changement de pivot n’est pas strictement n´ecessaire quand la matrice est sym´etrique d´efinie positive. Le cas d’une matrice sym´etrique mais non d´efinie positive m´erite un commentaire particulier. Dans ce cas en effet, un change-ment de pivot risque de d´etruire la sym´etrie de la matrice. Ceci peut ˆetre

´

evit´e en effectuant un changement de pivot total de la forme PAPT, mˆeme si ce changement de pivot se r´eduit `a un simple r´earrangement des coefficients

diagonaux de A. Ainsi, la pr´esence de petits coefficients sur la diagonale de A peut consid´erablement r´eduire les avantages du changement de pivot. Pour traiter des matrices de ce type, on doit utiliser des algorithmes particuliers (comme la m´ethode de Parlett-Reid [PR70] ou la m´ethode de Aasen [Aas71]).

Nous renvoyons le lecteur `a [GL89] pour la description de ces techniques, et

`

a [JM92] pour le cas des matrices creuses.

Dans le document Méthodes Numériques (Page 101-106)