Lecture 04 A
Lecture 04 A
SIMULATION EN
PHYSIQUE
Python, modules pour le calcul
scientifique
Python, modules pour le calcul
scientifique
LA DISTRIBUTION ANACONDA DE PYTHON :
• Toutau long de « lecture-04 », nous utiliserons l’IDE Spyder de la
distribution Anaconda 4.3.1 (compatible Python 3.6.0) ou plus récente.
• Spyder : Scientific python development environment, est un environnement
intégré de développement (IDE) pour le calcul scientifique en Python.
• Spyder est intégré à plusieurs distributions (anaconda, Python(x,y),
WinPython, …) de Python supportant les modules les plus connus pour le
calcul scientifique (numpy, scipy, matplotlib, sympy, …)
• Spyder est fourni avec un éditeur de code source, une console
d’execution, un explorateur de variables pour voir quelles variables ont
été définies pendant l’exécution, et plusieurs autres facilités pour aider à
developper efficacement des programmes scientifiques.
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
INTRODUCTION À NUMPY :
• Labibliothèque NumPy ([Link] permet
d’effectuer des calculs numériques avec Python.
• Pour
utiliser les fonctions de NumPy, il faut d’abord
importer le package numpy (par exemple comme suit) :
>>> import numpy as np
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
INTRODUCTION À NUMPY : variables prédéfinies
>>> a = [Link]([[1,2,3],[4,5,6]])
• Affichage :
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> type(a)
<class '[Link]'> # On voit que l’on a obtenu un objet de type [Link]
>>>
>>> x = [Link](-[Link]/2,[Link]/2,3)
>>> x
array([-1.57079633, 0. , 1.57079633]) # x est un tableau 1D (un vecteur)
>>> y = [Link](x)
>>> y
array([-1., 0., 1.])
>>>
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
FONCTIONS MATHÉMATIQUES AVEC NUMPY : fonctions
trigonométriques
On importe la package numpy : >>> import numpy
Signification
Appel en Python
mathématique
[Link](x) Calcul le sinus du nombre x
[Link](x) Calcul le cosinus du nombre x
[Link](x) Calcul la tangente de x
[Link](x) Calcul l’arcsinus de x
[Link](x) Calcul l’arccosinus de x
[Link](x) Calcul l’arctangente de x
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
FONCTIONS MATHÉMATIQUES AVEC NUMPY : fonctions hyperboliques
On importe la package numpy : >>> import numpy
Appel en
Signification mathématique
Python
Calcul le sinus hyperbolique du
[Link](x)
nombre x
Calcul le cosinus hyperbolique du
[Link](x)
nombre x
[Link](x) Calcul la tangente hyperbolique de x
[Link](x) Calcul l’arcsinus hyperbolique de x
Dr Pasteur Poda, MC, --- 2023-2024
[Link](x) Calcul l’arccosinus hyperbolique de x
Python, modules pour le calcul
scientifique
FONCTIONS MATHÉMATIQUES AVEC NUMPY : fonctions diverses
On importe la package numpy : >>> import numpy
Appel en
Signification mathématique
Python
[Link](x,n) Calcule x à la puissance n
[Link](x) Calcule la racine carrée du nombre x
[Link](x) Calcule l’exponentiel de x
[Link](x) Calcule le logarithme népérien de x
numpy.log10(x) Calcule le logarithme à base 10 de x
[Link](x) Calcule la valeur absolue de x
[Link](x) Calcule leMC,signe
Dr Pasteur Poda, de x
--- 2023-2024
Python, modules pour le calcul
scientifique
FONCTIONS MATHÉMATIQUES AVEC NUMPY : fonctions pour nombres
complexes
On importe la package numpy : >>> import numpy
Appel en
Signification mathématique
Python
Retourne la partie réelle du nombre
[Link](x)
complexe x
Retourne la partie imaginaire du nombre
[Link](x)
complexe x
[Link](x) Calcule le module du nombre complexe x
Retourne l’argument en radians du
[Link](x)
nombre complexe
Dr Pasteur x
Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
FONCTIONS MATHÉMATIQUES AVEC NUMPY : fonctions
pour nombres complexes
# Programme illustratif
import numpy as np
x = [Link]([2 + 3j, 1j, 1])
print("Vecteur à 3 composantes x : ", x)
print("Partie réelle de chaque composante de x : ", [Link](x))
print("Partie imaginaire de chaque composante de x : ", [Link](x))
print("Module de chaque composante de x : ", [Link](x))
print("Argument de chaque composante de x : ", [Link](x))
print("Conjugué de chaque composante de x : ", [Link](x))
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
FONCTIONS MATHÉMATIQUES AVEC NUMPY : fonctions
pour nombres complexes
# Résultat de l’exécution
Vecteur à 3 composantes x : [ 2.+3.j 0.+1.j 1.+0.j]
Partie réelle de chaque composante de x : [ 2. 0. 1.]
Partie imaginaire de chaque composante de x : [ 3. 1. 0.]
Module de chaque composante de x : [ 3.60555128 1. 1. ]
Argument de chaque composante de x : [ 0.98279372 1.57079633 0. ]
Conjugué de chaque composante de x : [ 2.-3.j 0.-1.j 1.-0.j]
>>>
>>> [Link]()
0.781840752930086
>>> [Link](3)
array([ 0.07872937, 0.7956434 , 0.69671747]) # un vecteur à 3 composantes
>>> [Link]((2,3))
array([[ 0.66418244, 0.68716176, 0.38423434],
[ 0.29149969, 0.38966644, 0.5309953 ]]) # un tableau (matrice) 2x3
>>>
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES :
• Pour
tracer des courbes, nous utilisons les bibliothèques NumPy et
matplotlib.
• Deuxsyntaxes : la syntaxe “PyLab” (proche de celle de Matlab) et la
syntaxe “standard” (recommandée dans les versions récentes
de matplotlib).
• Syntaxe “PyLab” : from pylab import *
Il est alors possible d’accéder directement aux fonctions de NumPy et
matplotlib.
• Syntaxe“standard”: importer le package numpy et le module
pyplot de matplotlib.
On doit alors préciser les bibliothèques lors des appels des fonctions.
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Création d’une courbe
Syntaxe pylab Syntaxe standard
(exemple 1) import numpy as np
import [Link] as plt
from pylab import *
x = array([1, 3, 4, 6])
x = array([1, 3, 4, 6])
y = array([2, 3, 5, 1])
y = array([2, 3, 5, 1])
[Link](x,y)
plot(x,y)
show() [Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Création d’une courbe
Syntaxe pylab Syntaxe standard
(exemple 2) import numpy as np
import [Link] as plt
from pylab import *
x = linspace(0,2*[Link],30) x = [Link](0,2*[Link],30)
y = cos(x) y = [Link](x)
[Link](x,y)
plot(x,y)
show() [Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Définition du domaine des axes –
xlim() et ylim()
•xlim(xmin, xmax)
•ylim(ymin, ymax)
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Définition du domaine des axes
– xlim() et ylim()
Syntaxe pylab (exemple Syntaxe standard
1) import numpy as np
from pylab import * import [Link] as plt
show() [Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Définition du domaine des axes
– xlim() et ylim()
Syntaxe pylab (exemple Syntaxe standard
2) import numpy as np
import [Link] as plt
from pylab import *
show() [Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Définition du domaine des axes
– xlim() et ylim()
Syntaxe pylab (exemple Syntaxe standard
3) import numpy as np
import [Link] as plt
from pylab import *
show() [Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Ajout d’un titre - title()
show() [Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Affichage de plusieurs courbes
Syntaxe pylab Syntaxe standard
from pylab import * import numpy as np
import [Link] as plt
x = linspace(0, 2*pi, 30)
y1 = cos(x) x = [Link](0, 2*[Link], 30)
y2 = sin(x) y1 = [Link](x)
plot(x, y1) y2 = [Link](x)
plot(x, y2) [Link](x, y1)
[Link](x, y2)
show()
[Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Affichage de plusieurs courbes
Syntaxe pylab Syntaxe standard
show() [Link]()
-- Tirets (dashed)
: Ligne en pointillés
-. Tirets points
[Link]()
show()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Symbole (marker)
Chaine Effet
. point marker
, pixel marker
O circle marker
v triangle_down marker
^ triangle_up marker
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Symbole (marker)
Chaine Effet
< triangle_left marker
> triangle_right marker
1 tri_down marker
2 tri_up marker
3 tri_left marker
4 tri_right marker
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Symbole (marker)
Chaine Effet
s square marker
p pentagon marker
* star marker
h hexagon1 marker
H hexagon2 marker
+ plus marker
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : Symbole (marker)
Chaine Effet
x x x marker
D D diamond marker
d d thin_diamond marker
| vline marker
_ hline marker
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
show() [Link]()
import numpy as np
from pylab import *
import [Link] as plt
x = array([0, 1, 1, 0, 0]) x = [Link]([0, 1, 1, 0, 0])
y = array([0, 0, 1, 1, 0]) y = [Link]([0, 0, 1, 1, 0])
plot(x, y) [Link](x, y)
xlim(-1, 2) [Link](-1, 2)
ylim(-1, 2) [Link](-1, 2)
show() [Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TRACÉ DE COURBES : L’instruction axis("equal")
permet d’avoir la même échelle sur l’axe des abscisses et l’axe
des ordonnées afin de préserver la forme lors de l’affichage.
Syntaxe pylab Syntaxe standard
show() [Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TP INTÉGRATION NUMÉRIQUE : Méthode des
rectangles
• Laméthode des rectangles calcule l’intégrale
numérique en réalisant une somme de surfaces de
rectangles. Le domaine d’intégration est découpé en
intervalles et on fait comme si la fonction restait
constante sur chaque intervalle.
import numpy as np
import [Link] as plt
xmin = 0
xmax = 3*[Link]/2
nbx = 20
nbi = nbx - 1 # nombre d'intervalles
…/…
integrale = 0
for i in range(nbi):
integrale = integrale + y[i]*(x[i+1]-x[i])
# dessin du rectangle
x_rect = [x[i], x[i], x[i+1], x[i+1], x[i]] # abscisses des sommets
y_rect = [0 , y[i], y[i] , 0 , 0 ] # ordonnees des sommets
[Link](x_rect, y_rect,"r")
print("integrale =", integrale)
[Link]()
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TP INTÉGRATION NUMÉRIQUE : Méthode des
rectangles
• Exécuter ce programme
• On
suppose que le module numpy est importée : import
numpy as np
>>> a = [Link]([4,7,9])
>>> a
array([4, 7, 9])
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY :
Tableaux - [Link]()
Exemple :
>>> a = [Link]([[1, 2, 3], [4, 5, 6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> a = [Link]([2,5,6,8])
>>> [Link](a)
4
>>> b = [Link]([[1, 2, 3],
[4, 5, 6]])
>>> [Link](b)
6
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY : Tableaux -
[Link]()
>>> a = [Link]([2,5,6,8])
>>> [Link](a)
(4,)
>>> b = [Link]([[1, 2, 3],
[4, 5, 6]])
>>> [Link](b)
(2, 3)
>>> b = [Link]([[4],
[2],
[1]])
>>> [Link](a,b)
array([[11],
[32]])
• Le produit d’une matrice de taille n x m par une matrice m x p donne une matrice n x
p.
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY :
Tableaux - [Link]()
• Transposé :
>>> a.T
array([[1, 4],
[2, 5],
[3, 6]])
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY : Tableaux -
[Link]()
>>> [Link](u).T
array([[ 0.-2.j, 2.-5.j, 3.+0.j],
[ 4.-3.j, 5.+0.j, 6.-2.j]])
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY : Tableaux et
slicing
>>> a[1:]
array([25, 34, 56, 87])
>>> a[:3]
array([12, 25, 34])
>>> a[:]
array([12, 25, 34, 56, 87])
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY :
Tableaux et slicing
• Slicing des tableaux 2D >>> a[:,1]
>>> a = [Link]([[1, 2, 3], array([2, 5])
[4, 5, 6]])
>>> a[0,1]
2 >>> a[0,:]
array([1, 2, 3])
>>> a[:,1:3]
array([[2, 3],
[5, 6]])
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY : Tableaux
de zéros - [Link]()
>>> [Link](3)
array([ 0., 0., 0.])
>>> [Link]((2,3))
array([[ 0., 0., 0.],
[ 0., 0., 0.]])
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY :
Tableaux de 1 - [Link]()
>>> [Link](3)
array([ 1., 1., 1.])
>>> [Link]((2,3))
array([[ 1., 1., 1.],
[ 1., 1., 1.]])
>>> [Link](3)
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
>>> D, V = eig(A)
• Les colonnes de V sont les vecteurs
propres de A associés aux valeurs
>>> D propres qui apparaissent dans D.
array([ 2., 1., -1.])
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY :
Changement taille tableau
Il est possible de changer la taille d’un tableau
en utilisant l’attribut shape de ce tableau.
>>> u
>>> u = [Link](1, 16)
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
>>> u
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, [11, 12, 13, 14, 15]])
13, 14, 15])
>>> [Link](u)
(15,)
>>> [Link](u)
>>> [Link] = (3, 5)
(3, 5)
Dr Pasteur Poda, MC, --- 2023-2024
Python, modules pour le calcul
scientifique
TABLEAUX ET CALCUL MATRICIEL AVEC NUMPY :
Obtention d’un tableau 2D ligne ou colonne
>>> a = [Link](1, 6) >>> a
>>> a array([[1],
array([1, 2, 3, 4, 5])
[2],
>>> [Link] = (1,
[Link](a)) [3],
>>> a [4],
array([[1, 2, 3, 4, 5]])
[5]])
>>> [Link] =
([Link](a), 1)
Dr Pasteur Poda, MC, --- 2023-2024
Références bibliographiques
•[Link]