TP1 PDF
TP1 PDF
TP1 PDF
Objectif : Réviser les fonctions de bases de la librairie numpy de Python liées au calcul matriciel.
Ceci permet d’indiquer au système quel programme doit être utilisé pour exécuter le script. Dans
un terminal, nous lancerons le script comme ceci :
> ./TP1.py
affichera Hello World!! dans le terminal. Nous utiliserons abondamment la librairie numpy, donc
tous nos scripts devraient commencer par les lignes suivantes :
4 import numpy as np
La deuxième ligne indique l’encodage de votre fichier source, c’est-à-dire le code utiliser pour coder
les caractères. Cela permet par exemple de mettre des caractères accentués dans les commentaires. Mes
fichiers sont en tous en utf8.
Les commentaires. Un commentaire est un texte ajouté au code source d’un programme servant à
décrire le code source, facilitant sa compréhension par les humains. Il est donc séparé du reste du code
grâce à une syntaxe particulière, ce qui fait qu’en général, le commentaire est ignoré par le compilateur
ou l’interpréteur du langage concerné. Pour pouvoir (re)comprendre rapidement son code, le réuti-
liser plus tard et le partager avec d’autres humains, il est nécessaire de commenter correctement
sont code.
Ici, la syntaxe particulière est le # en début de ligne qui fera que l’interpréteur python ignorera ce
qui se trouve derrière ce caractère.
Les tableaux. Pour définir des matrices, ou tableaux, nous utiliserons numpy.array(), c’est-à-dire la
fonction array() de la librairie numpy. Pour des questions pratiques, nous importons la librairie numpy
avec la ligne suivante
1 import numpy as np
4 import numpy as np
5
4 import numpy as np
5
4 import numpy as np
5
6 # tableaux
7 A = np. array ([[1 ,2 ,3 ,4] ,[5 ,6 ,7 ,8] ,[9 ,10 ,11 ,12] ,[13 ,14 ,15 ,16]])
8 # copy de tableau
9 B = A.copy ()
10 # sans le .copy (), si on modifie la variable C, on modifie aussi A
11 C = A
12 # accès à un élément
13 print("A[0 ,3] = ", A[0 ,3])
14 # accès à une ligne entière
15 D = A[1 ,:]
16 # accès à seulement quelques éléments d’une colonne
17 # indice départ : indice arrivé : step
18 E = A[1:4:2 , 2]
19
20 # affichage
21 print("A = ", A)
Listes des fonctions utiles. Voici une listes des fonctions qui peuvent vous être utiles pour ce TP
(liste non exhaustive bien entendu).
1 type ()
2
3 np. vstack ()
4 np. hstack ()
5 np. concatenate ()
6 np.dot ()
7 np.sum ()
8 np.diag ()
9 np.eye ()
10 np. arange ()
11 np.ones ()
12 np. shape ()
13 np.nd array
14
Boucle for. La syntaxe générale pour une boucle for est la suivante :
4 import numpy as np
5
6 # boucle : i variant de 0 à 9
7 for i in np. arange (10):
8 print("i = ", i)
Structure if/else/elif. Pour la structure de test, là encore, ce sont les tabulations qui définissent les
blocs.
Définition de fonction. On peut définir des fonctions avec python. Voici la syntaxe :
Un exemple :
9 compteur (4)
10 compteur (2)
2 Exercices
4 6 −2 3
2 −1 0 1 ®.
© ª
«−7 0 1 12¬
4 5 6
5 10 15® ,
© ª
«1 1 1¬
en utilisant le fait que les lignes 1 et 2 sont composées des éléments successifs de deux suites
arithmétiques (voir fonction np.arange et np.ones()).
(d) Créer la matrice C ∈ M3,3 (R) extraite de A telle que pour 1 6 i, j 6 3, ci j = ai j .
(e) Différents produits matriciels
• Réaliser le produit matriciel D de B et A (np.dot()).
• Réaliser le produit d’Hadamard E de B et de C.
Pour mémoire, le produit d’Hadamard E ∈ M3,3 (R) des matrices B ∈ M3,3 (R) et C ∈ M3,3 (R) est défini
par
∀1 6 i, j 6 3, ei j = ci j bi j .
3
(f) Calculer
Í4 la somme des éléments de la matrice E et le vecteur colonne Y ∈ R tel que pour 1 6 i 6 3,
yi = j=1 di j (np.sum()).
Exercice 2 Nous allons ici explorer quelques commandes très utiles en algèbre linéaire.
On considère la matrice A ∈ M4,4 (R) suivante
4 5 6 −1
5 10 15 2 ®
© ª
®.
6 15 1 4®
«−1 2 4 −2¬
(a) Pourquoi A est-elle diagonalisable ? À l’aide de la fonction np.linalg.eig(), calculer avec Python
ses valeurs propres et donner une base de vecteurs propres.
(b) Calculer de deux manières l’inverse de A en utilisant le résultat précédent et la fonction np.linalg
.inv. Comparer les résultats obtenus (vous pourrez regarder la librairie matplotlib pour faire des
tracés avec Python).
(c) On considère maintenant la matrice A ∈ Mn,n (R)
2 −1 0 ··· ··· 0
© .. .. ..ª
−1
2 −1 . . .®
®
.. .. .. .. ..
®
0
. . . . .
®
®
.
. .. .. .. ..
®
. . . . . 0®
®
.
. .. ..
®
. . .
®
−1 2 −1®
«0 ··· ··· 0 −1 2¬
Examiner, comme à la question précédente, les cas n = 5, 10, 50 (on utilisera n comme une variable,
et on devra construire la matrice avec np.eyes() en fonction de n). Comparer les valeurs propres
obtenues avec les valeurs définies pour 1 6 k 6 n par
kπ
λk = 4 sin2 .
2(n + 1)
1 −1 2 1 2
−1 2 3 −4 1® .
© ª
«0 −1 1 0 0¬
«0 −1 1¬ «1¬
résoudre à l’aide de la fonction np.linalg.solve() le système Ax = b.