Académique Documents
Professionnel Documents
Culture Documents
Roland Masson
2019-2020
Chapitre III: Factorisation LU
Objectifs
et
a1,j
..
.
Colj (A) = ai,j
.
..
an,j
Lemmes préliminaires
et n
X
Colj (AB) = bp,j Colp (A).
p=1
Initialisation: A(1) = A
(1)
Etape 1: on suppose que a1,1 6= 0 (premier pivot)
(2)
Etape 2: on suppose que a2,2 6= 0 (deuxième pivot)
Bilan:
U = A(3)
(1) (2)
L(2) L(1) A = U ⇐⇒ A = (L(2) L(1) )−1 U = (L− L− ) U
| {z }
L
avec
1 0 0
(1)
a2,1
(1) (2)
(1) 1 0
L= L− L− = a1,1
(1) (2)
a3,1 a3,2
(1) (2) 1
a1,1 a2,2
Généralisation: Factorisation LU sans pivotage
A ∈ Mn (R) inversible
(k)
Etape k: on suppose que ak,k 6= 0 (k ieme pivot)
(1) (1)
1 0 ... ...
... 0 a ... ... ... ... a1,n
.. 1,1 (2) (2)
0 1 ... . . . . . . . 0
a2,2 ... ... ... a2,n
.. ..
(k) (k)
(k+1) . 0 1 ... ... 0 . 0 ak,k . . . . . . ak,n
A = .. 0 (k) (k)
0 0 `k+1,k 1 0 . ... ak+1,k . . . . . . ak+1,n
. .. .. .. ..
.. .
1 0 . . . . .
0 0 . 0
(k) (k)
0 0 `n,k ... 0 1 0 ... an,k . . . . . . an,n
| {z }| {z }
L(k) A(k)
(k)
ai,k
`i,k = − (k)
, i = k + 1, · · · , n.
ak,k
Généralisation: Factorisation LU sans pivotage
A ∈ Mn (R) inversible
(1) (1)
a1,1 . . . . . . ... ... a1,n
(2) (2)
0 a2,2 . . . ... ... a2,n
.. (k) (k) (k)
. 0 ak,k ak,k+1 ... ak,n
A(k+1) =
(k+1) (k+1)
0 . . . 0 ak+1,k+1 ... ak+1,n
.. .. .. ... ..
. . . .
(k+1) (k+1)
0 ... 0 an,k+1 ... an,n
avec
(k) (k)
(k+1) (k) ai,k ak,j
ai,j = ai,j − (k)
, i, j = k + 1, · · · , n
ak,k
Généralisation: Factorisation LU sans pivotage
A ∈ Mn (R) inversible
avec
(1) (1)
a1,1 . . . . . . ... ... a1,n
(2) (2)
0 a2,2 . . . ... ... a2,n
.. (k) (k) (k)
. 0 ak,k ak,k+1 . . . ak,n
U = A(n) =
(k+1) (k+1)
0 . . . 0 ak+1,k+1 . . . ak+1,n
.. .. .. .. ..
. . . . .
(n)
0 ... 0 0 0 an,n
Généralisation: Factorisation LU sans pivotage
A ∈ Mn (R) inversible
−1
(n−1) (k) (1) (1) (k) (n−1)
L= L ···L ···L = L− · · · L− · · · L−
Initialisation: A(1) = A, L = I
For k = 1, · · · , n − 1 (boucle sur les pivots ak,k
(k)
supposés non nuls)
For i = k + 1, · · · , n
(k)
ai,k
`i,k = (k)
ak,k
For j = k + 1, · · · , n
(k+1) (k) (k)
ai,j = ai,j − `i,k ak,j
End For
End For
End For
U = A(n)
Algorithme: Factorisation LU sans pivotage de
A ∈ Mn (R) inversible
Initialisation: U = A, L = I
For k = 1, · · · , n − 1 (boucle sur les pivots Uk,k supposés non nuls)
For i = k + 1, · · · , n
Ui,k
`i,k =
Uk,k
For j = k + 1, · · · , n
Ui,j ← Ui,j − `i,k Uk,j
End For
End For
End For
U ← triu(U)
Algorithme: Factorisation LU sans pivotage avec stockage
dans A
Proposition:
Soit A ∈ Mn (R), on suppose que les sous matrices diagonales
de dimension k
a1,1 · · · a1,k
L−1 −1
2 L1 = U2 U1 = I ⇒ L2 = L1 et U2 = U1 .
Existence et unicité de la factorisation A = LU sans
pivotage
Corollaire: soit A ∈ Mn (R) SDP, alors elle admet une unique
factorisation LU sans pivotage.
Descente: Ly = b
For i = 1, · · · , n (dans cet ordre)
Xi−1
yi = bi − Li,j yj
j=1
End For
Remontée: Ux = y
For i = n, · · · , 1 (dans cet ordre)
n
1 X
xi = yi − Ui,j xj
Ui,i j=i+1
End For
Complexité de l’algorithme
Remontée: Ux = y
For i = n, · · · , 1 (dans cet ordre)
Pmin(i+q,n)
yi − i+1 Ui,j xj
xi =
Ui,i
End For
(PA)i,j = AP(i),j i, j = 1, · · · , n
i.e. on permute les lignes de A.
n = 3, P = 2, 3, 1 .
x1 x2
x = x2 ⇒ Px = x3
x3 x1
a1,1 a1,2 a1,3
A = a2,1 a2,2 a2,3
a3,1 a3,2 a3,3
a2,1 a2,2 a2,3 a1,2 a1,3 a1,1
⇒ PA = a3,1 a3,2 a3,3 AP = a2,2 a2,3 a2,1
a1,1 a1,2 a1,3 a3,2 a3,3 a3,1
Transpositions
On a
τ2 = I,
donc
τ −1 = τ.
Exemple: n = 3. La permutation P = 2, 1, 3 est la transposition
(1, 2)
Factorisation avec pivotage des colonnes AP = LU
(k)
soient jk = argmaxj=k,··· ,n |ak,j | (choix du pivot) et τ (k) = (k, jk )
On obtient donc
Initialisation: Q = (1, · · · , n)
For k = 1, · · · , n − 1 (boucle sur les pivots)
jk = argmaxj=k,··· ,n |Ak,j | (choix du pivot), transposition: τ = (k, jk )
A ← Aτ = transposition des colonnes k et jk
Q ← τ Q mise à jour de Q i.e. (Q(k) ← Q(jk ) et Q(jk ) ← Q(k))
For i = k + 1, · · · , n
Ai,k
Ai,k ←
Ak,k
For j = k + 1, · · · , n
Ai,j ← Ai,j − Ai,k Ak,j
End For
End For
End For
L est la partie triangulaire inférieure stricte de A plus la diagonale unité.
U est la partie triangulaire supérieure de A (avec la diagonale).
Q = P −1 .
Ax = b ⇐⇒ AP(Qx) = LUy = b avec Qx = y, version
avec stockage dans A
Descente: Lz = b
For i = 1, · · · , n (dans cet ordre)
i−1
X
zi = bi − Ai,j zj
j=1
End For
Remontée: Uy = z
For i = n, · · · , 1 (dans cet ordre)
n
1 X
yi = zi − Ai,j yj
Ai,i j=i+1
End For
(k)
soient ik = argmaxi=k,··· ,n |ai,k | (choix du pivot) et τ (k) = (k, ik )
On obtient donc
A(n) = U = L(n−1) τ (n−1) L(n−2) τ (n−2) · · · τ (k+1) L(k) τ (k) · · · τ (2) L(1) τ (1) A
d’où
L = τ (n−1) · · · τ (2) (L(1) )−1 τ (2) · · · τ (n−1) · · · τ (n−1) (L(n−2) )−1 τ (n−1) (L(n−1) )−1
et
P = τ (n−1) · · · τ (2) τ (1)
Algorithme avec pivotage des lignes PA = LU
Initialisation: U = A, L = I , P = (1, · · · , n)
For k = 1, · · · , n − 1 (boucle sur les pivots)
ik = argmaxi=k,··· ,n |Ui,k | (choix du pivot) transposition: τ = (k, ik )
U ← τ U permutation des lignes de U
L ← τ Lτ permutation des lignes de L hors diagonale
P ← τ P mise à jour de la permutation P
For i = k + 1, · · · , n
Ui,k
Li,k =
Uk,k
For j = k + 1, · · · , n
Ui,k Uk,j
Ui,j ← Ui,j −
Uk,k
End For
End For
End For
U ← triu(U)
Algorithme avec pivotage des lignes PA = LU et avec stockage de L
(sans la diagonale) et de U dans la matrice A.
Initialisation: P = (1, · · · , n)
For k = 1, · · · , n − 1 (boucle sur les pivots)
ik = argmaxi=k,··· ,n |Ai,k | (choix du pivot) transposition: τ = (k, ik )
A ← τ A permutation des lignes k et ik
P ← τ P mise à jour de la permutation
For i = k + 1, · · · , n
Ai,k
Ai,k ←
Ak,k
For j = k + 1, · · · , n
Ai,j ← Ai,j − Ai,k Ak,j
End For
End For
End For
Descente: Ly = Pb
For i = 1, · · · , n (dans cet ordre)
Xi−1
yi = bP(i) − Ai,j yj
j=1
End For
Remontée: Ux = y
For i = n, · · · , 1 (dans cet ordre)
n
1 X
xi = yi − Ai,j xj
Ai,i j=i+1
End For