Fénelon Sainte-Marie 2016-2017
MP*/PC-PC*/PSI* [ 1 - 7 ] Marc Lichtenberg
TD – Algèbre linéaire (Partie II)
Polynôme caractéristique.
Décompositions LU et de Cholesky.
Produit matriciel.
Introductionetobjectifs
Dans cette seconde partie du TD consacré à l’algèbre linéaire, nous abordons dans un premier
temps la méthode de Leverrier-Faddeev-Souriau pour le calcul efficace des coefficients du
polynôme caractéristique d’une matrice carrée. Nous introduisons ensuite le thème de la
décomposition (ou factorisation) matricielle à travers les décompositions LU et de Cholesky.
Enfin, nous présentons la méthode de Strassen pour effectuer efficacement le produit de deux
matrices carrées dont l’ordre est une puissance de 2.
Polynômecaractéristique.
LaméthodedeLEVERRIERFADDEEVSOURIAU.
Partiemathématique
On considère une matrice A dans
(
)
n
M
K
=
\K ou ^ et n est un entier naturel non nul.
On en cherche le polynôme caractéristique
() ( )
A0
det I A nk
nk
k
XX aX
χ
=
=−=
avec 1
n
a=.
L’idée centrale de la méthode présentée ici consiste à utiliser la matrice complémentaire de
IA
n
X que nous notons
()
0
CC
nkk
k
XX
=
= (pour rappel,
(
)
CX est la transposée de la
comatrice de I A
n
X :
(
)
(
)
CcomIA
tn
XX=− et les Ck sont des matrices de
()
n
M
K).
1. Que peut-on dire du produit
()
(
)
IA.C
n
XX ?
2. En convenant que 1
C0
=, montrer que
()
1
00
CAC XI
nn
kk
kk kn
kk
Xa
==
⎛⎞
−=
⎜⎟
⎝⎠
∑∑
puis en
déduire une relation entre 1
Ck, Ck et k
a.
3. Montrer que
(
)
(
)
(
)
A'TrCXX
χ
= puis en déduire :
a
b
(
)
(
)
1
0; 1 ,Tr C 1
kk
kn ka
+
∀∈ = + .
TD – Algèbre linéaire (Partie II)
Polynôme caractéristique. Décompositions LU et de Cholesky. Produit matriciel.
Fénelon Sainte-Marie 2016-2017
MP*/PC-PC*/PSI* [ 2 - 7 ] Marc Lichtenberg
4. Montrer que
ab
(
)
Tr AC
0; 1 , k
k
kna nk
∀∈ − =
.
Partieinformatique
On a 1
n
a= et C0
n=. On va calculer 12 0
, ,...,
nn
aa a
−− à l’aide de 12 0
C , C ,..., C
nn−− grâce à :
()
11
CAC I
Tr AC
kkkn
k
k
a
ank
++
=+
=−
pour k allant de 1n à 0.
ExerciceN°1Miseenœuvre
Ecrire une fonction Python PolyCar recevant en argument un array A dont on vérifiera
qu’il correspond à une matrice carrée et qui renvoie une liste L contenant, dans cet ordre, les
coefficients 01 1
, ,..., ,
nn
aa a a
.
On utilisera des fonctions du module linalg de la bibliothèque numpy.
On testera le programme avec les matrices suivantes :
12
A34
⎛⎞
=⎜⎟
⎝⎠
avec :
(
)
2
A52XX X
χ
=
−−
.
13118
01723
A002 5
000 2
−−
⎛⎞
⎜⎟
⎜⎟
=⎜⎟
⎜⎟
⎝⎠
avec :
(
)
43 2
A613124XX X X X
χ
=
−+ −+
.
10 0
0
A
00 0
⎛⎞
⎜⎟
⎜⎟
=⎜⎟
⎜⎟
⎝⎠
"
##
## #
"
avec
(
)
1
Ann
XXX
χ
=− .
11
11
A
⎛⎞
⎜⎟
=⎜⎟
⎜⎟
⎝⎠
"
#%#
"
avec
(
)
1
Ann
XXnX
χ
=− .
ExerciceN°2Complexité
Evaluer la complexité de la méthode précédente (on évaluera séparément le nombre
d’additions, le nombre de multiplications et le nombre de divisions).
TD – Algèbre linéaire (Partie II)
Polynôme caractéristique. Décompositions LU et de Cholesky. Produit matriciel.
Fénelon Sainte-Marie 2016-2017
MP*/PC-PC*/PSI* [ 3 - 7 ] Marc Lichtenberg
ExerciceN°3Déterminant
La méthode précédente permet de calculer très économiquement le déterminant d’une matrice
carrée.
A partir de la fonction PolyCar, écrire une fonction Python DetLFS recevant en argument
un array A dont on vérifiera qu’il correspond à une matrice carrée et qui en renvoie le
déterminant.
DécompositionLU
On considère une matrice
(
)
Mn
GLK avec
=
\K ou ^.
On rappelle qu’une telle matrice admet une décomposition LU si, et seulement si, les 1n
mineurs diagonaux principaux 123, 2 1
, , ..., et
nn
ΔΔΔ Δ Δ sont non nuls. La décomposition est
alors unique.
Validationdel’existenced’unedécompositionLU
ExerciceN°4
Ecrire une fonction Python ValidLU qui recevra comme arguments un tableau numpy M et
renverra un booléen selon que la matrice M, supposée inversible, admet ou non une
décomposition LU.
La fonction devra vérifier que les mineurs diagonaux principaux 123, 2 1
, , ..., et
nn−−
Δ
ΔΔ Δ Δ
sont non nuls.
Pour les calculs des déterminants, on utilisera la fonction det du module numpy.linalg.
DécompositionLUparidentification
On rappelle que dans ce cas, on construit alternativement les lignes et les colonnes des
matrices L et U à partir des formules :
Pour tout i dans
ab
1;n :
1
1
i
ij ij ik kj
k
um lu
=
=−
puis 1
1
1i
ji ji jk ki
k
ii
lmlu
u
=
⎛⎞
=−
⎜⎟
⎝⎠
TD – Algèbre linéaire (Partie II)
Polynôme caractéristique. Décompositions LU et de Cholesky. Produit matriciel.
Fénelon Sainte-Marie 2016-2017
MP*/PC-PC*/PSI* [ 4 - 7 ] Marc Lichtenberg
ExerciceN°5‐Miseenœuvre.
Ecrire une fonction Python DecompoLU_Ident qui recevra comme arguments un tableau
numpy M et renverra un tuple de deux tableaux L et U correspondant à la décomposition LU
de la matrice M, supposée inversible.
La fonction devra vérifier que la matrice M est inversible. Si la matrice M n’est pas carrée ou
inversible, la fonction devra renvoyer un message adapté.
On validera le code à l’aide des situations suivantes :
311
M012
111
⎛⎞
⎜⎟
=⎜⎟
⎜⎟
⎝⎠
qui donne :
100
L010
1/3 2/3 1
⎛⎞
⎜⎟
=⎜⎟
⎜⎟
⎝⎠
et
31 1
U01 2
00 2/3
⎛⎞
⎜⎟
=⎜⎟
⎜⎟
⎝⎠
21 11
0122
M43 3 3
23 63
⎛⎞
⎜⎟
⎜⎟
=⎜⎟
−−
⎜⎟
⎝⎠
qui donne :
10 00
01 00
L2110
1211
⎛⎞
⎜⎟
⎜⎟
=⎜⎟
⎜⎟
−−
⎝⎠
et
21 11
0122
U00 1 3
00 0 3
⎛⎞
⎜⎟
⎜⎟
=⎜⎟
⎜⎟
⎝⎠
FactorisationdeCholesky
Présentation
Une matrice symétrique définie positive (SDP) M peut être écrite comme produit d’une
matrice triangulaire inférieure (L, cette lettre correspondant à l’anglais « lower ») et de sa
transposée ( L
t, qui est donc triangulaire supérieure) : M L L
t
=
×. C’est la factorisation de
Cholesky.
En imposant aux termes diagonaux d’être strictement positifs (ils sont tous non nuls puisque
le déterminant de M, qui est strictement positif (M étant SDP), est le carré du produit des
coefficients diagonaux de L (ou de t
L
puisqu’ils sont identiques)), cette factorisation est
unique. La matrice L (ou sa transposée) alors obtenue peut être considérée comme une racine
carrée de la matrice M.
TD – Algèbre linéaire (Partie II)
Polynôme caractéristique. Décompositions LU et de Cholesky. Produit matriciel.
Fénelon Sainte-Marie 2016-2017
MP*/PC-PC*/PSI* [ 5 - 7 ] Marc Lichtenberg
Pour montrer que
(
)
Mn
\
M
est SDP, on peut :
Calculer les valeurs propres de M et montrer qu’elles sont toutes strictement positives.
On prendra garde aux situations où toutes ou partie de ces valeurs propres sont
proches de 0, les approximations de calcul pouvant conclure à la nullité erronée d’une
ou plusieurs valeurs propres non nulles.
Utiliser le critère de Sylvester :
M est SDP
a
b
1; , detM 0
pp
pn⇔∀ ∈ Δ = >
(
)
()
ab
2
,1;
Mpij
ij p
m
=
Cette méthode offre l’avantage de pouvoir être mise en œuvre facilement.
ExerciceN°6Miseenœuvre
Ecrire une fonction Cholesky qui reçoit en argument une matrice M de
(
)
n\
M
et qui :
Vérifie que la matrice M est bien SDP.
Renvoie la matrice triangulaire inférieure
(
)
()
a
b
2
,1;
ij ij n
Ll
= telle que :
t
M
LL
=
× et
a
b
1; , 0
kk
knl
∈>
On calcule les coefficients de L colonne par colonne et on vérifiera que l’on a, pour toute
matrice
()
n
M\
M
SDP d’ordre supérieur ou égal à 2 :
11 11
lm= et
ab
1
111
2; , i
im
inl
l
∀∈ = .
Puis, pour tout entier
ab
2;kn :
1
22 2 2
12 1 1
... k
kk kk k k kk kk k j
j
lmll l m l
=
=−=−
ab
()
1
11 2 2 1 1 1
11
1; , ... k
ik ik k i k i kk ik ik k j i j
j
kk kk
ik nl mllll ll m ll
ll
−−
=
⎛⎞
∀∈ + = − − =
⎜⎟
⎝⎠
On testera la fonction avec les matrices suivantes :
21000
12 10 0
01210
00 12 1
000 12
⎛⎞
⎜⎟
−−
⎜⎟
⎜⎟
−−
⎜⎟
−−
⎜⎟
⎜⎟
⎝⎠
411
141
114
⎛⎞
⎜⎟
⎜⎟
⎜⎟
⎝⎠
123
456
789
⎛⎞
⎜⎟
⎜⎟
⎜⎟
⎝⎠
1111
1222
1233
1234
⎛⎞
⎜⎟
⎜⎟
⎜⎟
⎜⎟
⎝⎠
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !