La physique avec Python

La physique avec Python

Difficile d’apprendre ou de faire de la physique sans visualiser les lois décrivant l’évolution des systèmes physiques !

Un peu de codage et le tour est joué…

Ici je vous propose une dizaine d’exemples de petits programmes écrits en Python et permettant de visualiser certains de ces phénomènes physiques. D’autres programmes sont également disponibles sur le chapitre consacré à l’introduction au chaos (ici).

Python est largement utilisé dans le monde scientifique: facile à coder et idéal aussi pour apprendre la programmation !

Comme j’ai appris ce langage sur le tas en autodidacte et que je n’y passe que très peu de temps, un vrai pro de Python trouvera ces programmes peut être parfois assez lourds…

 

Les codes donnés ci-dessous doivent être copiés dans un environnement de développement Python (spyder,…) afin d’être utilisés.

Si vous voulez sauvegarder les quelques animations proposées sous forme de vidéo mpeg, vous devez avoir le fichier exécutable ffmpeg dans le même dossier où vous avis sauvegardé votre fichier Python.

Attention: je n’explique pas en détail comment les programmes ont été écrits. Je ne fais pas un cours sur Python ! Il faut étudier les codes et essayer de comprendre à partir des commentaires que j’ai ajoutés. Les exemples sont importants au début pour vous aider à apprendre, mais bien sûr il faudrait ensuite écrire ses propres programmes !

Pour apprendre Python, je vous conseille les livres suivants avec lesquelles j’ai beaucoup travaillé:

  • Python au lycée, A. Bodin, Exo7, Tomes 1 et 2. Le livre et les codes qui s’y trouvent sont intégralement disponibles gratuitement sur internet. De même, les vidéos des cours sont disponibles sur youtube. Ce livre permet une approche pas à pas générale de la programmation en Python avec de nombreux exercices. Il faudrait commencer par là !

 

  • Learning scientific programming with Python, Ch. Hill, 2nd edition, Cambridge university press. Les codes sont en bonne partie disponibles en ligne et il existe un site compagnon. Ce livre permet d’aller assez loin dans les applications au calcul scientifique, avec une introduction aux modules matplotlib, numpy et scipy.

 

Ce qu’il faut absolument apprendre à utiliser en Python, ce sont les modules !

numpy, pour la maîtrise des fichiers de nombres à plusieurs dimensions et le calcul avec la plupart des fonctions mathématiques spéciales

matplotlib, pour les graphiques et les animations

scipy pour la résolution des équations différentielles

 

NB: de nombreux autres programmes en Python se trouvent sur la page de ce site: “le chaos pour les curieux !”  le chaos


1). Mathématiques appliquées

a). Circuits électriques, recherche des courants.

ça c’est pour mes élèves de 2ème ospm qui veulent vérifier la résolution des circuits simples avec les lois de Kirchoff…

Circuits avec 5 courants inconnus résolution systèmes linéaires 5×5

Circuits avec 3 courants inconnus résolution systèmes linéaires 3×3

 

b). Algorithme personnel pour la recherche exhaustive des zéros d’une fonction (pas trop exotique quand même…). Le programme traite de la fonction f(x)=xcos(3x). Attention pour que cette recherche fonctionne, les fonctions doivent franchir la droite y=0, car l’algorithme utilise le changement de signe de la fonction !

recherche des zéros d’une fonction code


2). Animations

a). Mouvement planétaire. Ce programme utilise l’équation dite de Kepler décrivant le mouvement des planètes.

Les formules et lois utilisées se trouvent sur wikipédia:

https://fr.wikipedia.org/wiki/%C3%89quation_de_Kepler  pour la loi de Kepler

https://en.wikipedia.org/wiki/Eccentric_anomaly  démonstrations de certaines formules utilisées

L’équation de Kepler (qui donne l’angle vrai v) a été résolue avec la méthode de Halley.

A la fin du programme, deux lignes à “décommenter” permettent de sauvegarder l’animation sous forme de vidéo mp4

 

code: mvt planétaire ver 3

Et le résultat…sous forme de vidéo: Trajectoire planète autour du soleil, selon équation de Kepler

 

b). Tir balistique. Un grand classique !

code: balistique animation tir

une vidéo de l’animation: animation tir balistique 1

 

c). Le double pendule et le chaos: une des visualisations classiques du chaos. Ici deux pendules doubles sont lâchés presque du même endroit, avec les mêmes conditions initiales; seul un des angles initiaux diffère dans les deux lâchers…de seulement 1 degré, mais cela suffit à voir la divergence rapide des mouvements des deux pendules. Sensibilité aux conditions initiales.

théorie sur wikipédia: Pendule double — Wikipédia (wikipedia.org)

code: double double pendule code

vidéo: double_pendule_double


3). Lignes de champ magnétique d’un conducteur rectiligne infini, dans un plan perpendiculaire au fil

Le code dessine les lignes de champ magnétique autour d’un conducteur rectiligne.

code: contours champ magnétique conducteur rectiligne

graphique obtenu:  contours champ magnétique conducteur rectiligne


4). Chute verticale avec frottement, horaires position et vitesse

Le code calcule les positions et vitesses d’un objet qui tombe à la surface de la Terre, dans un milieu résistant, en fonction du temps.

code: chute verticale avec frottements horaire position et vitesse

graphique obtenu: chute verticale avec frottements horaire position et vitesse


5). Mouvement oscillant amorti: ressort horizontal avec masse oscillant avec frottement:

Régimes apériodique, pseudo-périodique et critique. Le programme dessine l’horaire du mouvement et le diagramme de phases en fonction des paramètres de l’amortissement, plus ou moins fort.

code: oscillateur harmonique amorti

graphiques: oscillateur harmonique amorti graphique


6). Lignes de champ électrique et équipotentielle pour un système de deux charges

Ce programme dessine les lignes du champ électrique et les équipotentielles dans un plan autour de deux particules chargées et fixes.

code: code lignes de champ électrique et équipotentielles

exemple de graphique produit: figure V + E


7). L’électron de l’atome d’hydrogène: visualisation des orbitales

a). Ce premier programme permet de représenter la fonction d’onde radiale R(r), pour les valeurs n = 1, 2, 3 du nombre quantique principal et les valeurs permises correspondantes du nombre quantique orbital l, soit six fonctions d’onde. En plus de l’amplitude de probabilité, on représente également les densités de probabilité P(r) correspondantes. Les fonctions d’onde sont tirées du package SymPy. Les unités en ordonnées sont arbitraires.

code: R(r) et P(r) atome H code

résultat: R(r) et P(r) hydrogène

 

b). Ce deuxième petit programme permet de visualiser les harmoniques sphériques Ylm(θ,φ), qui sont des surfaces fermées dans un espace à 3 dimensions. Ces dessins permettent de visualiser les limites où l’on peut trouver l’électron si le centre de masse de l’atome d’hydrogène est localisé à l’origine.  On a choisi la valeur du nombre quantique orbital l = 3 et les valeurs uniquement positives correspondantes du nombre quantique magnétique ml (0 , 1, 2, 3).

code: harm sphé 4 graph version finale code

résultat: harm sphé 4 graph version finale