Python pour la Physique
Calcul, graphisme, simulation
Richard Taillet
deboeck supérieur
Table des matières1
1 Introduction11
1 Python11
2 Aborder la physique autrement11
3 Plan de l'ouvrage13
4 Règles d'or14
5 Remerciements14
6 Télécharger les programmes14
I Python15
2 Fonctions de base17
1 Démarrer et quitter17
2 Calculette en mode interactif18
3 Fonctions et paramètres19
4 Bibliothèques19
5 Écriture de programmes22
6 Variables23
7 Afficher29
8 Erreurs33
9 Précision34
10 Tuples35
11 Conditions if - else37
12 Boucles while et for41
13 Fonctions définies par l'utilisateur46
13.1 Définir une fonction46
13.2 Valeur par défaut des paramètres46
13.3 Une fonction peut renvoyer plusieurs valeurs, ou aucune47
13.4 Portée des variables : locale ou globale48
14 Commentaires50
15 IPython51
3 Unités53
1 Dimensions physiques53
2 Unités de mesure53
3 Constantes et unités54
4 Modules dédiés57
4.1 Les constantes physiques dans scipy57
4.2 Le module astropy59
4.3 Les valeurs du CODATA61
4.4 Analyse dimensionnelle62
4 Listes et tableaux65
1 Listes65
2 Méthodes et fonctions66
3 La fonction enumerate ()67
4 Listes en compréhension68
5 Listes de listes69
6 La bibliothèque numpy69
6.1 Tableaux numpy69
6.2 Les commandes arange () et linspace ()71
6.3 Les fonctions mathématiues de numpy72
7 Aparté technique72
7.1 Affectation des variables72
7.2 Copier une variable74
7.3 Modifier une variable dans une fonction75
8 Résumé de fonctions et méthodes utiles pour les listes76
5 Représentation de données77
1 Tracé des points78
1.1 La fonction scatter de matplotlib78
1.2 Sauvegarder la figure80
1.3 Aspect des symboles80
1.4 Barres d'erreur81
1.5 Ajouter des titres, des légendes et du texte83
1.6 Gestion des axes86
1.7 Point de vocabulaire : figure et graphes88
1.8 Afficher une grille de coordonnées89
1.9 Enlever le cadre et positionner les axes : spines90
1.10 Échelle logarithmique92
2 Représentation graphique de fonctions94
2.1 La fonction plot ()95
2.2 Les attributs de la ligne96
2.3 Centrer les axes98
3 Tracer plusieurs courbes99
3.1 Sur le même graphe99
3.2 Sur des graphes différents dans une même figure100
3.3 Sur des figures différentes101
4 Réglage fin des figures et des graphes102
5 Histogrammes104
5.1 Tracer des histogrammes104
5.2 Les fonctions statistiques107
6 La notion de backend108
7 Les styles de matplotlib109
8 Résumé des commandes utiles112
9 Mini-projets113
6 Dessin115
1 Tracer des segments115
2 Unités116
3 Formes géométriques117
4 Les couleurs120
5 Les lignes, objets de type Line2D120
6 Notion nouvelle : externalisation de fonctions122
7 Mini-projets123
II Optique géométrique125
7 Réfraction127
1 Théorie127
2 Illustration en python127
2.1 Rappel de géométrie127
2.2 Tracé des rayons lumineux128
2.3 Exemples de mauvaises pratiques129
2.4 Ajout des rapporteurs130
3 Figures interactives : gestion des événements131
4 Mini-projets136
8 Le prisme137
1 Théorie137
2 Programmation138
3 Déviation minimale142
4 Courbe de déviation et minimum de déviation144
4.1 Courbe de déviation144
4.2 Détermination du minimum d'une fonction145
5 Mini-projets146
9 Sphère réfractante147
1 Présentation147
2 L'ordre zéro147
3 L'ordre 1 : arc primaire de l'arc-en-ciel149
4 L'ordre 2 : arc secondaire de l'arc-en-ciel151
5 L'ordre N153
6 Curseurs et boutons interactifs : les widgets154
6.1 Slider : exemple minimal154
6.2 Application à la sphère réfractante156
6.3 Button : exemple minimal157
6.4 RadioButtons et CheckButtons : exemples minimaux159
6.5 Application à la sphère réfractante160
7 Programmer en mode tortue162
8 Mini-projet : les couleurs de l'arc-en-ciel165
10 Miroirs et dioptres167
1 Miroir sphérique167
2 Dioptres sphériques169
2.1 Faisceau incident parallèle169
2.2 Source à distance finie171
2.3 Points de Weierstrass172
2.4 Obtention d'une lentille173
3 Dioptre elliptique174
4 Dioptre de profil quelconque177
4.1 Détermination et dessin des rayons réfractés177
4.2 Calcul numérique d'une dérivée179
4.3 Calcul numérique de a dérivée par scipy181
4.4 Application au dioptre de forme quelconque182
4.5 Réfraction par des vagues182
5 Caustiques : nappes tangentielles184
5.1 Théorie184
5.2 Exemple : réflexion sur un miroir sphérique concave185
6 Mini-projets186
6.1 Mini-projet 1 : caustique du miroir sphérique convexe186
6.2 Mini-projet 2 : caustique du dioptre plan187
6.3 Mini-projet 3 : réflexions multiples sur un miroir concave187
11 Stigmatisme189
1 Stigmatisme approché, conditions de Gaus189
2 Images dans les conditions de Gauss192
3 Aberrations du miroir sphérique195
3.1 Cartes de densité : histogrammes bidimensionnels198
3.2 Cercle de moindre confusion201
4 Mini-projets : étude d'une lentille plan-convexe203
12 Lentilles205
1 Théorie205
2 Application à une lentille206
3 Définir de nouvelles classes d'objets207
4 Position de l'image213
5 Mini-projets216
III Mécanique du point217
13 Chute avec frottement219
1 Relation fondamentale de la dynamique219
2 Force de traînée219
3 Chute dans l'air avec frottements220
4 Résolution numérique : première approche222
4.1 Utilisation de développements limités223
4.2 Raffinement numérique225
5 Utilisation de scipy, integrate227
5.1 Équation différentielle du premier ordre228
5.2 Équation différentielle du scond ordre230
5.3 Détecter des annulations232
5.4 Solution dense232
6 Application au problème de chute233
7 Portée d'un lanceur de projectile236
8 Mini-projets238
14 Oscillateurs239
1 Oscillateur harmonique239
1.1 Définition239
1.2 Équation différentielle du second ordre239
1.3 Conservation de l'énergie mécanique241
2 Pendule simple242
2.1 Période du pendule243
2.2 Animation des figures249
15 Chaos253
1 Pendule amorti et forcé253
2 Résolution numérique253
2.1 Mouvement253
2.2 Doublement de période255
2.3 Portrait de phase256
2.4 Diagramme de bifurcation258
3 Données persistantes260
3.1 Lecture/écriture dans un fichier261
3.2 Le module json262
3.3 Application au diagramme de bifurcation263
3.4 Le module pickle264
16 Forces centrales265
1 Résolution numérique en coordonnées cartésiennes265
1.1 Force en rn et oscillateur harmonique bidimensionnel265
1.2 Force gravitationnel267
2 Coordonnées polaires270
3 Loi des aires272
4 Mini-projets274
17 Chute dans un référentiel tournant275
1 Déviation vers l'est275
2 Déviation vers le sud279
3 Calcul symbolique avec SymPy281
3.1 Développements limités281
3.2 Rendu LaTeX281
3.3 Dérivées283
3.4 Primitives283
4 Mini-projets : approfondissement285
4.1 Mini-projet 1 : force gravitationnelle plus réaliste285
4.2 Mini-projet 2 : porise en compte des frottements286
18 Points de Lagrange287
1 Théorie287
2 Dessiner une surface289
3 Dessiner des contours 3D292
4 Dessiner des contours plans293
5 Position des points de Lagrange295
5.1 Définition des points de Lagrange295
5.2 Résolution d'équation par fsolve() t roots()296
5.3 Retour aux points de Lagrange297
6 Stabilité du mouvement au voisinage des points de Lagrange299
7 Mini-projet : La bibliothèque PyQtGraph301
19 Problème à N corps303
1 Problème à 3 corps303
1.1 Résolution sans subtilité303
1.2 Conservation de l'énergie mécanique305
2 Réécriture et généralisation au problème à N corps306
2.1 Réécriture306
2.2 Solutions chorégraphiques308
2.3 Mesure de temps d'exécution d'un programme308
2.4 Génération de nombres pseudo-aléatoires309
2.5 Augmentation du nombre N de corps310
3 Mini-projets : animation311
20 Conclusion313
21 Documentation officielle314
Index315