Python SciPy - Maîtriser le calcul scientifique

Aperçu du cours PDF
Couverture en cours de génération
Aperçu du cours
- Introduction
- Fonctions Spéciales, Intégration
- intégration numerique
- EXERCICE: Intégrer la fonction de Bessel jn d'ordre 3 entre 0 et 10
- Equations différentielles ordinaires (EDO)
- Transformées de Fourier
- EXERCICE : Le signal est réel du coup la TFD est symétrique. Afficher la TFD restreinte aux fréquences positives et la TFD restreinte aux fréquences entre 0 et 200Hz.
- Algèbre linéaire
- EXERCICE : vérifier qu'on a bien des valeurs et vecteurs propres.
- EXERCICE : Vérifier les résultats
- Optimisation, Trouver un minimum
- Trouver les zéros d'une fonction
Contenu détaillé du cours
Objectifs d'apprentissage
- Maîtriser les bases de SciPy pour le calcul scientifique en Python.
- Appliquer les fonctions spéciales et les techniques d'intégration numérique.
- Résoudre des équations différentielles ordinaires (EDO) avec SciPy.
- Utiliser les transformées de Fourier pour l'analyse de signaux.
- Manipuler l'algèbre linéaire avec SciPy (valeurs propres, vecteurs propres).
- Optimiser des fonctions et trouver leurs minima ou zéros.
- Valider les résultats obtenus à travers des exercices pratiques.
Public cible
Ce cours s'adresse aux développeurs Python, aux scientifiques, aux ingénieurs et aux étudiants ayant des bases en programmation Python et souhaitant approfondir leurs connaissances en calcul scientifique. Une compréhension des mathématiques appliquées (algèbre linéaire, analyse numérique) est recommandée.
Introduction
SciPy est une bibliothèque Python incontournable pour le calcul scientifique. Basée sur NumPy, elle offre des outils puissants pour résoudre des problèmes mathématiques complexes. Ce cours couvre ses principales fonctionnalités, des fonctions spéciales à l'optimisation, en passant par l'analyse de signaux.
Fonctions Spéciales et Intégration
SciPy propose des fonctions spéciales (Bessel, Legendre, etc.) et des méthodes d'intégration numérique (quad, dblquad). Par exemple, la fonction scipy.special.jn permet de travailler avec les fonctions de Bessel.
Intégration Numérique
L'intégration numérique est essentielle pour évaluer des fonctions sans primitive explicite. SciPy fournit scipy.integrate.quad pour les intégrales simples et des méthodes avancées pour les cas complexes.
EXERCICE: Intégrer la fonction de Bessel jn d'ordre 3 entre 0 et 10
Utilisez scipy.integrate.quad et scipy.special.jn pour calculer l'intégrale de la fonction de Bessel d'ordre 3 sur l'intervalle [0, 10]. Comparez avec une solution analytique si disponible.
Équations Différentielles Ordinaires (EDO)
SciPy permet de résoudre des EDO via scipy.integrate.solve_ivp. Cette méthode est cruciale pour modéliser des systèmes dynamiques en physique ou en biologie.
Transformées de Fourier
Le module scipy.fft implémente les transformées de Fourier discrètes (TFD). Utile pour l'analyse de signaux, il permet d'extraire des fréquences ou de filtrer du bruit.
EXERCICE : Analyse d'un signal réel
Pour un signal réel, la TFD est symétrique. Affichez la TFD restreinte aux fréquences positives, puis aux fréquences entre 0 et 200Hz en utilisant scipy.fft.fftfreq et le slicing NumPy.
Algèbre Linéaire
Avec scipy.linalg, résolvez des systèmes linéaires, calculez des valeurs propres (scipy.linalg.eig), ou décomposez des matrices (LU, QR).
EXERCICE : Vérification des valeurs/vecteurs propres
Générez une matrice aléatoire, calculez ses valeurs/vecteurs propres avec scipy.linalg.eig, et vérifiez que A.v = λ.v pour chaque paire.
EXERCICE : Validation des résultats
Comparez les résultats de scipy.linalg.inv avec une solution directe pour un système linéaire Ax=b, en mesurant l'erreur résiduelle.
Optimisation et Recherche de Zéros
Le module scipy.optimize offre des algorithmes pour minimiser des fonctions (minimize) ou trouver leurs racines (root, fsolve).
Trouver un minimum
Utilisez scipy.optimize.minimize avec différentes méthodes (BFGS, Nelder-Mead) pour optimiser une fonction non-linéaire.
Trouver les zéros d'une fonction
Avec scipy.optimize.root, résolvez des équations non-linéaires comme cos(x) - x = 0. Comparez les méthodes (hybr, lm).