Informatique en PCSI et MPSI Champollion 2014-2015 · A. Hassan@Champollion PCSI-MPSI – 3 ......
Transcript of Informatique en PCSI et MPSI Champollion 2014-2015 · A. Hassan@Champollion PCSI-MPSI – 3 ......
A. Hassan@Champollion PCSI-MPSI – 1
Informatique en PCSI et MPSIChampollion 2014-2015
A. HASSAN
2 décembre 2014
Programmation en Python (suite)Les Fonctions
Programmation enPython (suite)Les FonctionsPourquoi lesfonctions?Fonctions
intégrées( built in
functions)
Fonctionsimportées
Exemple
pratique:Fonctionsmathématiquesusuelles, le module
math et numpy
Quelques Fonctionsdu module math
Liste des modulesimportants
Définir ses propres
fonctions : def
Les fonctions à lavolée: l’opérateur
lambda
Définir ses propresfonctions :Exemples
Fonction versusProcédureVariable globalesVs Variables localesFonctions(. . . suite)
Fonctionsrécursives (àdétailler en 2eannée)
A. Hassan@Champollion PCSI-MPSI – 2
Pourquoi les fonctions ?
Programmation enPython (suite)Les FonctionsPourquoi lesfonctions?Fonctions
intégrées( built in
functions)
Fonctionsimportées
Exemple
pratique:Fonctionsmathématiquesusuelles, le module
math et numpy
Quelques Fonctionsdu module math
Liste des modulesimportants
Définir ses propres
fonctions : def
Les fonctions à lavolée: l’opérateur
lambda
Définir ses propresfonctions :Exemples
Fonction versusProcédureVariable globalesVs Variables localesFonctions(. . . suite)
Fonctionsrécursives (àdétailler en 2eannée)
A. Hassan@Champollion PCSI-MPSI – 3
• Éviter la redondance et la répétition• Décomposer et segmenter un problème complexe en sous
problèmes moins complexes• Faciliter l’analyse et améliorer la clarté du code• Re-utilisation du code dans d’autres programmes.• En fin cacher des informations : on n’exhibe que le titre de la
fonction et non son code (qui peut être considérer commeune propriété intellectuelle).
Certaines fonctions sont disponibles au démarrage de Pyhton (built-in functions ), d’autres sont à chercher dans des modulesspécialisés, sinon il faut les créer. . .
Fonctions intégrées( built in functions)
A. Hassan@Champollion PCSI-MPSI – 4
Fonctions immédiatement disponibles au démarrage de Python. Liste nonexhaustive :Syntaxe Emploi
abs(a) valeur absolue : |a|round(a) et round(a,[n]) arrondi de a, ou à n décimalesbin(a), hex(a), oct(a) conversion en binaire, hexadécimale, octale
chr(a) exemple : chr(97) renvoie ’a’
ord(a) la réciproque de chr()
complexe (a,b) renvoie le complexe a+ ib
len(a) longueur (chaine, tuple, liste, ensemble. . . )divmod (a,b) quotient et reste de la division a÷ b
min(a), max(a) max et min d’une séquencepow(x,y,[z] xy ou xymod z lorsque z présentint(a),float(a), list(a)
str(a), tuple(a), ens(a)conversion entre types
sorted(a) trier une liste : sorted([2,1,1,3,2])
� �
�
Obtenir de l’aide : help(nom_fonction)
Fonctions importées
A. Hassan@Champollion PCSI-MPSI – 5
Certains fonctions sont rangées dans des packages, modules, que l’on importe.
Exemple : Si MyModule.py contient des fonctions :f1 et f2 (parmi d’autres). On veut utiliser
f1
1. Tout importer (toutes les commandes de MyModule) :
import MyModule
# ut i l i s a t i o n de f1 (mais avec l e pre f i x : MyModule)MyModule .f1(x,y) # f2 es t d i sponib l e
2. Importer uniquement les fonctions qui nous intéressent, ici f1 :
from MyModule import f1
# ut i l i s a t i o n de f1 (mais sans l e pre f i x : MyModule)f1(x,y) # f2 n ’ es t pas d isponib l e
3. Importer en créant un alias, ainsi on évite les conflits des noms :
import MyModule as MyMo # al i a s MyMo# u t i l i s a t i o n de f1 (mais avec l e pre f i x MyMo)MyMo.f1(x,y)
4. Tout importer et sans préfixe :
from MyModule import *
# ut i l i s a t i o n de f1 (mais sans l e pre f i x MyMo)f1(x,y)
Exemple pratique : Fonctions mathématiques usuelles,le module math et numpy
A. Hassan@Champollion PCSI-MPSI – 6
On charge le module math avec la commande import.
1. Directement(avec préfixe) :import math
x=math.pi # x← πy=math.cos(x) # y reco i t cos(π) = −1
2. Utiliser un alias(meilleure façon) :import math as m # remplacer pre f ixe numpy par mx=m.pi # x← πy=m.cos(x) # y← cos(π)
3. Charger des fonctions spécifiques :from math import cos ,exp ,sin ,pi # uniquement :π, cos , sin et exp
x=pi # x← π
y=exp(-x)-cos(x) # y← e−π − cos(π)
4. Tout charger :from math import *
x=pi # x← π
y=exp(-x)-cos(x) # y← e−π − cos(π)
5. Pour connaître le contenu d’un module, avoir de l’aide :import math
dir(math) # af f i che l e s fonctions contenues dans mathhelp (math.gamma) # une f i che d ’ aide sur la fonction gamma
Quelques Fonctions du module math
A. Hassan@Champollion PCSI-MPSI – 7
syntaxe fonctions
exp; log; log10; log2 exponentielle et logarithmescos; sin; tan Fonctions trigonométriquesacos; asin; atan; atan2 Fonctions trigonométriques réciproquescosh; sinh; tanh Fonctions hyperboliquesacosh; asinh; atanh Fonctions hyperboliques réciproquestrunc; floor; ceil
sqrt;pow√ et puissance
1 import math as mm
2 mm.log10 (0.0001) # :3 mm.log2 (32) # :4 mm.cosh (0) # :5 mm.log2(mm.pow(2,5))# :6 mm.floor (-5.6) # :7 mm.trunc (-5.6) # :8 mm.ceil (-5.6) # :
Liste des modules importants
A. Hassan@Champollion PCSI-MPSI – 8
1. numpy pour l’analyse numérique et calcul matriciel.
2. scipy une surcouche de numpy , calcul intégral et diffrentiel, optimisation
3. matplotlib pour les graphiques.
4. random pour le calcul des probabilités.5. time pour l’utilisation de l’horloge de l’ordinateur.6. os pour la gestion des fichiers et utiliser les fonctions du système
d’exploitation.
Définir ses propres fonctions : def
A. Hassan@Champollion PCSI-MPSI – 9
Syntaxe générale :
1 # le nom que je donne es t MyFunction2 def MyFunction(v1,v2 ,..., df1=a,df2=b, *g): # les : marque l e debut3 """ Entre ces trois guillemets on ecrit a quoi sert cette fonction , surtout
4 Entrees : ses arguments v1, v2, ..., df1 ,.. , *g,
5 Sorties : ce qu’elle renvoie
6 """
7 global x1,x2 ,... # parametres globaux s ’ i l y en a8 instruction1
9 instruction2
10 i f i>1:
11 op1
12 op2
13 ............
14 return s1,s2 ,... # valeurs renvoyees par la fonction s i je veux15 # FIN DE L’INDENTATION du Block MyFunction16 def MyFunction2(): # I l y a d ’ autres fonctions dans la vie17 instr.. # instruct ion hors la fonction nomFunction
Pour utiliser cette fonction, il suffit de taper :
1 MyFunction(x,y,z ,...) # Avec l e nombre qu ’ i l faut d ’ arguments2 a=MyFunction(x,y,z ,...) # Stocker l e s valeurs retrournees pour l e s t r a i t e r apres
Les fonctions à la volée : l’opérateur lambda
Programmation enPython (suite)Les FonctionsPourquoi lesfonctions?Fonctions
intégrées( built in
functions)
Fonctionsimportées
Exemple
pratique:Fonctionsmathématiquesusuelles, le module
math et numpy
Quelques Fonctionsdu module math
Liste des modulesimportants
Définir ses propres
fonctions : def
Les fonctions à lavolée: l’opérateur
lambda
Définir ses propresfonctions :Exemples
Fonction versusProcédureVariable globalesVs Variables localesFonctions(. . . suite)
Fonctionsrécursives (àdétailler en 2eannée)
A. Hassan@Champollion PCSI-MPSI – 10
On peut Définir des fonctions simples à la volée :
1 # pour de f in i r f : x 7→ 2x2 − 5
2 f=lambda x: x**2-5 # et c ’ es t f a i t
3 # pour de f in i r (x;y) 7→ g(x;y) =√
x2 + y2
4 g=lambda x,y : (x**2+y**2)**(0.5)
5 # A koi Serje ?:6 mystery=lambda l:len(set(l))
7 mystery([1,2,4,-1,2,1]) # Alors?8 mystery("coucou c’est moi") # Re−Alors?
Définir ses propres fonctions : Exemples
A. Hassan@Champollion PCSI-MPSI – 11
Exemple élémentaire : Écrire une fonction qui donne le reste et le quotient dedeux entiers positifs
1 def DivEtReste(x,y):
2 """ Donne le quotient et reste de l’entier x par l’entier y (non nul)
3 Entrees : x et y
4 Sorties : d le quotient et r le reste """
5 # On expl ique a quoi ser t la fonction6 x=int(x); y=int(y); # on s ’ assure que x et y ent iers7 i f x<0 or y<=0:
8 return "x et y doivent etre >0 " #9 i f x<y: # cas ou x < y
10 d=0; r=x;
11 return (d,r)
12 else: # cas ou x ≥ y13 d=0;
14 while x>=y:
15 x=x-y
16 d=d+1
17 r=x
18 return (d,r)
19 # fin du scr ip t de DivEtReste
Exemple d’utilisation : >>> DivEtReste(10,3)
(3,1)
Fonction versus Procédure
A. Hassan@Champollion PCSI-MPSI – 12
1. Procédure
1 def MySum(x,y):
2 z=x+y
3 print(z)
4 # Uti l i sa t ion :5 MySum(5,6)
6 # Par contre7 11* MySum(5,6)
2. Fonction (Valeur renvoyée) avec return v1,v2, ...
1 def MySum(x,y):
2 z=x+y
3 return(z)
4 # Uti l i sa t ion :5 print(MySum (5,6))
6 # Maintenant :7 11* MySum(5,6)
A
Éviter return print("mon resultat est:",res) où res est la valeur que
calcule funct
Plutôt : s=funct(x,y,..) puis print(s)
Variable globales Vs Variables locales
A. Hassan@Champollion PCSI-MPSI – 13
1. Variable(s) locale(s)
1 def MySum(x,y):
2 z=x+y
3 p=x*y
4 return(z)
5 # Uti l i sa t ion :6 >>> MySum (5,6)
7 #8 >>> 11* MySum(5,6)
9 # et l e produit :10 >>> print(p) # Mais i l es t ou?11 #12 Traceback (most recent call last ):
13 File "<console >", in <module >
14 NameError : name ’p’ is not defined
�
�
�
La variable p est locale elleest crée à l’intérieur de la fonc-tion et détruite de suite après sonusage.
2 Variable(s) globale(s)
1 v=3.14159
2 def MySum(x,y):
3 global p,v
4 z=x+y
5 p=x*y
6 v=10*z
7 return(z)
8 # Uti l i sa t ion :9 >>> print(MySum (5,6))
10 # Maintenant :11 >>> print(p) # : 3012 >>> print(v) # : 110
�
�
�
Les variable p et v sont glo-bales.Elles sont accessible et modi-fiables par la fonction
Fonctions (. . . suite)
A. Hassan@Champollion PCSI-MPSI – 14
1. Fonction sans arguments :1 def Bonjour (): # Ne pas oub l ier l e s : A
2 return "Bonjour " # Mais . . .3 # fin du bloc de la fonction
2. Fonctions avec arguments dont certains ont des valeurs par défaut :
1 def Carre_Et_n_Bonjour (x,n=1): # calcu le x2 et ecr i re Bonjour ! n f o i s2 return(x*x,n*"Bonjour ! ") # par defaut n vaut 13 # fin du bloc Bonjour4 # Ut i l i s e r la fonction Carre_Et_n_Bonjour5 a=Carre_Et_n_Bonjour (4) # : (16 ,Bonjour ! )6 b=Carre_Et_n_Bonjour (4,3) # : (16 , Bonjour ! Bonjour ! Bonjour ! )7 c,bn=Carre_Et_n_Bonjour (4,3) # : c=16 et bn= Bonjour ! Bonjour ! Bonjour !8 print(a); print(b[1])
3. Fonctions avec un nombre indéterminé d’arguments :
1 def CompteVoyelles (* phrase ):# le nombre de l e t t r e s de phrase inconnu a l ’ avance2 voy=[’a’,’A’,’e’,’E’,’i’,’I’,’o’,’O’,’u’,’U’]# les voye l l e s3 s=0 # compteur de voye l l e s i n i t i a l i s e a 04 for c in phrase: # c parcourt l e s caracteres de phrase5 i f c in voy:
6 s+=1
7 return s
8 # Uti l i sa t ion :9 print(CompteVoyelles(’o’,’h’,’l’,’a’,’l’,’a’))# : 3
10 ph=’ceci est une phrase contenant 16 voyelles , on parie?’#11 CompteVoyelles (*ph) # : 17 perdu
Fonctions récursives (à détailler en 2e année)
A. Hassan@Champollion PCSI-MPSI – 15
Une fonction est dite récursive, ssi elle contient un appel à elle même.
Elle doit vérifer les conditions sui-vantes :
1. Elle contient un (ou plusieurs)cas de base (ou de démarrage)
2. Elle doit toujours modifier sontétat pour se ramener aux cas debase
3. Elle fait appel à elle même
Exemples :
1 # exemple 1:2 # la fonction f a c t o r i e l l3 def fact(n):
4 i f n==0:
5 return 1
6 else:
7 return fact(n-1)
8 # exemple 2:9 # fonction qui somme l e s ch i f f r e s
10 # d ’un entier en base b11 def sumc(n,b=10):
12 i f 0<=n<=9:
13 return n
14 else:
15 return n%b+sumc(n//b)
Appliquer une fonction aux éléments d’uneliste(Exemple)
A. Hassan@Champollion PCSI-MPSI – 16
EvenDigits compte le nombre de chiffres décimaux pairs d’un entier :
1 ##2 def EvenDigits(n,b=10):
3 """
4 Entree(s): n entier (b=10 par defaut)
5 Sortie(s): s le nombre de chiffres pairs """
6 s=0; # b=10 par defaut7 while n>0:
8 r=n%b;
9 i f r%2==0:
10 s+=1
11 n=n//b;
12 return s
13 # Uti l i sa t ion de EvenDigits14 a=2**13+51; # a = 213 + 5115 test=EvenDigits(a)
16 print("nombre de chiffres pairs dans a=",a," est:",test)
17 x=range (22 ,56)
18 for k in x:
19 print(" k=",k," on a ",EvenDigits(k)," chiffres pairs")
20 #21 lp=[ EvenDigits(k) for k in x]
22 print(lp)
23 #24 lp2=list(map(EvenDigits ,x)) # x doit etre un i t e r a b l e25 print(lp2) # transformer l e r e su l t a t en l i s t avant l ’ a f f i chage26 ##
Exercice
Programmation enPython (suite)Les FonctionsPourquoi lesfonctions?Fonctions
intégrées( built in
functions)
Fonctionsimportées
Exemple
pratique:Fonctionsmathématiquesusuelles, le module
math et numpy
Quelques Fonctionsdu module math
Liste des modulesimportants
Définir ses propres
fonctions : def
Les fonctions à lavolée: l’opérateur
lambda
Définir ses propresfonctions :Exemples
Fonction versusProcédureVariable globalesVs Variables localesFonctions(. . . suite)
Fonctionsrécursives (àdétailler en 2eannée)
A. Hassan@Champollion PCSI-MPSI – 17
Écrire une fonction puiss(x,n) qui renvoie xn, où x est unflottant et n est un entier relatif (i.e. n ∈ Z).
1 def puiss(x,n):
2 nn=n
3 s=1
4 i f nn <0: # cas des puissances negatives5 nn=-nn
6 for k in range(nn):
7 s=s*x
8 i f n<0:
9 return 1/s
10 else:
11 return s
C’est une très mauvaise méthode surtout lorsque n est trèsgrand.On verra comment employer un algorithme d’exponentiationrapide . . . à suivre
Exemple Fondamental : Évaluation polynômiale
A. Hassan@Champollion PCSI-MPSI – 18
Soit : P(x) = a0 + a1x+ a2x2 + · · ·+ an−1x
n−1 + anxn =
k=n∑
k=0
akxk, (an 6= 0).
Évaluer P en un point x. P est donnée sous forme de liste de coefficients (selonl’ordre décroissant ou croissant de degré).Méthode naïve :
Entrées : A liste des coeffs et x
point d’évaluationSorties : s valeur de P(x)s← 0
pour k = 0 à longueur(A)-1 faires← s+A[k].xk
renvoyer s
Oups : Il faut penser à programmerx 7→ xk
1 def naivePolynom(A,x,reverse =0):
2 """
3 Evaluation naive d’un polynome
4 Entrees : A liste des Coeffs
5 x valeur d’evaluation
6 Sorties : P(x)
7 """
8 A=list(A)
9 n=len(A) # n − 1 = deg(P)
10 s=0 # Attention : pour moi 00 = 111 for k in range(n):
12 s+=A[k]*x**(k) # s← s + akxk
13 return s
Algorithme d’Horner
A. Hassan@Champollion PCSI-MPSI – 19
On ré-ecrit
P(x) = (((an)x+ an−1)x+ an−2)x+ an−3)x+ · · ·+ a0
Aucun calcul de puissance, que des multiplications et additions :
Entrées : A liste des coeffs et x
point d’évaluation classésdans le sens croissant desdegrés
Sorties : s valeur de P(x)
s← 0
pour k = len(A) à 0 (pas=-1)faire
s← s.x+A[k]renvoyer s
1 def Horner(A,x,c=1):
2 """
3 Evaluation polynomiale selon Horner
4 Entrees : A liste des Coeffs
5 (sens croissant des degres );
6 x valeur d’evaluation
7 Sorties : P(x)
8 """
9 # On met l e s coe f f s dans l e sens voulu10 i f c!=1:
11 A=A[::-1]
12 s,n=0,len(A)
13 for i in range(n):
14 s=s*x+A[n-1-i]
15 return s
Comparaison des résultats
A. Hassan@Champollion PCSI-MPSI – 20
1 test =50000*[1] # polynome de degre 499992 t1=tm.time ()
3 pn=naivePolynom(test ,0.0)
4 tn=tm.time()-t1
5 #6 t1=tm.time ()
7 ph=Horner(test ,0.0)
8 th=tm.time()-t1
9 #10 print(’Comparaison des algorithmes’)
11 print(" --------------------------- ")
12 print(" Algorithme naif:",tn ," valeur p(x)=",pn)
13 print(" Algo d’Horner:",th," valeur p(x)=",ph)
14 ##−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−15 >>> (executing cell "Resultats du Test" (line 54 of "Horner.py"))
16 Comparaison des algorithmes
17 ---------------------------
18 Algorithme naif: 250.46875 valeur p(x)= 1.0
19 Algo d’Horner: 0.03125 valeur p(x)= 1.0
20 # rapport de vitesse avec une puissance tres naive
21 >>>tn/th
22 8015.0
Python ne calcule pas xk naïvement
A. Hassan@Champollion PCSI-MPSI – 21
Utilisation de la fonction puissance de Python a**b , ou pow(a,b , (qui n’estpas naïve).
1 ## Resultats du Test2 test =50000*[1] # polynome de degre 499993 t1=tm.time ()
4 pn=naivePolynom(test ,0.0)
5 tn=tm.time()-t1
6 #7 t1=tm.time ()
8 pnl=lessNaivePolynom (test ,0.0)
9 tln=tm.time()-t1
10 #11 t1=tm.time ()
12 ph=Horner(test ,0.0)
13 th=tm.time()-t1
14 #15 print(’Comparaison des algorithmes’)
16 print(" --------------------------- ")
17 print(" Algorithme naif:",tn ," valeur p(x)=",pn)
18 print(" Algorithme moins naif:",tln ," valeur p(x)=",pnl)
19 print(" Algo d’Horner:",th," valeur p(x)=",ph)
20 #−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−21 Comparaison des algorithmes
22 ---------------------------
23 Algorithme naif: 0.140625 valeur p(x)= 1.0
24 Algo d’Horner: 0.03125 valeur p(x)= 1.0
25 >>> tn/th
26 4.5
27 >>> # Horner est 4 fois plus rapide
Graphique avec Python
Programmation enPython (suite)Les Fonctions
Graphique avecPython
Tracé de courbe
RésultatTracé decourbe. . .Nuage depoints
Nuage de points
Nuage de points
Tracé de plusieursfenêtres graphiques
Sous figures:RésultatsSous figures:Exemples
Le SHOWTracé de nappes en3D
Visualisation en 3D
A. Hassan@Champollion PCSI-MPSI – 22
Tracé de courbe
A. Hassan@Champollion PCSI-MPSI – 23
Pour tracer des courbes on a besoin du package matplotlib
Exemple I : Traçons les courbes des sinus et cosinus :
1 ##2 from numpy import * # charger l e module numpy3 from matplotlib.pyplot import * # charger l e package matp lo t l i b . pyplot4 from os import chdir ,getcwd
5 chdir("G:\\ Azzam\\ MyPython \\ DropAzzam \\ Python1stYear")
6 ##7 x=linspace (-5,5,100) # engendrer 100 points entre −5 ( inc lus ) et 58 plot(x,cos(x),’-r’,x,sin(x),’bo’,linewidth =4)
9 # ou bien10 #p1=p lo t (x , sin (x ) , ’ r−’) # ou marker=’s ’11 #p2=p lo t (x , cos (x ) , ’ bo ’) # ou marker=’v ’12 axis =[-5,5,-1.5,1.5] # [xmin ,xmax,ymin ,ymax]13 title(’Fonctions $x\mapsto\cos(x)$ et $x\mapsto \sin(x)$’) # t i t r e de la f igure14 ylabel(’les ordonnees ’) # labe l des ordonnÃľes15 xlabel(’les x’) # labe l des absc i sses16 legend (["sin","cos"]) # une legende17 #annotate ( ’ t ex te ’ ,1 ,1) # ecr ire du tex te18 grid(True)
19 savefig ("figure_1 .eps") # ou save (" f i g1 . png")pour autre format de l ’ image20 show () # Montrer l e graphique
Résultat
A. Hassan@Champollion PCSI-MPSI – 24
−6 −4 −2 0 2 4 6les x
−2.0
−1.5
−1.0
−0.5
0.0
0.5
1.0
1.5
2.0le
s ord
onnees
locmaxMax local
Fonctions x↦cos(x) et x↦sin(x)
sincos
Tracé de courbe. . . Nuage de points
A. Hassan@Champollion PCSI-MPSI – 25
Exemple II :
1 hold(’off’)
2 ##3 # graphique d ’une fonction cont non der ivab l e4 x=linspace (0 ,3.14 ,1000)
5 y1=[]
6 y2=[]
7 y3=[]
8 y4=[]
9 y5=[]
10 for t in x:
11 y1.append(arccos(cos(2*t))/2.)
12 y2.append(arccos(cos(4*t))/4.)
13 y3.append(arccos(cos(8*t))/8.)
14 y4.append(arccos(cos (16*t))/16.)
15 y5.append(arccos(cos (32*t))/32.)
16 clf()
17 plot(x,y1 ,x,y2,x,y3 ,x,y4)
18 show ()
19 Y=array(y1)+ array(y2)+array(y3)+array(y4)+ array(y5)
20 title(’fonction continue mais derivable nulle part ’)
21 plot(x,Y)
22 savefig (’figure_5 .eps’)
Nuage de points
A. Hassan@Champollion PCSI-MPSI – 26
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0
0.5
1.0
1.5
2.0
2.5fonction continue mais derivable nulle part
Nuage de points
A. Hassan@Champollion PCSI-MPSI – 27
−6 −4 −2 0 2 4 60.00
0.05
0.10
0.15
0.20
0.25
0.30
0.35
0.40Figure en Nuage de points x↦x2 e−x
2
Tracé de plusieurs fenêtres graphiques
A. Hassan@Champollion PCSI-MPSI – 28
Exemple III :
1 clf()
2 t=linspace (-5,5,100)
3 xt=sin(t)
4 yt=cos(t) # on aurait pu xt , yt=sin ( t ) , cos ( t )5 plot(t,xt ,’r-’,t,yt ,’y-’,linewidth =5)
6 #axes ( ’ equal ’)7 #plo t ( xt , yt )8 show ()
9 ##10 def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
11 #12 n = 256
13 x = linspace (-3,3,n)
14 y = linspace (-3,3,n)
15 X,Y = meshgrid (x,y)
16 #17 axes ([0.025 ,0.025 ,0.95 ,0.95])
18 subplot (211)
19 Z=f(X,Y)
20 plot_surface(X , Y , Z )
21 show ()
22 subplot (212)
23 contourf (X, Y, f(X,Y), 8, alpha=.75, cmap=cm.hot)
24 C = contour (X, Y, f(X,Y), 8, colors=’black’, linewidth =.5)
Sous figures : Résultats
A. Hassan@Champollion PCSI-MPSI – 29
0 1 2 3 4 5−0.8−0.6−0.4−0.2
0.00.20.40.60.81.0
Osc
illati
on a
mort
ie
Histoire de 2 sous_figures(subplots)
0.0 0.5 1.0 1.5 2.0temps (s)
−1.0
−0.5
0.0
0.5
1.0
Norm
al(
non a
mort
i)
Sous figures : Exemples
A. Hassan@Champollion PCSI-MPSI – 30
Tracer (t, x(t)), (t, y(t)) puis le portrait de phase (x(t), y(t)) [courbeparamétrée].x(t) = t.e−t cos(t) et y(t) = 2te−t.sin(t)
1 # exemple de remplissage2 fill(x, y, ’r’)
3 grid(True)
4 show ()
5 ##6 # courbes parametrees7 clf()
8 t=linspace (0 ,6.28 ,500) # engendrer 100 points entre 0 ( inc lus ) et 2π9 xt=cos(t)+.5*cos (7*t)+sin (17*t)/3.
10 yt=sin(t)+.5*sin (7*t)+cos (17*t)/3.
11 plot(xt,yt,’-r’,linewidth =4)
12 # ou bien13 #p1=p lo t (x , sin (x ) , ’ r−’) # ou marker=’s ’14 #p2=p lo t (x , cos (x ) , ’ bo ’) # ou marker=’v ’15 axis =[ -1.5 ,1.5 , -1.5 ,1.5] # [xmin ,xmax,ymin ,ymax]16 title(’Courbes parametrees’)
17 # t i t r e de la f igure18 #y labe l ( ’ l e s ordonnees ’) # l a b e l des ordonnÃľes19 #xlabe l ( ’ l e s x ’) # l a b e l des absc i sses20 #legend ([" sin " ,"cos "]) # une legende21 grid(True)
Le SHOW
A. Hassan@Champollion PCSI-MPSI – 31
0 1 2 3 4 5 6 7−0.2
−0.1
0.0
0.1
0.2
0.3t↦x(t)
0 1 2 3 4 5 6 7−0.6
−0.4
−0.2
0.0
0.2
0.4
0.6
0.8t↦y(t)
−0.2 −0.1 0.0 0.1 0.2 0.3−0.6
−0.4
−0.2
0.0
0.2
0.4
0.6
0.8t↦x(t),y(t)
−0.6−0.4−0.2 0.0 0.2 0.4 0.6 0.80
1
2
3
4
5
6
7inversion d'axes
Tracé de nappes en 3D
A. Hassan@Champollion PCSI-MPSI – 32
Exemple : Tracé de la nappe z = sin(x2 + y2)
1 from mpl_toolkits.mplot3d import Axes3D
2 from matplotlib import cm
3 from matplotlib.ticker import LinearLocator , FormatStrFormatter
4 import matplotlib.pyplot as plt
5 import numpy as np
6
7 fig = plt.figure () # def in i r une f igure8 ax = fig.gca(projection=’3d’)
9 X = np.arange(-5, 5, 0.25) # in t e r va l l e des x10 Y = np.arange(-5, 5, 0.25) # in t e r va l l e des y11 X, Y = np.meshgrid (X, Y) # creer la g r i l l e12 R = np.sqrt(X**2 + Y**2)
13 Z = np.sin(R) # surface Z = sin(x2 + y2)14 surf = ax.plot_surface(X, Y, Z, rstride =1, cstride =1, cmap=cm.coolwarm ,
15 linewidth =0, antialiased=False)
16 ax.set_zlim (-1.01, 1.01) # fenetre des z
17 plt.title("nappe z = sin(x2 + y2)")18 ax.zaxis.set_major_locator (LinearLocator (5)) # graduation axe z19 ax.zaxis.set_major_formatter (FormatStrFormatter (’%.02f’))# format des nombres20 fig.colorbar (surf , shrink =0.5, aspect =5)
21 plt.savefig ("G:\\ Azzam\\ MyPython \\ DropAzzam \\ Python1stYear \\fig3d.eps")
22 plt.show ()