TP n°4 - Mathématiques

publicité
Lycée Roland Garros - BCPST 1
Informatique
TP INFO n 4
o
.
Les graphiques avec Python
Python permet de produire tous les types de graphiques dont vous pouvez
avoir besoin. Nous allons voir dans ce TP comment procéder pour les types de
graphiques les plus courants.
1
matplotlib ,
Les commandes qui permettent de le faire font partie de la librairie 2
plus particulièrement de la sous-librairie matplotlib.pyplot Créez un nouveau script TPgraphiques.py et commencez par importer la bibliothèque nécessaire :
I import matplotlib.pyplot as plt
Ainsi vous êtes autorisé à utiliser n'importe quelle commande de matplotlib.pyplot,
à condition de la faire précéder du préxe plt.
La liste de fonctionnalités exposées ici est loin d'être exhaustive, plein d'exemples
sur la page web de matplotlib :
http ://matplotlib.org/gallery.html
1 La commande plot
C'est la commande la plus importante pour tracer des graphiques ! Elle prend
en argument deux listes de même taille. La commande
plt.plot([x_1,x_2,...x_n],[y_1,y_2,...y_n])
produit l'achage d'une ligne brisée reliant les points (x1 , y1 ), (x2 , y2 ), . . . , (xn , yn ).
En clair la première liste est celle des abscisses et la seconde celle des ordonnées.
Exemple.
Faites :
I plt.plot([1,3,-1,4,8],[2,5,4,1,-3])
Remarque.
1.
2.
Si l'on ne rentre qu'une seule liste [a1 , a2 , . . . , an ] au lieu de deux,
matplotlib = math plot library
pyplot : python plot
: librairie pour les graphiques mathématiques
1
Python considèrera par défaut qu'il s'agit de la liste des ordonnées et que la
liste des abscisses est la liste [1, 2, 3, . . . , n]. C'est très commode car le tracé
obtenu représente en fait la suite (an ).
Exemple.
Fermez la fenêtre graphique puis faites :
I plt.plot([1,3,-1,0,1,2,1,-2,1])
Si vous ne fermez pas la fenêtre graphique entre deux plot, les deux graphiques seront superposés et munis de couleurs diérentes.
Exemple.
Fermez la fenêtre graphique puis faites :
I plt.plot([1,2,3,0,4])
I plt.plot([1,3,2,0,1],[5,0,5,3,4])
2 Tracé d'une fonction
Une des utilités principales de plot est de permettre le tracé de la courbe
d'une fonction. Soit f une fonction. Pour tracer le graphe de f sur un intervalle [a; b] il faut tracer les points (x, f (x)) avec x qui prend des valeurs entre
a et b, susamment proches pour que l'oeil ne remarque pas la discontinuité
sur l'écran (c'est-à-dire plus resserrés que la limite imposée par la résolution
de l'écran, disons que 10000 points susent amplement).
Le moyen le plus simple de créer
une telle liste est d'utiliser la commande
linspace de la librairie numpy :
Exemple.
Faites :
I import numpy as np
I X=np.linspace(2,5,11)
I print(X)
Faites varier les valeurs pour comprendre ce que fait exactement linspace !
Remarque : X n'est pas une variable de type list :
I type(X)
X est du type array (tableau en français), ça ressemble à une liste mais ce n'en
est pas une. Le type array sera étudié en profondeur plus tard dans l'année.
Il permet de faire des opérations élément par élément, ce que ne permettent
pas les listes :
I Y=np.cos(X)
Exemple.
Si on veut tracer cos sur [0; 13] on fera :
I X=np.linspace(0,13,10000)
I Y=np.cos(X) . . . . . . . . . . . . . . . . . . . . . . . . on utilise la commande cos de numpy
2
I plt.plot(X,Y)
III
Faites vos propres expériences !
Exercice 1
Tracer la fonction x 7→ sin(1/x) pour x ∈ [0, 01; 5]
Exercice 2
Tracer, sur un même graphique et sur l'intervalle [−2, 2], la fonction f = exp
et les fonctions
f0 : x 7→ 1, f1 : x 7→ 1 + x, f2 : x 7→ 1 + x + x2 /2, f3 : x 7→ 1 + x + x2 /2 + x3 /6
Zoomez autour de x = 0. Que constatez-vous ?
3 Paramètres d'achage pour la commande plot
De nombreux paramètres d'achage peuvent être modiés pour customiser votre graphique.
3.1
Nuage de points
On peut choisir de représenter des points isolés plutôt qu'une ligne brisée
(notamment quand on souhaite représenter une suite). Les points sont alors
représentés par des marqueurs dont on peut choisir la forme.
Exemple.
Faites :
I C=[np.cos(k) for k in range(1,50)]
I plt.plot(C,'.')
Fermez la fenêtre puis faites :
I S=[np.sin(k) for k in range(1,50)]
I plt.plot(C,S,'*')
Essayez les marqueurs : 'o', 'v', '4', '+', 'h' . . . il en existe bien d'autres !
3.2
Couleur, épaisseur
On peut aussi gérer, pour une ligne brisée, la couleur et l'épaisseur du trait :
Exemple.
Faites :
I L=[k**2 for k in range(1,5)]
3
I plt.plot(L,linewidth=5)
Fermez la fenêtre puis faites :
I plt.plot(L,color='r')
Fermez la fenêtre puis faites :
I plt.plot(L,color='g','')
Autres couleurs prédénies : b, c, m, y, k, w. Pour ceux qui connaissent le
codage des couleurs RGB (et qui aiment le ranement), on peut choisir précisément n'importe quelle couleur en précisant le triplet RGB. Fermez la fenêtre
puis faites :
I plt.plot(L,color=(0.2,0.4,0.6))
3.3
Autres
On peut faire apparaître une grille de graduation en faisant :
I plt.grid()
On peut ajouter un titre en haut du graphique ainsi que des légendes aux
axes :
I plt.title("MON BEAU GRAPHIQUE\n QU'IL EST BEAU")
I plt.xlabel("Axe des abcisses")
I plt.ylabel("Axe des ordonnées")
On peut également placer plusieurs graphiques sur une même fenêtre avec
la commande subplot (en français : sous-graphique ). Dans subplot on précise 3 chires : le nombre de lignes, le nombre de colonnes et le numéro de la
case qu'on ouvre.
I
I
I
I
I
I
I
I
I
X=np.linspace(0,1,1000)
plt.subplot(2,2,1)
plt.plot(X,X)
plt.subplot(2,2,2)
plt.plot(X,X**2)
plt.subplot(2,2,3)
plt.plot(X,X**3)
plt.subplot(2,2,4)
plt.plot(X,X**4)
On peut écrire dans la fenêtre graphique avec la commande text. Il faut préciser les coordonnées où l'on veut écrire et le texte à écrire. Fermer la fenêtre
puis faites :
I plt.text(0.2,0.5,'on peut meme faire un $\mu$ ou une $\int f(x)dx$')
4
Il y a même moyen de faire automatiquement une légende bien
I
I
I
I
I
stylée
:
x=np.linspace(-1,1,100)
p1,=plt.plot(x,x**2,'g')
p2,=plt.plot(x,x**3,'b')
p3,=plt.plot(x,np.exp(x),'o')
plt.legend([p1, p2,p3], ["carré", "cube","exponentielle"])
4 Histogrammes
4.1
La commande
hist
L'histogramme est un outil représentatif couramment utilisé en statistique. Il
permet de visualiser la répartition d'une série de valeurs dans des intervalles
donnés. On peut les produire avec la commande hist en Python
Commençons par construire aléatoirement un tableau contenant plein de nombres
(on anticipe un peu, mais pas besoin de maîtriser cette commande à ce stade
de l'année) :
I A=np.random.normal (0,1,1000)
I print(A)
On commence par découper l'intervalle [−5; 5] en 20 sous-intervalles :
I subdivision=np.linspace(-5,5,21)
I plt.hist(A,subdivision)
Alternative : on se contente de donner le nombre N d'intervalles, et Python
découpe automatiquement [a; b] en N intervalles de largeurs égales, a et b étant
les valeurs minimale/maximale dans A.
I plt.hist(A,bins=50)
4.2
La commande
bar
Cette commande produit un diagramme en bâtons mais dont les hauteurs sont
directement spéciées (contrairement à hist où celles-ci étaient calculées à
partir des fréquences d'apparition dans la série A). Voici la répartition des
mois de naissance de la population française de 1976 (source : INSEE).
Jan
Fév
Mar
Avr
Mai
Jui
4593426 4223840 4699022 4487830 4751820 4435032
Jui
Aoû
Sep
Oct
Nov
Déc
4540628 4382234 4223840 4171042 4065446 4223840
5
Si l'on veut représenter cette répartition, on fera :
I hauteurs=[4593426,4223840,. . . ]
(à copier-coller d'après le chier naissances.txt)
I plt.bar(range(1,13), hauteurs)
Exercice 3
Écrire une fonction coeff_binom(N)
sous forme de diagramme
qui représente
en bâtons les nombres N0 , N1 , N2 , . . . , N
.
N
5 Représenter un tableau de nombres
Le type array rencontré plus haut permet notamment de manipuler de vrais
tableaux de nombres (avec lignes et colonnes). On a souvent besoin de représenter de tels tableaux par un code couleur. Un nombre du tableau correspond
à une case dans une grille.
Créons un tableau de chires au hasard :
I A=np.random.randint(0,3,(10,10))
I print(A)
On représente ce tableau grâce à la commande matshow :
I plt.matshow(A)
Remarque.
bien sûr, possibilité de changer le code couleur !
6 Exercices
Exercice 4
Créer une fonction monomes(N) qui représente les fonctions x 7→ xk pour
k = 1, . . . , N , avec une légende.
Par exemple, voici ce que doit produire l'instruction monomes(7) (les courbes
ont des couleurs diérentes) :
6
Exercice 5
Soit f : I → I avec I intervalle de R, et la suite récurrente dénie par
(
un+1 = f (un ),
u0 ∈ R
Créez une fonction recurrente(f,u0,N,a,b) qui produit la représentation en
escalier de la suite (un ). Plus précisément cette fonction devra :
•
•
•
•
•
tracer le graphe de f entre a et b,
tracer la bissectrice d'équation y = x,
tracer les deux axes (Ox) et (Oy) en noir,
acher une grille de graduation,
tracer, avec une ligne continue et des marqueurs (cf. ci-dessous), l'escalier
représentant la suite (un ).
Par exemple, voici ce que doit produire l'instruction
recurrente(np.cos,2,5,-np.pi,np.pi)
(np.pi est simplement le nombre π , qui fait partie de la librairie numpy).
7
8
Téléchargement