Algèbre linéaire - Informatique

publicité
array([[ 1. , 2.
[ 3. , 0.
[ 6.5, 1.
In[5]: Y
array([ 10., 5.,
Algèbre linéaire
IPT Deuxième année
1
Pivot de Gauss
[KDF123]
1. Rédiger la fonction solveTriangle(T, Z) qui résout le système linéaire T X = Z où
T est une matrice triangulaire supérieure.
U
U
7.]))
5. (a) Rédiger la fonction solveGauss(A, Y) qui résoud le système AX = Y par 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. ])
2. Rédiger la fonction swap(A, Y, i, k) qui échange les lignes i et k du système
AX = Y .
(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
4x + y + 4z

y + 12z
3. Rédiger la fonction transvection(A, Y, i, k, c) qui transforme le système
AX = Y en ajoutant c fois 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
http://docs.dichotomies.fr/2014/informatique/ipt2/exercices/algebre-lineaire/
22.])
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.,
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.])
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.])
4. ],
1. ],
7.5]])
4. Rédiger la fonction triangulation(A, Y) qui transforme le système AX = Y en
le système T X = Z ayant la même solution X et où T est une matrice triangulaire
supérieure. La fonction retourne le couple (T, Z).
On pourra faire en sorte que la fonction lève l’exception NotInversible dans le cas où la
matrice T n’est pas inversible.
La fonction de doit pas modifier ses arguments.
,
,
,
=0
=0
=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.
Denis Pinsard
– Mis à jour le mercredi 11 mars 2015
[DCO949]
2
Calcul d’un déterminant
[LBQ405]
1. (a) Justifier que les vecteurs colonnes Q i forment une famille orthonormée.
(b) Justifier qu’il existe une matrice R triangulaire supérieure et inversible telle que
A = QR.
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.
3
Valeur propre de plus grand module
[TJC898]
Soit A une 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 Vp définie par
Vp =
AVp−1
kAVp−1 k
2. (a) Rédiger le code de la fonction gram(A) qui retourne sous la forme d’un tableau
Numpy la matrice Q dé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]])
.
Si V0 possè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
(b) Vérifier avec Numpy que la matrice retournée est bien orthogonale (aux approximations flottantes près).
Mesurer le défaut d’orthogonalité de Q en calculant k tQQ − I k.
Vp
3. (a) On considère la matrice A définie par ai j = i+ 1j−1 pour 1 ¶ i ¶ 8 et 1 ¶ j ¶ 8.
Calculer la matrice Q, orthogonalisée de Gram de la matrice A.
converge vers un vecteur propre associé à λ.
1. Est-il raisonnable de choisir un vecteur au hasard pour V0 ?
(b) Mesurer le défaut d’orthogonalité de Q.
2. Rédiger la fonction vpmaxi(A) qui retourne le couple (lambd, V) où lambd est la
valeur propre de plus grand module et V est un vecteur propre associé à cette valeur
propre.
U
À 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 ?
U
(c) Le déterminant de A est 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.
Utilisez la fonction numpy.linalg.eig
pour contrôler le résultat.
4 Décomposition QR
[JOB901]
Soit A une matrice inversible de dimension n. On note Ai les vecteurs colonnes de la
matrice.
On définit par récurrence sur j les vecteurs colonnes Q 1 , Q 2 , . . . , Q n par :
¨
P j−1 T j = A j − i=1 Q i , A j Q i
Qj
=
4. Compléter le code de la fonction prédédente pour que celle-ci retourne également la
matrice R telle 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 + 2 y + 4z
3x + z

−x + y + 5z
Tj
kT j k
= 10
=5
= 9,5
en à l’aide de la fonction decompQR et de la fonction solveTriangle rédigée lors de
l’exercice 1.
où ⟨U, V ⟩ dénote le produit scalaire des deux vecteurs colonnes U et V .
A
En particulier Q 1 = kA1 k .
1
http://docs.dichotomies.fr/2014/informatique/ipt2/exercices/algebre-lineaire/
Denis Pinsard
– Mis à jour le mercredi 11 mars 2015
[DCO949]
Page 2
Téléchargement