Programmation en Python
Python est un langage interprété avec une
syntaxe facile à apprendre, et il dispose de très bonne bibliothèques
graphiques, pour le réseau, pour le calcul scientifique, etc. Il peut
être téléchargé gratuitement et il est disponible pour tous les systèmes
d'exploitation. Le projet Phoenix utilise Python pour développer tout le code,
excepté celui qui tourne sur le micro-contrôleur en temps réel. Il y a
quantité de livres disponibles sur Internet pour apprendre Python. Le livre
en anglais Python for Education est un essai
pour introduire Python en tant qu'outil pour l'apprentissage des
Sciences et des Mathématiques. Pour lancer et modifier les exemples de ce livre,
un éditeur de code est disponible, sous forme de paquet Debian. On peut
le télécharger ICI.
Voici une copie d'écran de ce programme.
Pour des livres en français, on peut
tenter cette recherche.
Python pour apprendre les Sciences et les Mathématiques
En collège et en lycée, on étudie diverses branches des mathématiques,
comme la géométrie, l'algèbre, la trigonométrie, le calcul symbolique, etc.
sans trop se soucier de leurs interconnexions. Tracer les graphiques
de diverses fonctions algébriques et trigonométriques aide à mieux les
comprendre. Des méthodes numériques simples peuvent démontrer la connexion
entre l'algèbre et le calcul symbolique. Cette connaissance est utile pour
aborder les problèmes en physique d'une façon différente.
Pour cela, il faut un interprète Python avec les paquets Numpy,
Scipy et
Matplotlib.
Vidéos Youtube
Plusieurs vidéos ont été faites quand on a écrit ces exemples et elles
ont été remontées vers YouTube. (on peut laisser fonctionner le programme
RecordmyDesktop, tout en murmurant tant qu'on tape du code, et ça génère
une ambiance comparable à celle d'une locomotive à vapeur du 19ème
siècle).
Petits programmes Python, sur des sujets de Mathématique et de Physique de niveau Lycée
Tous les exemples ci-dessous font moins de 20 lignes de code Python,
si on laisse de côté les lignes vides et les commentaires. Pour tout exemple
de plus de 20 lignes, il y a une version plus courte, donnée en plus.
- plot-equation.py : Tracé de
graphiques à l'aide de numpy et matplotlib. L'exemple utilise sin(x),
on peut aussi utiliser d'autres fonction. Copie d'écran.
- plot-ncurve.py : Tracé de
quelques graphiques intéressants. Copie d'écran
- sum-of-sines.py : Addition
de deux signaux sinusoïdaux qui forme des battements.
Copie d'écran.
- product-of-sines.py :
Modulation d'amplitude par multiplication de deux fonction sinus.
Copie d'écran
- 3phase-ac.py
: Graphique des trois phases d'une tension du secteur de $230 V_{eff}$,
et la différence de potentiel entre deux phases.
Copie d'écran
- mass-spring-euler.py :
Solution du problème d'une masse accrochée à un ressort par la
méthode d'intégration d'Euler.
Copie d'écran
- mass-spring-visual.py :
Animation d'un système masse/ressort, à l'aide de python-visual, calculs
basés sur la méthode d'Euler.
- accn-vel-from-pos.py :
Calcul d'accélération et de vitesses à partir de données de position.
Copie d'écran
- integrate-trapez.py :
Calcul de l'aire sous un arc de rayon unité entre $x=0$ et $1$,
avec la méthode des trapèzes. Comparez le résultat avec $\pi/4$.
Copie d'écran
- integrate-scipy-quad.py
: Calcul de l'aire sous un arc de rayon unité entre $x=0$ et $1$,
en utilisant la fonction scipy.integrate.quad().
- pos-time-plot-euler.py
: Mouvement à une dimension. On donne la position initiale et la vitesse.
On utilise l'intégration d'Euler pour tracer $x(t)$.
Copie d'écran
- rdecay-euler.py : courbe
de la décroissance radioactive, calculée par la méthode d'Euler en
résolvant l'équation $\frac{dN}{dt}=-L \times N$.
Copie d'écran
- rdecay-scipy.py : courbe
de décroissance radioactive $\frac{dN}{dt}=-L \times N$, résolue
à l'aide de la fonction scipy.integrate.odeint() .
Copie d'écran
- rdecay2-scipy.py :
courbe de décroissance radioactive $\frac{dN}{dt}=-L \times N$,
deux équations résolues à la fois à l'aide de scipy.integrate.odeint() .
Copie d'écran
- second-order-de-scipy.py
: résolution d'équation du second ordre en la découpant en deux équations
du premier ordre. La solution de $\frac{d^2x}{dy^2}=-y$ donne
$y=sin(x)$.
Copie d'écran
- projectile-2d-euler.py
: mouvement d'un projectile, calcul de la trajectoire plane x-y à l'aide
de la méthode d'Euler.
Copie d'écran
- projectile-2d-scipy.py
: mouvement d'un projectile, calcul de la trajectoire plane x-y à l'aide
de la fonction scipy.integrate.odeint().
Copie d'écran
- mass-spring-scipy.py :
Solution du problème masse/ressort à l'aide de scipy.integrate.odeint().
Copie d'écran
- Lorentz-force-scipy.py
: trajectoire d'une particule chargée dans des champs électrique et
magnétique.
Copie d'écran
- Lorentz-force-scipy-vector.py
: trajectoire d'une particule chargée dans des champs électrique et
magnétique, à l'aide d'équations vectorielles.
Copie d'écran
- Lorentz-force-euler.py
: trajectoire d'une particule chargée dans des champs électrique et
magnétique.
Copie d'écran , le cercle
devient une spirale à cause de l'erreur numérique.
- plot-data-3d.py
: lecture de données texte multi-colonnes à partir d'un fichier et
tracé des trois premières colonnes, la
Copie d'écran montre les données
du fichier.
- plot-data-2d.py :
lecture de données texte multi-colonnes à partir d'un fichier et
tracé des deux premières colonnes,
Copie d'écran montre les données
du fichier.
- Efield-plot.py : tracé
du champ électrique produit par plusieurs charges ponctuelles situées
dans un plan.
Copie d'écran