Algèbre linéaire
IPT Deuxième année
1Pivot de Gauss [KDF123]
1. Rédiger la fonction solveTriangle(T, Z) qui résout le système linéaire T X =Z
Test une matrice triangulaire supérieure.
On pourra faire en sorte que la fonction lève l’exception NotInversible dans le cas où la
matrice T n’est pas inversible.
In[1]: T = array([[4., 2., 4.],
[0., -1., 2.],
[0., 0., 5.]])
In[2]: Z = array([-4., 3., 5.])
In[3]: solveTriangle(T, Z)
array([-1.5, -1., 1.])
La fonction de doit pas modifier ses arguments.
2. Rédiger la fonction swap(A, Y, i, k) qui échange les lignes iet kdu système
AX =Y.
In[1]: A = array([[ 1., 2., 4.],
[ 3., 0., 1.],
[-1., 1., 5.]])
In[2]: Y = array([10., 5., 9.5])
In[3]: swap(A, Y, 1, 2)
In[4]: A
array([[ 1., 2., 4.],
[-1., 1., 5.],
[ 3., 0., 1.]])
In[5]: Y
array([10., 9.5, 5.])
3. Rédiger la fonction transvection(A, Y, i, k, c) qui transforme le système
AX =Yen ajoutant cfois la ligne ià la ligne k.
In[1]: A = array([[ 1., 2., 4.],
[ 3., 0., 1.],
[-1., 1., 5.]])
In[2]: Y = array([10., 5., 9.5])
In[3]: transvection(A, Y, 1, 2, 2.5)
In[4]: A
array([[ 1. , 2. , 4. ],
[ 3. , 0. , 1. ],
[ 6.5, 1. , 7.5]])
In[5]: Y
array([ 10., 5., 22.])
4. Rédiger la fonction triangulation(A, Y) qui transforme le système AX =Yen
le système T X =Zayant la même solution Xet où Test une matrice triangulaire
supérieure. La fonction retourne le couple (T, Z).
In[1]: A = array([[1., 2., 4.],
[3., 0., 1.],
[-1., 1., 5.]])
In[2]: Y = array([10., 5., 9.5])
In[3]: triangulation(A, Y)
(array([[ 1. , 2. , 4. ],
[ 0. , -6. , -11. ],
[ 0. , 0. , 3.5]]), array([ 10., -25., 7.]))
5. (a) Rédiger la fonction solveGauss(A, Y) qui résoud le système AX =Ypar la
méthode du pivot de Gauss.
In[1]: A = array([[1., 2., 4.],
[3., 0., 1.],
[-1., 1., 5.]])
In[2]: Y = array([10., 5., 9.5])
In[3]: solveGauss(A, Y)
array([ 1. , 0.5, 2. ])
(b) Vérifier la solution fournie par solveGauss(A, Y) en utilisant la fonction
numpy.dot .
6. On considère le système
3x+y+6z=0
4x+y+4z=0
y+12z=0
(a) Résoudre ce système avec une feuille et un crayon.
(b) Résoudre ensuite ce même système à l’aide de solveGauss et commenter le
résultat.
http://docs.dichotomies.fr/2014/informatique/ipt2/exercices/algebre-lineaire/Denis Pinsard – Mis à jour le mercredi 11 mars 2015
[DCO949]
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=
AVp1
kAVp1k.
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) 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=AjPj1
i=1Qi,AjQi
Qj=Tj
kTjk
U,Vdé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+j1pour 1 i8 et 1 j8.
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
1 / 2 100%