Élimination de Gauss, factorisation LU et applications

publicité
Analyse numérique matricielle
Élimination de Gauss, factorisation LU
et applications
L3 Mathématiques - Université d’Évry
Printemps 2008
L’objet de ce TD est d’utiliser les méthodes élémentaires de l’analyse
numérique matricielle pour résoudre des systèmes linéaires simples. L’implémentation est faite à l’aide du logiciel Scilab.
1
Rappels de cours
Dans la suite, on considère une matrice carrée A = ( aij )i,j=1,...,n de Mnn (R)
supposée inversible. On cherche à résoudre le système linéaire
Ax = b,
(1)
pour b = (b1 , b2 , . . . , bn )| ∈ Rn donné. Résoudre (1) signifie déterminer
x = ( x 1 , x 2 , . . . , x n )| ∈ Rn .
1.1
Résolution des systèmes triangulaires
Un cas facile à traiter est celui des systèmes triangulaires. Lorsque A est
une matrice triangulaire inférieure, c’est-à-dire que aij = 0 pour tout j > i,
il est très facile de voir que

b1



 x1 = a11 ,
!
i −1
(2)
1


b
−
a
x
,
i
=
2,
.
.
.
,
n.
x
=
i
ij
j
i

∑

aii
j =1
Lorsque l’on a un système triangulaire supérieur, c’est-à-dire lorsque
aij = 0 pour tout i > j, alors l’algorithme de résolution fonctionne par
parcours inverse et devient

bn



 xn = ann ,
!
n
(3)
1
 x =

b
−
a
x
,
i
=
n
−
1,
.
.
.
,
1.
i
i
ij
j

∑

aii
j = i +1
1
A NALYSE NUMÉRIQUE MATRICIELLE
1.2
Triangulation par élimination de Gauss
La résolution des systèmes triangulaires est facile et peu coûteuse numériquement. L’idée est donc de proposer des algorithmes qui transforment
un système linéaire général (1) en un système équivalent
e
e = b,
Ax
(4)
e est triangulaire supérieure, issue de A.
où A
L’algorithme d’élimination de Gauss permet de trianguler la matrice
A. Il comporte n étapes de transformation. On note A(k) l’état de la matrice
e recherchée correspond à A(n) . On
transformée à la ke étape. La matrice A
(
1
)
initialise l’algorithme avec A = A, puis on calcule les étapes k = 2, . . . , n
à l’aide de la relation de récurrence définie pour i = k + 1, . . . , n par

(k)

aik (k)
( k +1)
(k)


a
=
a
−
a ,

ij
 ij
(k) kj
akk
(k)

aik (k)

( k +1)
(k)


= bi − ( k ) b k .
 bi
akk
j = k, . . . , n,
(5)
D’où l’algorithme 1.
Algorithme 1 : Algorithme d’élimination de Gauss
Entrées : A, b
pour k = 1, . . . , n − 1 faire
// On teste si le pivot est nul
si | akk | < ε alors
Afficher un message d’erreur
fin
sinon
//Calcul de A(k)
pour i = k + 1, . . . , n faire
c ← aakkik
bi ← bi − c × b k
aik ← 0
pour j = k + 1, . . . , n faire
aij ← aij − c × akj
fin
fin
fin
fin
e ←A
A
e
b←b
e
e b
Sorties : A,
page 2
É LIMINATION DE G AUSS , FACTORISATION LU ET APPLICATIONS
1.3
Factorisation LU
Supposons que l’on dispose d’une factorisation telle que A = LU ou L
est une matrice triangulaire inférieure et U supérieure. Alors le système
général (1) s’écrit
LUx = b,
(6)
que l’on résout en traitant successivement les systèmes triangulaires
Ly = b,
Ux = y.
(7)
L’algorithme suivant, appelé algorithme de Doolittle, permet d’obtenir
cette factorisation
Algorithme 2 : Algorithme de Doolittle
Entrées : A
L ← Inn
U ← 0nn
pour i = 1, . . . , n − 1 faire
pour j = i, . . . , n faire
i −1
uij ← aij −
∑ lik ukj
k =1
fin
pour j = i + 1, . . . , n faire !
i −1
1
l ji ←
a ji − ∑ l jk uki
uii
k =1
fin
fin
−1
unn ← ann − ∑kn=
1 lnk ukn
Sorties : L, U
2
Applications numériques
Questions
1. Systèmes triangulaires
a) Écrire une fonction [x]=solinf(L,b) qui résout un système triangulaire inférieur Lx = b. Tester sur le système


 
1 0 0
1
2 3 0  x =  8  .
1 4 −1
10
page 3
A NALYSE NUMÉRIQUE MATRICIELLE
b) Écrire une fonction [x]=solsup(U,b) qui résout un système triangulaire supérieur Ux = b. Tester sur le système


 
1 2 3
6
0 4 8 x = 16 .
0 0 5
15
2. Élimination de Gauss
a) Écrire une fonction [At,bt]=trigGauss(A,b) qui renvoie une mae tels que Ax = b ⇔
e et un vecteur b
trice triangulaire supérieure A
e Tester sur le système
e = b.
Ax


 
3 1 2
2
3 2 6  x = 1 .
6 1 −1
4
b) Écrire une fonction [x]=ResolutionGauss(A,b) qui utilise trigGauss
et solsup pour résoudre le système Ax = b dans le cas général. Tester sur le système


 
1 2 3
5
5 2 1 x = 5 .
3 −1 1
6
3. Factorisation LU
a) Écrire une fonction [L,U]=FactLU(A) qui implémente la méthode
de Doolittle pour la factorisation LU. Tester sur la matrice


3 1 2
3 2 6  .
6 1 −1
b) Écrire une fonction [x]=ResolutionLU(A,b) qui utilise FactLU, solsup
et solinf pour résoudre Ax = b. Tester sur le système


 
1 2 3
5
5 2 1 x = 5 .
3 −1 1
6
4. Application à l’inversion d’une matrice
Écrire une fonction [B]=inverse(A) qui calcule l’inverse d’une matrice
A de n × n en résolvant n systèmes linéaires. Tester sur la matrice


1 2 3
5 2 1 .
3 −1 1
page 4
Téléchargement