Vous êtes sur la page 1sur 3

PCSI1 M.

Berthelot 2019/2020 TP d’Informatique no 3 mardi 5/11/2019

Objectif du TP
- Nous allons réaliser des tracés de fonction avec l’aide du module matplotlib.
- Commencez par créer un fichier TP03.py dans votre répertoire de travail. Dans l’entête du fichier importez
les packages matplotlib.plt et numpy de la manière suivante :
# Importation des packages
import m a t p l o t l i b . p y p l o t as p l t
import numpy a s np

- Attachez du soin à la présentation des différentes parties. Pour cela, on favorisera l’écriture de commentaires
précédé de #.

1 Ecriture des listes par compréhension


On dit que l’on définit une liste par compréhension lorsqu’on caractérise ses éléments en fonction d’une autre
liste éventuellement soumis à certaines conditions. A titre d’exemple, que renvoie les commandes suivantes :
>>> L1 = [ 2 ∗ k for k in range ( 1 0 ) ] ; L1
>>> L2 = [ a∗∗2−1 for a in L1 ] ; L2
>>> L3 = [ np . s i n ( k ) for k in range ( − 5 , 9 ) ] ; L3
>>> L4 = [ a for a in L3 i f a > 0 ] ; L4

La structure est donc la suivante [f(a) for a in L if P(a)] avec :


- L une liste d’éléments ou un itérable du type range(a, b).
- f une fonction sur les éléments de L. La fonction est optionnelle.
- P une condition sur les éléments de L. La condition est optionnelle.

Exercice 1 : Créer la liste des entiers multiples de 3 compris entre 0 et 120 de deux façons :
- en utilisant une fonction mais pas de condition.
- en utilisant une condition mais pas de fonction.
Exercice 2 : En important la fonction randrange du package random. Créer une fonction liste_aleat(n, m)
qui prend en argument deux entiers naturels et renvoie une liste de n entiers aléatoires compris entre 0 et m.
Par exemple : liste_aleat(3, 2) peut renvoyer la liste [1, 0, 1].
Exercice 3 : Ecrire une fonction liste_regulier(a, b, n) qui prend en argument des flottants a et b
strictement classés et un entier n et renvoie une liste de n points régulièrement espacés entre a et b.
Par exemple : liste_regulier(.5, 1.75, 6) doit renvoyer la liste [.5, .75, 1., 1.25, 1.5, 1.75].
Remarque : Cette dernière fonction est implémentée dans le package numpy et se nomme linspace(a, b, n).
Toutefois le type renvoyé est vectoriel numpy.array et ne se comporte pas une liste.

N.Provost TP d’Informatique no 3 (page 1) PCSI1 2019-2020


PCSI1 M.Berthelot 2019/2020 TP d’Informatique no 3 mardi 5/11/2019

2 Tracé d’une fonction avec matplotlib.pyplot et numpy


- On pourra consulter le document sur le package matplotlib pour cette partie.
- L’idée principal est que le tracé correspond à la donnée de la liste des abscisses et de la liste des ordonnées
des points de la courbe à tracer.
Que renvoie les instructions suivantes dans l’éditeur de texte :
#D é f i n i t i o n d e s l i s t e s d e s a b s c i s s e s avec numpy
x1 = np . l i n s p a c e ( 0 , 4 , 5 )
x2 = np . l i n s p a c e ( 0 , 4 , 1 0)
x3 = np . l i n s p a c e ( 0 , 4 , 5 0)
#Tracé av e c m a t p l o t l i b
p l t . f i g u r e ( ’ Tracé de l a f o n c t i o n c o s i n u s ’ )
p l t . c l f ( )#e f f a c e l a c o m p i l a t i o n p ré cé d e n t e
p l t . p l o t ( x1 , np . c o s ( x1 ) , l a b e l= ’ 5 p o i n t s ’ )
p l t . p l o t ( x2 , np . c o s ( x2 ) , l a b e l= ’ 10 p o i n t s ’ )
p l t . p l o t ( x3 , np . c o s ( x3 ) , l a b e l= ’ 50 p o i n t s ’ )
plt . legend ()
p l t . show ( )

Exercice 4 : En utilisant le pointeur et le zoom, évaluer graphiquement l’erreur maximale commise entre
chacune des paires de courbes.
Dans une nouvelle figure, tracer pour les pas précédents, les courbes de la fonction sinus puis de la fonction
exponentielle.
La commande linspace permet donc de considérer les listes des abscisses notée x. Pour considérer les
coordonnées des images, il y a alors deux méthodes principales, le choix de leurs utilisations dépendant
généralement du contexte.
Illustrons cela sur la fonction x 7→ x2 + x.
La méthode par liste par compréhension consiste à créer la liste des ordonnées par :
y comp = [ a∗∗2+a for a in x ]

La méthode utilisant numpy permet d’appliquer directement une fonction à un array.


y np = x∗∗2+x

Il est parfois utile pour une question de lisibilité de définir la fonction avant de l’utiliser :
x = np . l i n s p a c e ( 0 , 4 , 2 0 0 )
def f ( a ) :
return a∗∗2+a
y comp = [ f ( a ) for a in x ]
y np = f ( x )

Exercice 5 : Pour les valeurs de x comprises entre 0 et 4 et un pas de 0.01 tracer les courbes des fonctions
suivantes sur un même graphique :
ln(x)
f1 (x) = x−1
x+1
, f2 (x) = x2 + x
et f3 (x) = 5e−x cos(2πx).

On tracera un graphique différent pour chacune des deux méthodes.

N.Provost TP d’Informatique no 3 (page 2) PCSI1 2019-2020


PCSI1 M.Berthelot 2019/2020 TP d’Informatique no 3 mardi 5/11/2019

3 Tracé d’une courbe avec une boucle while


Le nombres de points d’un tracé est à relier avec le pas entre deux points consécutifs. Pour bien illustrer
l’utilisation du pas, la construction de la fonction point par point est souvent à privilégier. Que donne les
commandes suivantes :
labs , lord =[] , [ ]
x , pas = 0 , 0 . 0 1
while x < 4 :
l a b s . append ( x )
l o r d . append ( x∗∗2+x )
x += pas
p l t . f i g u r e ( ’ Exemple b o u c l e w h i l e ’ )
plt . plot ( labs , lord )
p l t . show ( )

Exercice 6 : Tracer les courbes des fonctions de l’exercice précédent à l’aide de cette méthode.
Remarque : Ceci permet notamment d’obtenir des courbes paramétriques de manière naturelle.
Exercice 7 : Tracer un cercle en utilisant la description paramétrique suivante :
x(t) = cos(t) et y(t) = sin(t) pour t ∈ [0, 2π].
eit
Exercice 8 : Tracer la courbe paramétrique donner par x(t) + iy(t) = t
pour un domaine et un pas qui
vous semblera raisonnable.
Exercice 9 : Les courbes de Lissajous de paramètre (p, q) avec p et q des entiers naturels non nuls sont les
courbes paramétriques d’équations :
x(t) = cos(pt) et y(t) = sin(qt) pour t ∈ R.
Ecrire une fonction Lissajous(p, q, pas) qui renvoie le tracé de la courbe de Lissajous de paramètre (p, q)
avec un pas pas. 
Faire les tracés pour (p, q) ∈ (1, 1); (1, 2); (3, 4); (9, 8) .

4 Réalisation d’un histogramme et de camembert


Exercice 10 : En utilisant la fonction gauss du package random, créer une liste de 47 notes lnote de
moyenne 10 et d’écart type 3. Réaliser l’histogramme représentant en abscisse les notes obtenues et en
ordonnées le nombre d’élèves ayant obtenus la note.
Exercice 11 : Réaliser un ’camembert’ des volumes horaires de chacune de matières de la PCSI.

N.Provost TP d’Informatique no 3 (page 3) PCSI1 2019-2020

Vous aimerez peut-être aussi