TP 4 : Modules classiques: Numpy et Matplotlib

Documents pareils
Cours 7 : Utilisation de modules sous python

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Chapitre 1 Régime transitoire dans les systèmes physiques

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Python - introduction à la programmation et calcul scientifique

Fonctions de deux variables. Mai 2011

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Angles orientés et fonctions circulaires ( En première S )

Représentation géométrique d un nombre complexe

Equations différentielles linéaires à coefficients constants

Bien lire l énoncé 2 fois avant de continuer - Méthodes et/ou Explications Réponses. Antécédents d un nombre par une fonction

Calcul Formel et Numérique, Partie I

C f tracée ci- contre est la représentation graphique d une

Aide - mémoire gnuplot 4.0

Cours d Analyse. Fonctions de plusieurs variables

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

Découverte de Python

Exprimer ce coefficient de proportionnalité sous forme de pourcentage : 3,5 %

Circuits RL et RC. Chapitre Inductance

Exercices Types Algorithmique et simulation numérique Oral Mathématiques et Algorithmique Banque PT Propositions de réponses

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

3 Approximation de solutions d équations

Chapitre 6. Fonction réelle d une variable réelle

ÉVALUATION FORMATIVE. On considère le circuit électrique RC représenté ci-dessous où R et C sont des constantes strictement positives.

Calcul Scientifique avec 3

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Continuité et dérivabilité d une fonction

Développements limités, équivalents et calculs de limites

Calcul intégral élémentaire en plusieurs variables

Commun à tous les candidats

Fonctions de plusieurs variables

F411 - Courbes Paramétrées, Polaires

Chapitre 3 Les régimes de fonctionnement de quelques circuits linéaires

Licence Sciences et Technologies Examen janvier 2010

Union générale des étudiants de Tunisie Bureau de l institut Préparatoire Aux Etudes D'ingénieurs De Tunis. Modèle de compte-rendu de TP.

CHAPITRE XIII : Les circuits à courant alternatif : déphasage, représentation de Fresnel, phaseurs et réactance.

pyensae StockPrices September 1, Manipulation de séries financières avec la classe StockPrices

Tâche complexe produite par l académie de Clermont-Ferrand. Mai 2012 LE TIR A L ARC. (d après une idée du collège des Portes du Midi de Maurs)

La fonction exponentielle

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

Chapitre 0 Introduction à la cinématique

Charges électriques - Courant électrique

Fonctions de plusieurs variables

CHAPITRE IV Oscillations libres des systèmes à plusieurs degrés de liberté

Exercice 1 Trouver l équation du plan tangent pour chaque surface ci-dessous, au point (x 0,y 0,z 0 ) donné :

OM 1 Outils mathématiques : fonction de plusieurs variables

Continuité d une fonction de plusieurs variables

Initiation à l algorithmique

Introduction à MATLAB R

CCP PSI Mathématiques 1 : un corrigé

I. Polynômes de Tchebychev

Maple: premiers calculs et premières applications

TP 7 : oscillateur de torsion

1.1.1 Signaux à variation temporelle continue-discrète

8.1 Généralités sur les fonctions de plusieurs variables réelles. f : R 2 R (x, y) 1 x 2 y 2

Image d un intervalle par une fonction continue

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Chapitre 2 Le problème de l unicité des solutions

NOMBRES COMPLEXES. Exercice 1 :

EPFL TP n 3 Essai oedomètrique. Moncef Radi Sehaqui Hamza - Nguyen Ha-Phong - Ilias Nafaï Weil Florian

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable

LE PRODUIT SCALAIRE ( En première S )

Premiers pas avec Mathematica

SUJET ZÉRO Epreuve d'informatique et modélisation de systèmes physiques

Correction du Baccalauréat S Amérique du Nord mai 2007

Résolution d équations non linéaires

CARACTERISTIQUE D UNE DIODE ET POINT DE FONCTIONNEMENT

Rappels sur les suites - Algorithme

Repérage d un point - Vitesse et

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

ELEC2753 Electrotechnique examen du 11/06/2012

Baccalauréat S Nombres complexes Index des exercices sur les complexes de septembre 1999 à juin 2012 Tapuscrit : DENIS VERGÈS

MESURE ET PRECISION. Il est clair que si le voltmètre mesure bien la tension U aux bornes de R, l ampèremètre, lui, mesure. R mes. mes. .

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Automatique des systèmes linéaires continus

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Oscillations libres des systèmes à deux degrés de liberté

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Préparation à l agrégation de Sciences-Physiques ENS Physique. Outils informatiques

Correction du baccalauréat S Liban juin 2007

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

Dérivation : cours. Dérivation dans R

Les travaux doivent être remis sous forme papier.

Planche n o 22. Fonctions de plusieurs variables. Corrigé

TP 3 diffusion à travers une membrane

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours.

Cours de Mécanique du point matériel

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Fonctions homographiques

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Calcul Formel et Numérique, Partie I

TP : Suivi d'une réaction par spectrophotométrie

BTS Groupement A. Mathématiques Session Spécialités CIRA, IRIS, Systèmes électroniques, TPIL

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Cours d algorithmique pour la classe de 2nde

Simulation de variables aléatoires

Examen d informatique première session 2004

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

Transcription:

TP 4 : Modules classiques: Numpy et Matplotlib Objectifs du TP. S initier aux modules Numpy permettant de manipuler des tableaux de données (matrices) et Matplotlib permettant de tracer des graphes. Recommandation. 1. Dans Spyder, faire onglet exécution, puis configuration, et cocher la case «Exécuter dans l interpréteur Python actif». Ceci permet d exécuter le code directement vers la console, et de pouvoir observer la valeur des variables. 2. Cocher la case «Exécuter dans un nouvel interpréteur ipython» lorsque vous utilisez le module matplotlib. 1 Tracé de graphes : utilisation de matplotlib Pour tracer des courbes, on utilisera le sous-module pyplot du module matplotlib. Voici une manière de tracer le graphe de la fonction x x 2 1 sur l intervalle [ 2, 2] : import matplotlib.pyplot as plt # importation classique du module matplotlib.pyplot sous l'alias plt n=1000 # nombre de points X=[-2+4*k/(n-1) for k in range(n)] # n valeurs régulièrement espacées dans [-2,2]. Y=[x*x-1 for x in X] plt.plot(x,y) # on relie les points (X[i],Y[i]) par des segments: c'est une bonne approximation du graphe. plt.show() # et on l'affiche! On obtient ainsi le graphe de la figure 1. Figure 1: La fonction x x 2 1 avec matplotlib Figure 2: La même fonction, avec seulement 8 points Le principe est simple : on crée deux listes de même taille n, l une pour les abscisses, l autre pour les ordonnées. Pour tout i [[0, n 2], les points (X[i],Y[i]) et (X[i+1],Y[i+1]) sont alors reliés par des segments. Si le nombre de points est suffisamment important, on obtient un tracé correct. La figure 2 est obtenue en prenant seulement 8 points. Exercice 1. Tracé des fonctions sinus et cosinus. On rappelle que les fonctions cos et sin se trouvent dans le module math, ainsi que la constante π (pi). Il est facile de tracer plusieurs courbes sur un même graphique : il suffit de n afficher le graphe (avec show()) qu une fois toutes les courbes tracées (avec plot). 1. En vous inspirant de l exemple de la fonction carré, tracer sur le même graphe des fonctions sinus et cosinus sur l intervalle [ π, π]. 2. Affichez maintenant une légende. Pour cela, dans chaque plt.plot ajoutez l argument label="nom à afficher" (par exemple plt.plot(x,y,label="nom courbe 1")). Puis avant le plt.show(), indiquez d afficher la légende à l aide la commande plt.legend(). Svartz Page 1/6 2015/2016

3. De même, utilisez plt.title (avec une chaîne de caractères de votre choix en argument) pour mettre un titre. Il est hors de question de connaître toutes ces possibilités par cœur. Vous pouvez regarder rapidement dans le tutoriel officiel de matplotlib.pyplot 1 comment ajouter des options (grille, couleurs des graphes, allure du tracé...). 2 Manipulations des listes Python et tableaux Numpy 2.1 Les listes Tapez les lignes ci-après dans la console et notez le résultat. >>> L1=[1,2,3] >>> L1+5 >>> L1*5 >>> L1/3 >>> L2=[10,11,12] >>> L1+L2 >>> L1-L2 >>> L1*L2 >>> L1/L2 2.2 Utilisation du module Numpy Le module Numpy est un module que l on utilisera souvent au deuxième semestre : il permet de faire de l analyse numérique. Lorsqu on utilise ce module, on manipule des données chiffrées sous une forme plus spécifique que les listes Python : les tableaux (matrices) Numpy. On manipulera également les images à l aide de ce module. >>> import numpy as np #importation classique de numpy avec l'alias np >>> T1=np.array([1,2,3]) #conversion d'une liste en tableau numpy >>> T1 array([1, 2, 3]) Pour le moment, on ne voit pas tellement de différence avec les listes classiques. Comparons le résultat des opérations précédentes avec le résultat obtenu en convertissant au préalable les listes en tableaux Numpy à l aide de np.array. Tapez les lignes ci-après dans la console et notez le résultat. >>> T1=np.array([1,2,3]) >>> T1+5 >>> T1-5 >>> T1*5 >>> T1*3 >>> T1/3 >>> T2=np.array([10,11,12]) >>> T1+T2 >>> T1-T2 >>> T1*T2 >>> T1/T2 Ainsi, avec des tableaux numpy, les opérations +,,,, / ne produisent pas d erreur et ont bien un sens : celui de l opération terme à terme des tableaux. Attention, pour avoir un sens, les opérations en question doivent se faire sur des tableaux ayant même taille. Pour accéder à, ou modifier un élément d un tableau numpy, il faut procéder comme pour une liste. >>> T=np.array([0,1,2,3,4,5]) >>> T[1] 1 >>> T[2]=10 >>> T array([ 0, 1, 10, 3, 4, 5]) 1. http://matplotlib.org/users/pyplot_tutorial.html Svartz Page 2/6 2015/2016

Reprenons l exemple de la fonction carré, avec des tableaux Numpy. Une fonction utile est np.linspace, qui fournit des points régulièrement espacés dans un intervalle. import numpy as np X=np.linspace(-2,2,1000) #1000 points régulièrement espacés dans [-2,2] Y=X*X-1 plt.plot(x,y) plt.show() La fonction linspace permet de produire un tableau Numpy contenant un certain nombre de points régulièrement espacés dans un intervalle fixé. Remarquez que numpy contient aussi des versions des fonctions classiques (comme cos et sin). Ces fonctions sont vectorielles : si f est une telle fonction et X un tableau numpy, alors f(x) est un tableau numpy de même taille, contenant les images par f des éléments de X. La séquence suivante fournit une alternative à la première question de l exercice 1 (comme numpy possède aussi la définition de pi, on va la chercher dans numpy plutôt que dans le module math) : X=np.linspace(-np.pi,np.pi,1000) #pi se trouve aussi dans le module numpy! Y=np.cos(X) Z=np.sin(X) plt.plot(x,y) plt.plot(x,z) plt.show() Exercice 2. Tracé de la fonction exponentielle. Tracer le graphe de la fonction exponentielle entre -5 et 5 (en utilisant les tableaux numpy). 3 Utilisation du module Scipy pour résoudre des équations différentielles Le module Scipy permet de faire de l analyse numérique : calculs d intégrales, résolutions d équations numériques ou différentielles... On verra en cours des algorithmes (basiques) permettant de résoudre ces problèmes, pour le moment on se contente d utiliser des méthodes (évoluées) intégrées à Scipy. On travaillera dans cette section avec le problème d un circuit RLC classique, dont on cherche la tension u C aux bornes du condensateur, en fonction des paramètres R, L, C ainsi que de la tension E aux bornes du générateur. L R u C (t) E C Figure 3: Circuit RLC - Charge d un condensateur L équation différentielle vérifiée par la tension u C est la suivante : d 2 u C dt 2 + ω 0 du C + ω 2 Q dt 0u C = ω0e 2 avec ω 0 = 1 et Q = 1 L LC R C Cette équation différentielle scalaire d ordre deux peut se reformuler sous la forme d une équation différentielle vectorielle d ordre 1 : ( d uc. dt u C ) = f ( uc. u C ) avec f : R 2 R 2 la fonction ( x y ) ( y ω 2 0E ω0 Q y ω2 0x ) Svartz Page 3/6 2015/2016

Scipy ne résout que des équations différentielles d ordre 1, il faut donc lui présenter l équation différentielle sous cette forme. Dans le cas général, les coefficients de l équation différentielle dépendent du temps (ils ne sont pas constants comme ici), ainsi f doit prendre également en paramètre le temps t. En supposant les paramètres R, L, C et E affectés à des variables du même nom et les coefficients ω 0 et Q calculés, voici une définition de la fonction f utilisable par Scipy : def f(x,t): #X est un vecteur de taille 2. Le paramètre temporel t n'est pas utilisé ici. x,y=x[0],x[1] return np.array([y,w0**2*e-w0/q*y-w0**2*x]) #on retourne un vecteur de taille 2. Voici comment résoudre l équation différentielle avec Scipy. La fonction odeint du module Scipy résout les équations différentielles. Elle prend en paramètres : une fonction f sous la même forme que celle donnée ; un vecteur correspondant aux conditions initiales (pour la tension aux bornes d un condensateur dans un circuit. RLC fermé au temps 0, on a u C (0) et u C (0) tous deux nuls) ; un tableau de temps. import scipy.integrate as sci T=np.linspace(0,0.01,1000) #entre 0 et 10 ms! solution=sci.odeint(f,np.array([0,0]),t) La réponse fournie par Scipy est un tableau Numpy, contenant une approximation de la solution à l équation différentielle aux temps donnés par le tableau T. C est donc, pour cette équation différentielle, un tableau de taille len(t), dont les éléments sont eux-mêmes des tableaux de taille 2 (soit un tableau à deux dimensions). La composante solution[i][0] est donc la valeur de la tension u C (t i ), et la composante solution[i][1] celle de la dérivée de la tension u. C (t i ), avec t i le temps T[i]. Exercice 3. Tracé de la tension. Fixer les valeurs R = 50Ω, L = 7.0 10 2 H, C = 1.0 10 6 F et E = 5 V. 1. Calculer les valeurs ω 0 et Q. 2. Définissez une fonction f comme ci-dessus. Appelez odeint pour résoudre l équation différentielle comme cidessus, et faîtes print(solution) pour voir ce qui est renvoyé par la fonction. 3. Crééz une liste contenant les éléments solution[i][0] (c est-à-dire uniquement la tension), et tracez la courbe représentant la tension aux bornes du condensateur en fonction du temps. Vous devez obtenir une courbe comme celle de la figure 4. Figure 4: Tension aux bornes du condensateur avec Scipy Exercice 4. Calcul numérique de la pseudo-période. Écrire une fonction maximum_local(l) prenant en paramètre une liste de flottants, et retournant la liste des indices de ses maximum locaux (un tel i doit vérifier L[i]>=L[i-1] et L[i]>=L[i+1]). On ignorera les indices de début et de fin de la liste. L appliquer à la tension aux bornes du condensateur dans le cas pseudo-périodique pour en déduire une estimation de la pseudo-période. Vérifiez à l aide de la valeur théorique de cette pseudo-période. Svartz Page 4/6 2015/2016

Exercice 5. Tracé de la bande des ±5%. Ajoutez sur le graphe précédent 2 traits, indiquant la bande des ±5%. Vous pouvez les mettre en pointillés en ajoutant "--" en argument de la définition de la courbe. plt.plot(x,y,"--") Exercice 6. Temps de réponse à 5%. Écrire une fonction tps_rep(t,l,val_finale) prenant en paramètres une liste de temps T, la liste L des valeurs u c solution de l équation différentielle à chaque instant de la liste T et la valeur en régime permanent de la solution val_finale, et retournant la valeur du temps de réponse à 5%. On supposera que le temps de réponse est bien dans la liste T (ce que vous avez du vérifier dans le tracé précédent). Exercice 7. Tracé de solutions pour plusieurs valeurs de Q. 1. En prenant ω 0 = 3780 rad/s, E =5, tracez sur un même graphe les valeurs de u c pour t [0; 0,01], solutions de l équation différentielle pour Q {0.08, 0.09, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 2, 3, 4, 5} (créer la liste valq contenant ces valeurs). En légende devra apparaître la valeur de Q pour chaque courbe. 2. Pour les valeurs de Q dans valq, déterminez les valeurs des temps de réponse à 5%, que vous mettrez dans la liste valtr. 3. Tracez la courbes des temps de réponse en fonction des valeurs de Q. 4. Tracez sur le même graphe les courbes t r5% = 6 Q ω 0 et t r5% = 3 Q ω 0 et validez les approximations du temps de réponse que vous avez vues en physique pour les régimes pseudo-périodiques et apériodiques. Exercice 8. Portrait de phase. En vous inspirant de ce qui a été fait au-dessus, tracez le portrait de phase, il s agit de relier les points ( u C (t i ), du C dt (t i) ). 4 Exercice en plus Figure 5: Équation paramétrique du cercle Exercice 9. De jolis graphiques. Le code suivant permet de tracer et d afficher un cercle de centre (0, 0) et de rayon 1 (en effet, on relie des points de la forme (cos(θ), sin(θ)) avec θ prenant un ensemble de valeurs régulièrement espacés sur un intervalle de longueur 2π). plt.axis("equal") X=np.linspace(-np.pi,np.pi,1000) Y=np.cos(X) Z=np.sin(X) plt.plot(y,z) plt.show() Remarquez l option plt.axis("equal") qui forcent les axes à avoir des graduations égales, ce qui permet d obtenir visuellement un cercle et non une ellipse. Pour ce tracé on utilise l équation paramétrique du cercle (voir figure 5). θ représente l angle entre l axe des abscisses et le vecteur OM. On le fait varier entre 0 et 2π pour parcourir tout le cercle. Svartz Page 5/6 2015/2016

1. Écrire une fonction cercle(a,b,r) permettant de tracer le cercle de centre (a, b) et de rayon r. Attention : dans la fonction, on tracera uniquement le cercle, on ne l affichera pas. On peut ainsi utiliser la fonction comme suit : cercle(1,2,3) #trace le cercle de centre (1,2) et de rayon 3. plt.show() #l'affiche. Votre fonction agissant uniquement par effets, return est inutile. Essentiellement, on créera des listes de points comme ci-dessus, et on fera appel à plot. 2. En utilisant la fonction précédente (plusieurs fois!), débrouillez vous pour réaliser des figures comme celles ci-dessous. On fera évidemment usage de boucles for. Dans la première figure, les cercles ont des rayons 1,2,3,... La deuxième est constituée de cercles tangents de même rayons, de même que la quatrième (sous forme de pyramide). Dans la troisième, les cercles successifs sont tangents et ont des rayons 1, 1 2, 1 4,.... Svartz Page 6/6 2015/2016