Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
A. MARTIN
Stanislas - PCSI1
Février 2016
1 / 10
Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
Deux catégories de langages de programmation
DÉFINITION : Compilerun programme c’est transformer...
unprogramme (suite d’instructions du langage dans un fichier texte) en un fichier exécutable(instructions en langagemachine : 0 et 1).
Langage compilé (à compiler, ou langage de « bas niveau ») rustique (rédaction complète, puis compilation, puis exécution), contraignant (typage statique, ordre des fonctions et modules...) ; performant (rapide), fiable (types déclarés).
−→ calcul intensif.
Exemples :FORTRAN,TURBO PASCAL,C,C++...
Langage interprété
Dans un interpréteur (qui compile et exécute immédiatement). Lent mais d’abord simple (intuitif, direct), souple d’utilisation (typage dynamique...).
−→ développement rapide de nouveaux programmes / applications. Exemples :PYTHON,PERL,SQL,PHP...
Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
Deux catégories de langages de programmation
DÉFINITION : Compilerun programme c’est transformer...
unprogramme (suite d’instructions du langage dans un fichier texte) en un fichier exécutable(instructions en langagemachine : 0 et 1).
Langage compilé (à compiler, ou langage de « bas niveau ») rustique (rédaction complète, puis compilation, puis exécution), contraignant (typage statique, ordre des fonctions et modules...) ; performant (rapide), fiable (types déclarés).
−→ calcul intensif.
Exemples :FORTRAN,TURBO PASCAL,C,C++...
Langage interprété
Dans un interpréteur (qui compile et exécute immédiatement). Lent mais d’abord simple (intuitif, direct), souple d’utilisation (typage dynamique...).
−→ développement rapide de nouveaux programmes / applications. Exemples :PYTHON,PERL,SQL,PHP...
3 / 10
Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
Deux catégories de langages de programmation
DÉFINITION : Compilerun programme c’est transformer...
unprogramme (suite d’instructions du langage dans un fichier texte) en un fichier exécutable(instructions en langagemachine : 0 et 1).
Langage compilé (à compiler, ou langage de « bas niveau ») rustique (rédaction complète, puis compilation, puis exécution), contraignant (typage statique, ordre des fonctions et modules...) ; performant (rapide), fiable (types déclarés).
−→ calcul intensif.
Exemples :FORTRAN,TURBO PASCAL,C,C++...
Langage interprété
Dans un interpréteur (qui compile et exécute immédiatement).
Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
Quésaco ? Pour quoi faire ?
Définition - environnement de programmation pour le calcul numérique Outil intermédiaire associant
ergonomie (langage de programmation interprété, typage dynamique, graphiques...) et
efficacité pour des fonctions/algorithmes pré-compilés et optimisés (calcul « vectorisé », bibliothèques).
En bref : une calculatrice graphique programmable très sophistiquée.
Exemples
Python avec les modules Numpy, Scipy et Matplotlib ; Scilab (ou Matlab, Octave, R...).
5 / 10
Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
Quésaco ? Pour quoi faire ?
Définition - environnement de programmation pour le calcul numérique Outil intermédiaire associant
ergonomie (langage de programmation interprété, typage dynamique, graphiques...) et
efficacité pour des fonctions/algorithmes pré-compilés et optimisés (calcul « vectorisé », bibliothèques).
En bref : une calculatrice graphique programmable très sophistiquée.
Exemples
Python avec les modules Numpy, Scipy et Matplotlib ;
Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
NUMPY ou l’utilisation des vecteurs (ndarray)
Créer des vecteurs - l’objet « array », la brique de base
import numpy as np # import avec alias (facultatif) L = np.array([0,2,np.pi,5]) # crée un vecteur
L[1] # renvoie 2
np.zeros((n,m)) # crée un tableau de 0 np.ones((n,m)) # crée un tableau de 1 M = np.array([[0,2],[np.pi,5]])
M[1,1] # renvoie 5
M[0,:] # renvoie la 1ere ligne (0,2)
T = np.linspace(0,1,11) # renvoie [0,0.1,0.2,..., 1.0]
S = np.arange(2,5) # renvoie [2,3,4]
Opérations
Opérations élément par élément (vecteurs-matrices conformes) boucle implicite) : addition (A+B), produit (A*B), puissance (A**B) ;
Produit matriciel : dot(A,B);
Concaténation : concatenate(A,B) ...
7 / 10
Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
NUMPY ou l’utilisation des vecteurs (ndarray)
Créer des vecteurs - l’objet « array », la brique de base
import numpy as np # import avec alias (facultatif) L = np.array([0,2,np.pi,5]) # crée un vecteur
L[1] # renvoie 2
np.zeros((n,m)) # crée un tableau de 0 np.ones((n,m)) # crée un tableau de 1 M = np.array([[0,2],[np.pi,5]])
M[1,1] # renvoie 5
M[0,:] # renvoie la 1ere ligne (0,2)
T = np.linspace(0,1,11) # renvoie [0,0.1,0.2,..., 1.0]
S = np.arange(2,5) # renvoie [2,3,4]
Opérations
Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
NUMPY ou l’utilisation des vecteurs (darray)
Attention : passage par référence ! A = np.array([0,2,np.pi,5])
B = A # B et A pointent sur la même zone mémoire B[3] = 0
A # renvoie [0,2,0,5]
C = np.copy(A)
Vectorisation ⇒ puissance - exemple : sin(t) pourt∈[0,999999] Calcul LONG (mode interprété) Calcul RAPIDE (mode compilé)
resu = [] t = np.arange(1000000)
for t in range(1000000): resu = np.sin(t) resu += [np.sin(t)]
Le gain en temps de calcul est ici de plus de 50 !
9 / 10
Environnement de simulation numérique Python - Numpy - Scipy - Matplotlib
NUMPY ou l’utilisation des vecteurs (darray)
Attention : passage par référence ! A = np.array([0,2,np.pi,5])
B = A # B et A pointent sur la même zone mémoire B[3] = 0
A # renvoie [0,2,0,5]
C = np.copy(A)
Vectorisation ⇒ puissance - exemple : sin(t)pour t∈[0,999999]
Calcul LONG (mode interprété) Calcul RAPIDE (mode compilé)
resu = [] t = np.arange(1000000)
for t in range(1000000): resu = np.sin(t)