2Calcul d’un déterminant [LBQ405]
Utiliser les fonctions de l’exercice sur le pivot de Gauss pour rédiger la fonction
determinant(A) qui retourne le déterminant de la matrice A.
3Valeur propre de plus grand module [TJC898]
Soit Aune matrice carrée d’ordre n. La méthode de la puissance permet d’approcher la
valeur propre de plus grand module λsi elle est unique. La méthode consiste à construire,
à partir d’un vecteur initial V0, la suite des vecteurs Vpdéfinie par
Vp=
AVp−1
kAVp−1k.
Si V0possède une composante non nulle dans l’espace propre associé à λ, alors la suite des
Vp« converge » vers une direction de cet espace propre. De façon plus précise, le vecteur
λ
|λ|p
Vp
converge vers un vecteur propre associé à λ.
1. Est-il raisonnable de choisir un vecteur au hasard pour V0?
2. Rédiger la fonction vpmaxi(A) qui retourne le couple (lambd, V) où lambd est la
valeur propre de plus grand module et Vest un vecteur propre associé à cette valeur
propre.
À vous de définir un critère d’arrêt du processus itératif.
3. Tester la fonction sur un exemple.
Pourquoi est-il raisonnable de choisir une matrice symétrique au hasard comme
exemple de matrice A?
Utilisez la fonction numpy.linalg.eig pour contrôler le résultat.
4Décomposition QR [JOB901]
Soit Aune matrice inversible de dimension n. On note Ailes vecteurs colonnes de la
matrice.
On définit par récurrence sur jles vecteurs colonnes Q1,Q2, . . . , Qnpar :
¨Tj=Aj−Pj−1
i=1Qi,AjQi
Qj=Tj
kTjk
où 〈U,V〉dénote le produit scalaire des deux vecteurs colonnes Uet V.
En particulier Q1=A1
kA1k.
1. (a) Justifier que les vecteurs colonnes Qiforment une famille orthonormée.
(b) Justifier qu’il existe une matrice Rtriangulaire supérieure et inversible telle que
A=QR.
2. (a) Rédiger le code de la fonction gram(A) qui retourne sous la forme d’un tableau
Numpy la matrice Qdéfinie ci-dessus.
In[1]: A = array([[2., 5., 5.],
[4., 7., 6.],
[3., 5., 4.]])
In[2] : gram(A)
array([[ 0.37139068, 0.91974993, -0.12700013],
[ 0.74278135, -0.21224998, 0.63500064],
[ 0.55708601, -0.33016664, -0.76200076]])
(b) Vérifier avec Numpy que la matrice retournée est bien orthogonale (aux approxi-
mations flottantes près).
Mesurer le défaut d’orthogonalité de Qen calculant ktQQ −Ik.
3. (a) On considère la matrice Adéfinie par ai j =1
i+j−1pour 1 ¶i¶8 et 1 ¶j¶8.
Calculer la matrice Q, orthogonalisée de Gram de la matrice A.
(b) Mesurer le défaut d’orthogonalité de Q.
(c) Le déterminant de Aest proche de 0 (vérifiez-le). Ceci induit un comportement
instable de l’algorithme.
Il est possible de rendre stable l’algorithme en le modifiant très légèrement.
Renseignez-vous sur l’internet, modifiez votre algorithme puis testez à nouveau
avec cette même matrice.
4. Compléter le code de la fonction prédédente pour que celle-ci retourne également la
matrice Rtelle que A=QR.
Cette fonction sera nommée decompQR(A) et retournera les deux matrices sous la
forme d’un tuple (Q, R).
5. Étudier la complexité en temps de la fonction decompQR.
6. Résolvez le système
x+2y+4z=10
3x+z=5
−x+y+5z=9,5
en à l’aide de la fonction decompQR et de la fonction solveTriangle rédigée lors de
l’exercice 1.
http://docs.dichotomies.fr/2014/informatique/ipt2/exercices/algebre-lineaire/Denis Pinsard – Mis à jour le mercredi 11 mars 2015
[DCO949] Page 2