Vous êtes sur la page 1sur 3

Dcomposition LU e Une matrice A carre inversible dordre n a une dcomposition LU si on peut lcrire e e e sous la forme A = LU o` L est une matrice

triangulaire infrieure (L comme lower) et U u e une matrice triangulaire suprieure (U comme upper). Si on impose de plus que L (ou U ) e a des 1 sur la diagonale, alors la dcomposition est unique, et on peut facilement obtenir e L et U par lalgorithme suivant qui a un temps de calcul en (n3 ) puisquil contient trois boucles imbriques. e for i:=1 to n do for j:=1 to n do begin s:=a[i,j]; for k:=1 to min(i,j)-1 do s:=s-l[i,k]*u[k,j]; if i>j then l[i,j]:=s/u[j,j] else u[i,j]:=s end Pour n = 3 cet algorithme va calculer dans lordre : u1,1 = a1,1 u1,2 = a1,2 u1,3 = a1,3 a2,1 l2,1 = u2,2 = a2,2 l2,1 u1,2 u2,3 = a2,3 l2,1 u1,3 u1,1 a3,1 a3,2 l3,1 u1,2 l3,1 = l3,2 = u3,3 = a3,3 l3,1 u1,3 l3,2 u2,3 u1,1 u2,2 qui est bien lunique solution du syst`me de neuf quations : e e a1,1 = u1,1 a1,2 = u1,2 a1,3 = u1,3 a2,1 = l2,1 u1,1 a2,2 = u2,2 + l2,1 u1,2 a2,3 = u2,3 + l2,1 u1,3 a3,1 = l3,1 u1,1 a3,2 = l3,2 u2,2 + l3,1 u1,2 a3,3 = u3,3 + l3,1 u1,3 + l3,2 u2,3
n

En fait on a ai,j =
k=1 min(i,j)

li,k uk,j . Mais comme L est triangulaire infrieure, li,k est nul e

si k > i. De mme, comme U est triangulaire suprieure, uk,j est nul si k > j. Donc e e ai,j =
k=1 j j1

li,k uk,j . li,k uk,j = li,j uj,j +


k=1 k=1

Si i > j on obtient ai,j = de la somme. Donc

li,k uk,j en sortant le dernier terme

li,j = De mme si i <= j on obtient e ui,j = qui se simplie car li,i = 1 :

ai,j

j1 k=1 li,k uk,j

uj,j
i1 k=1 li,k uk,j

ai,j

li,i
i1

ui,j = ai,j 1

li,k uk,j
k=1

Si A est inversible et poss`de une dcomposition LU , alors puisque le dterminant dune e e e matrice triangulaire est gal au produit de ses termes diagonaux, on a det L = 1 et 0 = e n det A = det U = i=1 ui,i . Donc tous les ui,i sont non nuls. Donc lalgorithme prcdent ne e e fait pas de division par 0 et trouve bien L et U . Cela prouve donc aussi que la dcomposition e LU dune matrice inversible est unique quand elle existe. On peut remarquer que pour calculer li,j ou ui,j on utilise ai,j et des li,k pour k < j ou des uk,j pour k < i cest-`-dire des coecients de L et U qui ont des indices plus petits a et qui ont dj` t calculs lors dune itration prcdente de la boucle sur i ou sur j. eaee e e e e On peut ranger les coecients intressants de L et U dans A. On pourra reconstituer e L en rajoutant tous les zros au dessus de la diagonale et les uns sur la diagonale, et U en e rajoutant tous les zros au dessous de la diagonale. Lalgorithme devient : e for i:=1 to n do for j:=1 to n do begin s:=a[i,j]; for k:=1 to min(i,j)-1 do s:=s-l[i,k]*u[k,j]; if i>j then s:=s/u[j,j]; a[i,j]:=s end rsolution dun syst`me dquations linaires e e e e Si A est une matrice inversible, alors AX = B est quivalent a X = A1 B. Donc, e ` pour calculer A1 B, il nest pas ncessaire de calculer eectivement la matrice A1 puis e de la multiplier par le vecteur B, mais il sut de rsoudre le syst`me dquations AX = B. e e e 1 Autrement dit, on peut considrer que A B est seulement une faon de noter la solution e c du syst`me AX = B. e Si A = LU , alors A1 = U 1 L1 et donc la solution du syst`me AX = B est e X = A1 B = U 1 (L1 B) qui peut donc sobtenir en deux tapes, en calculant dabord e Y = L1 B, la solution du syst`me LY = B, puis X = U 1 Y , la solution du syst`me e e UX = Y . Autrement dit, si on a une dcomposition LU de A, on peut rsoudre un syst`me e e e dquations ayant A pour matrice, en rsolvant dabord un syst`me triangulaire infrieur, e e e e puis un syst`me triangulaire suprieur dont le membre droit est la solution du premier e e syst`me. e Cela peut se faire en utilisant lalgorithme suivant qui a un temps de calcul en (n 2 ) puisquil contient deux boucles imbriques. e for i:=1 to n do begin s:=b[i]; for j:=1 to i-1 do s:=s-l[i,j]*y[j]; y[i]:=s end; for i:=n downto 1 do begin 2

s:=y[i]; for j:=i+1 to n do s:=s-u[i,j]*x[j]; x[i]:=s/u[i,i] end On peut remarquer que b[i] nest plus utilis une fois que y[i] est calcul. De mme, e e e y[i] nest plus utilis une fois que x[i] est calcul. On peut donc ranger ces trois nombres e e dans la mme variable. Au lieu dutiliser trois tableaux B, Y et X, on en utilisera un seul e qui contient initialement B et qui se transforme en Y puis en X. De plus les deux matrices triangulaires L et U peuvent tre ranges dans la mme matrice carre A. Lalgorithme e e e e prcdent devient donc : e e for i:=1 to n do begin s:=b[i]; for j:=1 to i-1 do s:=s-a[i,j]*b[j]; b[i]:=s end; for i:=n downto 1 do begin s:=b[i]; for j:=i+1 to n do s:=s-a[i,j]*b[j]; b[i]:=s/a[i,i] end Si on a plusieurs syst`mes dquations a rsoudre avec la mme matrice et des membres e e ` e e droits dirents, on peut faire une seule fois la dcomposition LU qui prend un temps en e e n3 et plusieurs fois la rsolution des deux syst`mes triangulaires qui prend un temps en e e n2 . permutations de lignes Pour amliorer la prcision des calculs, on permute les quations du syst`me de e e e e mani`re a choisir le pivot de plus grande valeur absolue possible dans une colonne. On ne e ` fait donc pas une dcomposition A = LU mais A = P LU o` P est une matrice de permue u 1 1 1 tation. La solution du syst`me est alors X = U L P B. Il sut donc de remplacer e 1 B par P B avant de rsoudre les deux syst`mes triangulaires. Autrement dit, pendant e e la dcomposition LU de A, on note comment on a permut les lignes de A, pour pouvoir e e appliquer plus tard la mme permutation aux composantes de B. e

Vous aimerez peut-être aussi