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.