` L’INFORMATIQUE INTRODUCTION A TP5 : UTILISATION DE MODULES Un module de python est une biblioth`eque o` u sont rang´ees des fonctions. On l’appelle en d´ebut de session avec la commande “import module”, et les fonctions sont de la forme “module.fonction”. Exercice 1. Module random. Le module random tire des nombres “au hasard”. random.seed(): engendre une “graine” qui met en route le moteur pseudo-al´eatoire. Il faut commencer par appeler cette fonction en d´ebut de fichier. random.random(): renvoie un flottant dans [0, 1). random.randint(a,b): renvoie un entier dans [a, b]. random.randrange(...): prend les mˆemes arguments que range(...) et en renvoie un ´el´ement au hasard. ´ (1) Ecrire une fonction qui renvoie une liste de n flottants pris dans [0, 1). ´ (2) Ecrire une fonction qui renvoie une liste de n points dans le cadrant (0, 0) − (1, 1) du plan. ´ (3) * Ecrire une fonction qui m´elange une liste sur place. Cette op´eration est disponible directement par random.shuffle. Exercice 2. Module mathplotlib. Quand le nom du module est trop long, on peut le raccourcir avec “import module as petit-nom”. On va ici se servir du module matplotlib.pyplot que l’on appelle traditionnellement par import matplotlib.pyplot as plt On a alors acc`es aux fonctions d’affichage suivantes : plt.plot(x,y): quand x et y sont des listes de la mˆeme taille, affiche la courbe affine par morceaux qui passe par les (xi , yi ). Fonction usuelle pour tracer des courbes. plt.scatter(x,y): affiche les points (xi , yi ) mais sans relier les points. plt.axis(’equal’): par d´efaut, python ajuste la longueur de chaque axe au dessin demand´e. Cette commande permet de r´etablir la norme. plt.show(): affiche les figures dessin´ees jusqu’ici. plt.savefig(fichier): enregistre la figure dans un fichier. L’extension (png, pdf. . .) indique le format. Pour tracer une courbe, on trace en fait une approximation affine par morceaux. On va cr´eer une liste de valeurs ` a l’aide d’un troisi`eme module, le module numpy (qu’on verra plus tard en cours). La fonction linspace(a,b,n) de ce module renvoie une liste n points r´epartis r´eguli`erement entre a et b. import numpy as np x = np.linspace(0,30,50) plt.plot(x, np.sqrt(x)) plt.show() On peut noter que la fonction np.sqrt s’applique ici `a une liste ! C’est normal (et pratique). 1 1. De fa¸con plus homog` ene, on aurait pu utiliser la fonction map(f, liste) qui renvoie la liste des f(x) pour x ∈ liste. Les fonctions de trac´e (plot, scatter) prennent des options suppl´ementaires, comme par exemple une couleur bleue avec l’argument suppl´ementaire color = ’blue’. Voir la doc des fonctions pour plus de d´etails. (1) Ex´ecuter le code ci-dessus. Constater la diff´erence lorsqu’on ajoute plt.axis(’equal’) (avant le show()). (2) Afficher la courbe de sin(x) entre −π et π (np.pi). Faire varier la pr´ecision pour constater les variations. Exercice 3. Calcul de π. On peut tr`es bien tracer de la mˆeme fa¸con une courbe param´etr´ee x(t), y(t). Il suffit de donner une liste de valeurs pour t, puis de calculer les listes de valeur de xt et yt pour enfin afficher plt.plot(xt,yt). Pour tracer juste un point vert aux coordonn´ees x, y, on peut utiliser par exemple la commande plt.plot(x,y, marker = ’o’, color = ’green’). Lire la documentation pour les diff´erents marqueurs. (1) Tracer le cercle de rayon 1 grˆ ace `a une courbe param´etr´ee. (2) Tirer des points au hasard dans le carr´e entre les coins (0, 0) et (1, 1). Les colorier en vert ou rouge selon qu’ils sont dans le cercle unit´e ou non. Quelle est la probabilit´e qu’un point se retrouve dans le cercle ? (3) En d´eduire un algorithme probabiliste pour calculer la valeur de π. Exercice 4. Options de matplotlib. Pour plus de modifications, Axes centr´ es en 0: on fait appel ` a l’objet “axe” du dessin. ax = plt.gca() # "get current axis" ax.spines[’right’].set_color(’none’) # l’axe de droite est effac´ e (couleur none) ax.spines[’top’].set_color(’none’) # idem pour l’axe du haut ax.xaxis.set_ticks_position(’bottom’) # on ne met que des ´ etiquette sur # l’axe du bas ax.spines[’bottom’].set_position((’data’,0))#et l’axe du bas est plac´ e en 0 ax.yaxis.set_ticks_position(’left’) #idem pour l’axe de gauche. ax.spines[’left’].set_position((’data’,0)) L´ egende: plt.xlabel(’Caf´ e’) plt.ylabel(’Travail’) plt.title(’Courbe de productivit´ e’) Et plus encore : voir http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html# simple-plot.
© Copyright 2024 ExpyDoc