Académique Documents
Professionnel Documents
Culture Documents
6
1. Le
module
Numpy
Le
module
Numpy
de
Python
est
un
ensemble
de
fonctions
pour
le
calcul
scientifique,
regroupant
des
fonctions
mathématiques
(valeur
absolue,
module
et
argument
d’un
nombre
complexe,
fonctions
trigonométriques…),
ainsi
que
des
fonctions
destinées
à
manipuler
des
vecteurs
ou
tableaux.
L’ensemble
de
la
documentation
sur
le
module
Numpy
est
accessible
sur
le
site
:
http://www.numpy.org/
La
première
syntaxe
charge
le
module
Numpy,
l’exécute
et
place
toutes
les
fonctions
du
module
dans
l’espace
des
noms
communs.
Si
deux
modules
possèdent
des
fonctions
portant
le
même
nom,
seule
la
fonction
du
dernier
module
importé
sera
exécutable
(puisque
son
importation
aura
écrasé
la
précédente).
C’est
pourquoi,
on
préfèrera
toujours
la
seconde
syntaxe,
qui
réalise
une
importation
en
notation
pointée.
Avec
ce
type
de
syntaxe,
les
fonctions
du
module
ne
sont
pas
importées
dans
l’espace
des
noms
communs
mais
dans
un
espace
dédié.
Pour
y
accéder,
il
faudra
en
revanche
préciser
dans
quel
espace
propre
il
faut
aller
chercher
la
fonction,
selon
la
syntaxe
:
import numpy as np # on importe le module Numpy, en nommant l’espace dédié np
np.linspace(0,1,5) # on appelle ici la fonction linspace du module Numpy
Voici
quelques
exemples
de
fonctions
mathématiques
contenues
dans
le
module
Numpy
:
•
np.rint(x)
:
renvoie
le
nombre
entier
le
plus
proche
du
nombre
flottant
x
•
np.floor(x)
:
renvoie
la
partie
entière
supérieure
du
nombre
flottant
x
•
np.ceil(x)
:
renvoie
la
partie
entière
inférieure
du
nombre
flottant
x
•
np.sqrt(x)
:
renvoie
la
racine
carrée
de
x
•
np.abs(x)
:
renvoie
la
valeur
absolue
de
x
2
Chapitre
6
:
Outils
graphiques
et
numériques
de
Python
Les
fonctions
mathématiques
contenues
dans
le
module
Numpy
sont
redondantes
avec
celles
du
module
math
(elles
généralisent
en
fait
les
fonctions
du
module
math
pour
tous
les
types,
y
compris
les
tableaux)
:
il
est
donc
inutile
d’importer
le
module
math
dès
que
l’on
importe
Numpy.
Notons
que
dans
la
fonction
np.arrange
la
borne
supérieure
de
l’intervalle
est
exclue
du
tableau,
alors
que
dans
la
fonction
np.linspace
la
borne
supérieure
de
l’intervalle
est
incluse
dans
le
tableau.
2. Le
module
Matplotlib
Le
module
Matplotlib
de
Python
contient
des
fonctions
pour
réaliser
des
graphiques
2D
et
3D
(tracé
de
fonctions,
de
courbes
de
points,
d’histogrammes,
d’images
en
fausses
couleurs…).
L’ensemble
de
la
documentation
sur
le
module
Matplotlib
est
accessible
sur
le
site
:
http://matplotlib.org/
Chapitre
6
:
Outils
graphiques
et
numériques
de
Python
3
Remarque
:
le
module
Matplotlib
contient
également
le
sous-‐module
pylab,
qui
combine
les
fonctions
de
tracé
du
module
pyplot
et
les
fonctions
de
Numpy,
permettant
ainsi
de
ne
réaliser
qu’une
importation.
Exemple
:
import numpy as np
import matplotlib.pyplot as pl
x = np.linspace(0,2*pi,100)
y = np.sin(x)
pl.plot(x,y)
pl.ylim(-2,2) # l’axe des ordonnées sera affiché entre -2 et 2
pl.show()
x = np.linspace(0,2*pi,100)
y = np.sin(x)
pl.plot(x,y)
pl.ylim(-2,2)
pl.title(‘Tracé de la fonction sinus’) # on ajoute un titre au graphique
pl.xlabel(‘Angle (en radians)’) # on ajoute un titre à l’axe x
pl.show()
Style
Syntaxe
Ligne
en
traits
pointillés
‘-‐-‐’
Lignes
en
pointillés
‘:’
Succession
traits/points
‘-‐.’
Chapitre
6
:
Outils
graphiques
et
numériques
de
Python
5
6
Chapitre
6
:
Outils
graphiques
et
numériques
de
Python
Exemple
:
import numpy as np
import matplotlib.pyplot as pl
def f(t)
return np.exp(-t)*np.cos(2*np.pi*t)
3. Le
module
Scipy
Le
module
Scipy
est
un
ensemble
de
fonctions
mathématiques
avancées
(résolution
d’équations
différentielles,
méthodes
de
calcul
intégral,
calcul
de
transformées
de
Fourier,
traitement
d’images…).
L’ensemble
de
la
documentation
sur
le
module
Numpy
est
accessible
sur
le
site
:
http://scipy.org/
L’importation
du
module
Scipy
peut
se
réaliser
selon
la
syntaxe
suivante
:
import scipy as sp
3.1.
Interpolation
En
analyse,
l’interpolation
est l’opération
permettant
de
construire
une
courbe
à
partir
de
la
donnée
d'un
nombre
fini
de
points,
ou
une
fonction
à
partir
de
la
donnée
d'un
nombre
fini
de
valeurs.
Sous
Python,
cette
opération
est
réalisée
à
l’aide
du
module
scipy.interpolate.
Nous
utiliserons
en
particulier
la
fonction
interp1d
qui
permet
d’interpoler
des
courbes
à
une
dimension,
c’est-‐à-‐dire
des
Chapitre
6
:
Outils
graphiques
et
numériques
de
Python
7
nuages
de
points
dont
on
connaît
les
valeurs
des
abscisses
et
des
ordonnées.
Cette
fonction
possède
deux
arguments
d’entrée
obligatoires
:
1
-‐
un
tableau
1D
contenant
les
abscisses
des
points
à
interpoler
2
-‐
un
tableau
1D,
de
même
longueur,
contenant
les
ordonnées
des
points
à
interpoler
Attention
!
Le
résultat
de
la
fonction
interp1d
est
lui-‐même
une
fonction
et
s’appelle
donc
avec
un
argument
d’entrée
(cf.
exemples
ci-‐dessous).
Plusieurs
types
d’interpolation
sont
possibles
:
-‐
l’interpolation
linéaire,
qui
est
l’interpolation
par
défaut
(c’est-‐à-‐dire
celle
qui
est
employée
lorsqu’aucune
argument
n’est
spécifié
lors
de
l’utilisation
de
la
fonction
interp1d).
L’interpolation
linéaire
relie
simplement
les
différents
points
par
des
segments.
-‐
l’interpolation
quadratique,
qui
s’utilise
par
l’argument
kind=’quadratic’
en
argument
de
la
fonction
interp1d.
Cette
interpolation utilise
une
équation
quadratique
pour
modéliser
localement
la
courbe.
-‐l’interpolation
cubique,
qui
s’utilise
par
l’argument
kind=’cubic’
en
argument
de
la
fonction
interp1d.
Cette
interpolation utilise
une
équation
cubique
pour
modéliser
localement
la
courbe.
Exemple
:
import scipy.interpolate as sp # on importe le sous-module Interpolate
import numpy as np # on importe le module Numpy
import matplotlib.pyplot as pl # on importe le sous-module pyplot
pl.plot(x,y,’bo’,label=’points originaux’)
pl.plot(x,linear(x),’g’,label=’interpolation linaire’)
pl.plot(x,cubic(x),’r’ ,label=’interpolation cubique’)
pl.show()
pl.legend()
8
Chapitre
6
:
Outils
graphiques
et
numériques
de
Python
Exemple
:
On
souhaite
résoudre,
avec
la
condition
initiale
𝑦! = 𝑦 𝑡 = 0 = 1,
l’équation
différentielle
:
𝑑𝑦
= −2𝑦
𝑑𝑡
import scipy.integrate as integrate # on importe le module scipy.integrate
import numpy as np # on importe le module Numpy
import matplotlib.pyplot as pl # on importe le sous-module pyplot
def equation(y,t) # fonction traduisant le second membre
return -2*y
t = np.linspace(0,10,100) # vecteur temps (100 points entre 0 et 10 s)
y0 = 1 # spécification de la valeur de y en t = 0 s
y = integrate.odeint(equation,y0,t)
pl.plot(t,y,’b’)
pl.show()
La
fonction
odeint
permet
également
de
résoudre
des
équations
différentielles
d’ordre
2
de
la
forme
:
𝑦 !! = 𝑓(𝑦 ! 𝑡 , 𝑦 𝑡 , 𝑡)
La
résolution
de
cette
équation
différentielle
passera
par
la
résolution
du
système
différentiel
:
𝑦!! 𝑡 = 𝑦! 𝑡
𝑦!! 𝑡 = 𝑓 𝑦! 𝑡 , 𝑦! 𝑡 , 𝑡
Dans
le
résultat
(qui
est
un
tableau
à
deux
dimensions)
:
-‐ les
premières
composantes
(c’est-‐à-‐dire
la
première
colonne
du
tableau)
représentent
les
valeurs
prises
par
𝑦(𝑡)
-‐ les
secondes
composantes
(c’est-‐à-‐dire
la
seconde
colonne
du
tableau)
représentent
les
valeurs
prises
par
𝑦 ! (𝑡).
Cela
permet
(au
choix)
de
représenter
𝑦(𝑡)
en
fonction
du
temps
ou
bien
𝑦 ! 𝑡
en
fonction
de
𝑦(𝑡),
c’est-‐à-‐dire
le
portrait
de
phase
du
problème.
Chapitre
6
:
Outils
graphiques
et
numériques
de
Python
9
Exemple
:
On
souhaite
résoudre,
avec
les
condition
initiales
𝜃! = 𝜃 𝑡 = 0 = 𝜋/4 et 𝜃! = 𝜃 𝑡 = 0 = 0,
l’équation
différentielle
:
𝜃 + sin 𝜃 = 0
import scipy.integrate as integrate # on importe le module scipy.integrate
import numpy as np # on importe le module Numpy
import matplotlib.pyplot as pl # on importe le sous-module pyplot
def pendule(coord,t) # fonction traduisant l’équation différentielle
Theta = coord[0] # 𝜃 est dans l’élément 1 du vecteur coord
Theta_point = coord[1] # 𝜃 est dans l’élément 2 du vecteur coord
Theta_pointpoint = -np.sin(Theta) # définition de l’équation différentielle
return ([Theta_point,Theta_pointpoint])
𝐼= 𝑓(𝑥) 𝑑𝑥
!
La
fonction
quad
possède
trois
arguments
d’entrée
:
1
-‐
la
fonction
que
l’on
souhaite
intégrer
2
-‐
la
borne
inférieure
de
l’intégrale
3
-‐
la
borne
supérieure
de
l’intégrale
Cette
fonction
renvoie
en
argument
de
sortie
un
nombre
complexe,
de
partie
imaginaire
négligeable.
Pour
récupérer
la
partie
réelle
de
cet
argument
de
sortie,
correspondant
à
la
valeur
de
l’intégrale,
on
prend
sa
première
composante.
Exemple
:
import scipy.integrate as integrate
import numpy as np
a = integrate.quad(np.sin,0,np.pi)
print a[0]
Le
module
scipy.integrate
contient
également
les
fonctions
dblquad
et
tplquad,
qui
permettent
respectivement
d’intégrer
des
fonctions
de
deux
et
trois
variables.
10
Chapitre
6
:
Outils
graphiques
et
numériques
de
Python
4. Pour
s’entraîner
4.1.
Tracé
de
fonctions
trigonométriques
1)
Ecrire
un
programme
Python
qui
permettent
de
tracer
dans
une
fenêtre
les
fonctions
sinus
et
cosinus
sur
l’intervalle
– 𝜋, 𝜋 .
On
donnera
un
nom
à
l’axe
des
abscisses
et
on
fera
apparaître
une
légende
sur
le
graphique.
2)
Ecrire
un
programme
Python
qui
permettent
de
tracer
dans
une
fenêtre
les
fonctions
sinus
et
cosinus
hyperboliques
sur
l’intervalle
– 𝜋, 𝜋 .
On
donnera
un
nom
à
l’axe
des
abscisses
et
on
fera
apparaître
une
légende
sur
le
graphique.
3)
Ecrire
un
programme
Python
qui
permettent
de
tracer
dans
une
fenêtre
la
fonction
arctan
sur
l’intervalle
– ∞, +∞ .
On
donnera
un
nom
à
l’axe
des
abscisses
et
on
fera
apparaître
une
légende
sur
le
graphique.