Python est devenu un outil incontournable dans les travaux pratiques de physique en classes préparatoires. Depuis la réforme des programmes, les jurys de concours attendent des candidats qu'ils sachent tracer une courbe, réaliser une régression linéaire et propager des incertitudes à l'aide d'un script. Ce n'est plus un bonus : c'est une compétence évaluée explicitement à l'oral de TP de Polytechnique, Centrale et Mines-Ponts.
Pourtant, beaucoup d'étudiants en prépa abordent Python comme un obstacle supplémentaire plutôt que comme un allié. Le problème ne vient pas du langage lui-même, mais d'un manque de méthode. Cet article vous donne un guide pratique, directement applicable en TP, pour maîtriser les bibliothèques essentielles et produire des résultats qui impressionnent les examinateurs. Chez Majorant, nous constatons chaque année que les candidats qui automatisent leurs traitements de données gagnent un temps précieux pour l'analyse physique, celle qui rapporte vraiment des points.
Quelles bibliothèques Python faut-il maîtriser pour les TP de physique ?
Trois bibliothèques couvrent la quasi-totalité des besoins en TP : NumPy, Matplotlib et SciPy. Inutile de vous disperser sur d'autres outils, concentrez-vous sur ces trois piliers.
NumPy : le socle du calcul scientifique
NumPy gère les tableaux de données et les opérations mathématiques. En TP, vous l'utilisez pour stocker vos mesures, calculer des moyennes, des écarts-types et appliquer des formules vectorisées. Les fonctions essentielles à connaître sont np.array(), np.mean(), np.std(), np.linspace(), np.polyfit() et np.sqrt().
Exemple concret : vous mesurez dix fois la période d'un pendule. Plutôt que de tout calculer à la main, vous créez un tableau NumPy et obtenez la moyenne et l'incertitude-type en deux lignes. C'est exactement le type de réflexe que les examinateurs attendent, comme nous le détaillons dans notre article sur les incertitudes de mesure.
Matplotlib : tracer des courbes exploitables
Matplotlib est la bibliothèque de tracé graphique. En TP, une courbe bien présentée vaut souvent plus qu'un long discours. Les examinateurs évaluent la qualité de vos graphiques : présence des axes avec unités, titre, légende, barres d'incertitude.
Les fonctions indispensables sont plt.plot() pour les courbes, plt.scatter() pour les points expérimentaux, plt.errorbar() pour les barres d'incertitude, plt.xlabel(), plt.ylabel(), plt.title() et plt.legend(). Un graphique sans unités sur les axes ou sans légende est un signal négatif immédiat pour le jury.
SciPy : régressions et ajustements
SciPy complète NumPy avec des outils statistiques avancés. La fonction scipy.optimize.curve_fit() est celle que vous utiliserez le plus souvent. Elle permet de réaliser une régression non seulement linéaire, mais aussi sur n'importe quel modèle théorique. Elle retourne les paramètres optimaux et leur matrice de covariance, ce qui vous donne directement les incertitudes sur les paramètres ajustés.
💡Python vous ralentit en TP ? Gagnez en efficacité. Nos tuteurs issus de l'X et de Centrale vous entraînent sur des scripts types jusqu'à ce que le traitement de données devienne un réflexe, pas un frein.
Découvrir nos cours particuliers →Comment réaliser une régression linéaire propre en TP ?
La régression linéaire est la compétence Python la plus demandée en TP de concours. Voici la méthode complète, étape par étape.
Étape 1 : préparer les données
Commencez par entrer vos données expérimentales dans des tableaux NumPy. Séparez les grandeurs mesurées (x et y) et leurs incertitudes respectives. Si vous avez linéarisé votre modèle, appliquez la transformation avant la régression. Par exemple, pour vérifier une loi en puissance y = a*x^n, tracez ln(y) en fonction de ln(x).
Étape 2 : tracer les points expérimentaux
Avant toute régression, tracez toujours vos points avec plt.errorbar(). Cette visualisation vous permet de vérifier que la relation est bien linéaire et de détecter d'éventuels points aberrants. Un point qui s'écarte nettement de la tendance générale peut signaler une erreur de mesure qu'il faut investiguer, pas ignorer.
Étape 3 : ajuster le modèle
Utilisez np.polyfit(x, y, 1) pour une régression linéaire simple ou curve_fit() pour un modèle plus général. La fonction polyfit retourne les coefficients du polynôme, tandis que curve_fit retourne les paramètres optimaux et la matrice de covariance. La racine carrée des éléments diagonaux de cette matrice donne les incertitudes sur chaque paramètre.
Étape 4 : superposer le modèle et les données
Tracez la droite de régression sur le même graphique que les points expérimentaux. Utilisez np.linspace() pour créer un vecteur de points régulièrement espacés sur lequel évaluer le modèle. Le graphique final doit montrer clairement l'accord entre théorie et expérience, avec les résidus si possible.
Étape 5 : calculer le coefficient de détermination
Le R-carré quantifie la qualité de l'ajustement. Attention : un bon R-carré ne suffit pas à valider un modèle. L'examinateur attend que vous analysiez les résidus. Si les résidus montrent une structure systématique, le modèle est inadapté même avec un R-carré élevé.
Comment traiter les incertitudes avec Python ?
Le traitement des incertitudes est ce qui distingue un script de TP basique d'un traitement scientifique rigoureux. Les examinateurs repèrent immédiatement les candidats qui savent propager les incertitudes correctement, comme nous l'expliquons dans notre guide sur la rédaction d'un compte-rendu de TP.
Propagation par la formule analytique
Pour une grandeur calculée G = f(x1, x2, ..., xn), l'incertitude composée se calcule par la somme quadratique des dérivées partielles multipliées par les incertitudes de chaque variable. En Python, vous pouvez coder cette formule directement avec NumPy. C'est la méthode la plus rapide et celle que les jurys préfèrent voir.
Propagation par simulation Monte-Carlo
Le principe consiste à générer un grand nombre de jeux de données aléatoires (typiquement 10 000) en faisant varier chaque mesure selon sa distribution d'incertitude. L'écart-type de la distribution obtenue donne l'incertitude sur le résultat. En pratique, vous utilisez np.random.normal(valeur_moyenne, incertitude, N) pour générer les échantillons. Cette approche gère naturellement les non-linéarités que la formule analytique ne capture pas.
Afficher les incertitudes sur les graphiques
Utilisez systématiquement plt.errorbar() avec les paramètres xerr et yerr. Les barres d'incertitude doivent être visibles sans écraser les données. Ajustez la taille des marqueurs et l'épaisseur des barres pour un rendu lisible. Un graphique avec barres d'incertitude montre immédiatement à l'examinateur que vous maîtrisez la démarche expérimentale complète.
💡Préparez vos oraux de TP avec des scripts rodés. Chez Majorant, nos stages intensifs incluent des séances de TP encadrées où vous pratiquez le traitement Python en conditions réelles de concours.
Voir les stages intensifs →Quels scripts types faut-il préparer avant les oraux ?
Arriver aux oraux de TP avec une bibliothèque de scripts prêts à l'emploi est un avantage décisif. Voici les scripts à avoir dans votre répertoire.
Script de régression linéaire avec incertitudes
Un script qui prend en entrée deux tableaux de mesures et leurs incertitudes, réalise la régression, affiche le graphique avec barres d'erreur et droite de régression, et imprime les paramètres avec leurs incertitudes. Vous devez pouvoir l'adapter en moins de deux minutes à n'importe quel jeu de données.
Script de régression non linéaire
Le même principe, mais avec curve_fit() et un modèle défini comme une fonction Python. Préparez des modèles courants : exponentielle décroissante, oscillation amortie, loi de puissance, réponse d'un filtre.
Script de propagation Monte-Carlo
Un script générique qui prend en entrée les mesures, leurs incertitudes et une fonction de calcul, puis retourne la valeur calculée et son incertitude. Adaptable à toute situation en changeant simplement la fonction.
Quelles erreurs Python coûtent le plus de points en TP ?
Les erreurs les plus pénalisantes ne sont pas des bugs informatiques, mais des erreurs de méthode scientifique traduites en code.
Première erreur : tracer une courbe sans barres d'incertitude. L'examinateur considère que vous n'avez pas intégré la démarche de mesure.
Deuxième erreur : confondre np.std() avec l'incertitude-type. L'écart-type d'un échantillon n'est pas l'incertitude sur la moyenne. Il faut diviser par la racine de n.
Troisième erreur : oublier les unités sur les axes des graphiques. Utilisez plt.xlabel("Tension (V)") systématiquement.
Quatrième erreur : forcer une régression linéaire sur des données non linéaires. Si vos résidus montrent une courbure, changez de modèle.
Les candidats accompagnés par Majorant apprennent à éviter ces pièges grâce à des entraînements en conditions réelles.
Comment progresser en Python pour les TP au quotidien ?
La progression en Python suit la même logique que la progression en physique : la pratique régulière et ciblée. Refaites vos TP de l'année en traitant les données avec Python plutôt qu'à la main. Reproduisez les courbes de vos poly de cours. Cherchez les annales de TP disponibles et traitez-les intégralement.
L'apprentissage de Python ne s'arrête pas aux concours. En école d'ingénieur, ces compétences seront amplifiées et étendues, comme le montre notre article sur Python et la data science en école d'ingénieur. Le temps investi maintenant est un investissement à long terme.
Majorant recommande également de constituer un dossier de scripts commentés que vous enrichissez au fil de l'année : c'est votre boîte à outils personnelle pour le jour des oraux.
💡Besoin d'un entraînement ciblé sur les oraux de TP ? Nos tuteurs vous accompagnent sur la préparation complète des épreuves orales, y compris le volet Python et traitement de données.
Découvrir la préparation oraux →