Matplotlib De quoi dessiner des courbes et débuter en Python . . .

Matplotlib
De quoi dessiner des courbes
et
d´
ebuter en Python . . .
Gilles Menez
Universit´
e de Nice – Sophia-Antipolis
www : www.i3s.unice.fr/˜menez
24 janvier 2012: V 1.1
1
Back
Previous Next First Last Back Forward Index 2
c
G.Menez 2
Back
Table des mati`
eres
1 Matplotlib 4
1.1 Un petit exemple ................................. 4
1.1.1 Au petit angle ............................... 4
1.1.2 Classiquement : C et Gnuplot ...................... 5
2 Python +Matplotlib 8
2.1 Qui est quoi ? ................................... 9
2.2 Votre travail .................................... 11
3 Un autre exemple simple 12
4 Un besoin ? . . . Une r´
eponse. 13
4.1 ”Afficher une courbe” ............................... 13
4.2 ”Afficher le contenu d’un fichier” ........................ 14
4.3 ”Afficher une image” ............................... 16
4.4 ”Afficher en 3D” ................................. 18
c
G.Menez TABLE DES MATI `
ERES 3
Back
1 Matplotlib
Pour explorer efficacement des probl`
emes scientifiques traitables informatiquement, il est in-
dispensable de pouvoir visualiser ses r´
esultats [?].
ãCela fait partie int´
egrante du processus de d´
eveloppement.
Python excelle en cela, car il dispose d’un excellent module de visualisation 2D : matplotlib.
ãAvoir des m´
ethodes de visualisation int´
egr´
ees au langage, sans faire appel `
a des outils
ext´
erieurs comme par exemple gnuplot, est un grand gain, car il n’est plus n´
ec´
essaire de
maˆ
ıtriser un environnement h´
et´
erog`
ene et de traduire les types de donn´
ees.
ãDe plus, la visualisation et le traitement informatique de donn´
ees sont deux probl`
emes
difficilement s´
eparables.
Pour ceux qui ont d´
ej`
a´
et´
e form´
es `
a Matlab, c’est pareil . . . du moins presque parce que
Python c’est aussi un langage.
1.1 Un petit exemple
Le probl`
eme est simple, r´
esoudre num´
eriquement l’´
equation diff´
erentielle de l’´
equilibre dy-
namique d’un pendule :
θ(t) = (g/l)sin(θ(t)) (1)
avec
ãθ(t)est l’angle du pendule avec la verticale,
ãl= 1 la longueur de la corde,
ãet g= 9.81 la gravit´
e.
1.1.1 Au petit angle
Si on bouscule l´
eg`
erement le pendule : on lˆ
ache (donc vitesse nulle) le pendule l’instant t= 0
avec un angle initial θ0:
θ(0) = θ0
θ0(0) = 0
on se doute que le pendule va osciller et pour le prouver on peut s’autoriser `
a lin´
eariser sin(θ(t))
par θ(t)l’´
equation(1) devient :
θ(t) = (g/l)θ(t)
On peut r´
esoudre formellement cette ´
equation et la solution est :
θ(t) = θ0sin(pg/l t+φ)(2)
c
G.Menez 4
Back
En tenant compte des conditions initiales,
θ(0) = θ0
θ0(0) = 0
la solution exacte est :
θ(t) = θ0cos(pg/l t)(3)
Pour l’instant, il n’y a pas d’algorithme particulier `
a d´
evelopper mais en faisant l’hypoth`
ese que
je n’ai jamais vu la courbe d’un cos j’aimerais l´
egitimement voir ce que donne cette r´
esolution.
1.1.2 Classiquement : C et Gnuplot
Ce que j’appelle ”classiquement”, c’est ”en utilisant un langage de programmation n’int´
egrant
pas de module de visualisation” : le langage C par exemple, ou Fortran ou Java ou . . .
Attention : Il ne s’agit absolument pas de discr´
editer un langage quelconque mais de mon-
trer que dans certaines situations avec un probl`
eme et des contraintes donn´
ees et particuli`
eres
certains outils sont plus ais´
es et performants que d’autres.
ãPr´
etendre faire de l’informatique, c’est aussi choisir les outils adapt´
es au probl`
eme !
Bref, en C par exemple, pour faire cela il faut commencer par faire calculer, en ´
echantillonnant
le temps, certains points de l’´
equation puis communiquer ces points `
a un outil externe.
ãLa fac¸on la plus simple (mais pas unique) de communiquer ´
etant d’utiliser un fichier, on
cr´
ee un code C qui produira des valeurs dans un fichier :
#include <s t d i o . h>
#include <math . h>
#define g 9.81 /Gravite */
int main (int argc ,char argv []){
FILE f;
double l= 1 . 0 ; /Lon gue ur de l a c o r d e /
f=fopen ("datapendule.xyz" ,"w" ) ;
if (f!= NULL ){
double theta =M_PI /10.0 ; /t h e t a 0 /
int N= 1 0 ; /S i m u l a t i o n de 10 s e c o n d e s /
double t;
for (t=0 ; t<N;t+= 1 . 0 / N)/Te = 1 /N /
fprintf (f,"%f %f\n" ,t,thetacos (sqrt (g/l)t));
fclose (f) ;
}
}
c
G.Menez 1.1 Un petit exemple 5
1 / 18 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !