L2 Algo. et programmation
Fondamentaux de l'algorithmique et de la programmation en Python, depuis les bases du langage jusqu'aux méthodes numériques appliquées à la physique (intégration, équations différentielles, ajustement de données, nombres aléatoires).
Instructor: Grégory Sainton (Assistant TP)
Location: Université de Paris, UFR de Physique
Objectifs du cours
Ce cours d’introduction à l’informatique scientifique vise à donner aux étudiants en physique les outils nécessaires pour résoudre des problèmes physiques par le calcul numérique. À l’issue de ce cours, les étudiants seront capables de :
- Concevoir et implémenter des algorithmes pour résoudre des problèmes physiques
- Programmer en Python avec les bibliothèques NumPy et Matplotlib
- Appliquer les méthodes numériques classiques (intégration, résolution d’équations, équations différentielles)
- Analyser la complexité algorithmique d’un programme
- Traiter et visualiser des données expérimentales
Prérequis
- Notions de mathématiques de lycée (fonctions, dérivées, probabilités)
- Aucune expérience préalable en programmation n’est requise
Évaluation (6 ECTS)
- Questions de cours hebdomadaires (EC) : 10 % de la note finale
- Travaux pratiques (ETP) : 20 % de la note finale
- Évaluation partielle mi-semestre (EP) : 35 % de la note finale
- Examen final (EF) : 35 % de la note finale
- Note finale : 70 % × MAX((EP+EF)/2, EF) + 20 % × ETP + 10 % × EC
Références
- Documentation officielle NumPy : https://numpy.org/doc/
- Documentation officielle Matplotlib : https://matplotlib.org/
Schedule
| Week | Date | Topic | Materials |
|---|---|---|---|
| 1 | Introduction à l'algorithmique et à Python Organisation de l’UE, notion d’algorithme et pseudo-langage, premiers pas avec JupyterLab, variables, opérateurs et bibliothèques. | ||
| 2 | Fonctions, boucles et branchements Préambule algorithmique, retour sur les variables, définition et appel de fonctions, structures conditionnelles (if/elif/else), boucles (for, while), introduction à NumPy. | ||
| 3 | Fichiers, représentation des nombres et visualisation Lecture et écriture de fichiers (NumPy, texte, CSV), représentation binaire et virgule flottante, représentation graphique avec Matplotlib, introduction au calcul formel avec SymPy. | ||
| 4 | Images, tableaux et complexité algorithmique Représentation numérique des images, manipulation de tableaux NumPy, notion de complexité algorithmique (O(N), O(N²), O(N log N)), algorithmes de tri (sélection, insertion, quicksort). | ||
| 5 | Recherche et résolution de f(x)=0 Recherche séquentielle, dichotomique et par interpolation, méthodes de résolution numérique (balayage, dichotomie, Newton-Raphson), retour sur les images. | ||
| 6 | Intégration numérique Méthodes de quadrature (rectangles, point milieu, trapèzes, Simpson, Romberg), estimation et comparaison des erreurs de convergence. | ||
| 7 | Équations différentielles ordinaires Méthodes aux différences finies, schémas d’Euler explicite et implicite, méthodes d’ordre supérieur (point milieu, Heun, Runge-Kutta d’ordre 4). | ||
| 8 | Nombres aléatoires Distanciel. Générateurs pseudo-aléatoires, congruences linéaires, Mersenne Twister, lois de probabilité (uniforme, exponentielle), méthode d’inversion de la fonction de partition. | ||
| 9 | Ajustement de données Distanciel. Méthode des moindres carrés, régression linéaire, minimisation du chi-2, introduction à scipy.optimize pour les problèmes non linéaires. |