Livre_silo 30 août 2013 16:32 Page 234
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
234
Informatique pour tous
SAVOIR-FAIRE Obtenir une représentation graphique de grandeurs
issues d’un calcul
Les principes qui guident la construction d’une représentation graphique restent les
mêmes que pour un tracé sur papier. Le choix des axes, de leur échelle, la présence
d’une légende, etc, sont des critères de qualité pour la représentation graphique produite.
Il ne faut pas se laisser impressionner par la multitude d’options existantes dans
matplotlib : on les découvre progressivement. La documentation en ligne de Python
est bien sûr à consulter sans modération.
9.3.3 De jolis graphes
Pour obtenir la figure 9.3, on a calculé trois solutions et, pour chacune, on a fait un appel
à plot. Le dessin n’ est réinitialisé qu’à l’appel de clf() (pour CLear Figure), ce qui autorise
les tracés multiples.
for h in [1, 0.1, 0.01]:
et, ey = euler(lambda t, y:y, 0, 3, 1, h)
pl.plot(et, ey)
Exercice 9.5 Le code réel diffère légèrement de celui présenté ici. Tester les lignes de code précédentes,
expliquer le problème et le réparer !
Pour les systèmes d’ordre 2 ou plus, on va prendre l’exemple du pendule non amorti linéarisé
(y
′′ = −y). Pour obtenir la figure 9.6, on commence par définir la fonction vectorielle qui
va vérifier l’équation linéaire d’ordre 1 :
def fpendule(t, X): # cas linéarisé : y''=-y
theta, thetap = X
return array([thetap, -theta])
t, theta = euler_vectoriel(fpendule, 0, 10, array([0,1]), 10**(-2))
Ensuite, il y a un traitement à faire sur le résultat : theta est un tableau de tableaux à
deux éléments. Pour extraire la première composante, on va réaliser du slicing, qui est une
opération naturelle sur les tableaux : si on définit x = np.array([[1,2],[3,4],[5,6]]), on peut
extraire la colonne numéro 0 :
In [13]: x[:, 0]
Out[13]: array([1, 3, 5])
mais aussi la ligne numéro 1 :
In [14]: x[1, :]
Out[14]: array([3, 4])
Précédent

- 247/402

Suivant