Programmation Python pour les mathématiques

L2 - 2MA100

Objectifs

Cet enseignement a pour but d’améliorer ses capacités en programmation, en particulier pour les applications dans les différents domaines des mathématiques.

Description

Le but de l’unité d’enseignement n’est pas d’apprendre la syntaxe du langage Python ni ses subtilités, mais de se focaliser sur son utilisation pratique dans différents domaines des mathématiques: les suites, l’algèbre linéaire, l’intégration, la théorie des graphes, la recherche de zéros de fonctions, les probabilités, les statistiques, les équations différentielles, le calcul symbolique, et la théorie des nombres. La résolution des exercices proposés devrait permettre d’avoir une bonne vision d’ensemble des possibilités d’utilisation de la programmation dans les mathématiques et d’être à même de résoudre des problèmes mathématiques complexes avec l’aide de la programmation.

Contenu

  1. Éléments de programmation en Python
    • Structures de données. Rappels des structures de données de bases de Python (listes, tuples, ensembles, dictionnaires).
    • Structures homogènes. Opérations sur les vecteurs et matrices (module Numpy). Représentations graphiques (matplotlib).
  2. Mathématiques
    • Calcul symbolique. Introduction au calcul symbolique avec Sympy (simplification, différentiation, intégration, limites, développements limités). Construction graphique d’une fonction pathologique qui à l’air lisse, mais qui ne l’est pas (genre Weierstrass).
    • Intégration numérique. Méthodes numériques de base pour l’intégration (rectangles, trapèze, Monte-Carlo,…).
    • Algèbre. Décomposition LU. Méthode de la puissance itérée pour calculer la plus grande valeur propre. Groupes de permutations (représentations, orbites et stabilisateurs).
    • Zéro de fonctions. Méthode de Newton en une et plusieurs dimensions. Attracteur de la méthode de Newton pour $z^3 = 1$.
    • Théorie des graphes. Représentation du graphe par un dictionnaire, algorithme permettant de déterminer su deux sommets sont connectés ou non. Matrice d’adjacence pour calculer le nombre de triangles dans un graphe.
    • Probabilités et statistiques. Illustration de la Loi de Benford (avec des données réelles de l’INSEE). Simulation de la ruine du joueur. Simulations de percolation.
    • Équations différentielles. Méthodes classiques (Euler explicite/implicite, Runge-Kutta). Application pour calculer le mouvement d’une planète en 2d dans un potentiel $V(x) = |x|^\alpha$.
    • Cryptographie. Codage de Vigenère et utilisation du PGDC pour le casser. Gé- nération de nombre premiers et pseudo-premiers avec Fermat. Chiffrement RSA (algorithme d’Euclide, Bézout).