ATTENTION/WARNING - NE PAS DÉPOSER ICI/DO NOT SUBMIT HERE

Ceci est la version de TEST de DIAL.mem. Veuillez ne pas soumettre votre mémoire sur ce site mais bien à l'URL suivante: 'https://thesis.dial.uclouvain.be'.
This is the TEST version of DIAL.mem. Please use the following URL to submit your master thesis: 'https://thesis.dial.uclouvain.be'.
 

Implémentation de la fonction ODE45 de MATLAB en Python

(2021)

Files

Moreau_50441400_2021.pdf
  • Closed access
  • Adobe PDF
  • 919.96 KB

Moreau_50441400_2021_APPENDIX1.zip
  • Closed access
  • Unknown
  • 50.69 KB

Details

Supervisors
Faculty
Degree label
Abstract
Les équations différentielles formant une branche très importante des mathématiques appliquées, on les retrouve pour produire les modèles mathématiques de toute sortes de processus physiques. Leurs domaines d’application sont très nombreux. ODE45 est un outil numérique permettant de résoudre ces équations différentielles et son implémentation existe déjà en MATLAB. L’ambition de ce mémoire est de reproduire ses résultats mais, cette fois, en Python - un langage informatique désormais synonyme d’avenir pour beaucoup. Pourtant, une implémentation en Python permettant de résoudre des équations différentielles est déjà disponible : il s’agit de scipy.integrate.solve_ivp. Cependant, la balance entre vitesse d’exécution et précision de cette solution est bien loin d’égaler celle d’ODE45 de MATLAB. De ce fait, plus concrètement, la finalité de ce mémoire est de reproduire les résultats de l’outil numérique déjà existant ODE45, implémenté en MATLAB mais en utilisant Python. Le tout pourra être soumis comme une contribution open source à l’environnement de développement afin de faciliter la tâche à tous les futurs ingénieurs. Cette thématique étant cependant relativement ambitieuse pour un étudiant, j’ai dû d’abord modérer mon enthousiasme pour faire preuve de rigueur en suivant le plan suivant. Dans un premier temps, je me suis appliqué à comprendre en profondeur l’algorithme et l’implémentation MATLAB, afin d’être sûr de la direction à prendre. Ensuite, je me suis attelé à la traduction à proprement parler en langage Python. Suivent alors logiquement deux phases de tests : une première au cours de laquelle j’ai comparé mes résultats avec ceux que permet d’obtenir MATLAB, afin de m’assurer qu’ils sont identiques, et une seconde qui m’a permis de confronter les performances de mon implémentation avec celles de l’implémentation SciPy évoquée précédemment. Afin d’illustrer l’importance qu’a pour moi ce sujet de mémoire et son utilité au quotidien, j’ai décidé de parler des domaines d’application concrets pour lesquels mon implémentation pourra être utilisée. Enfin, j’ai partagé mon code en open source. Quels furent les résultats de mes tests ? Dans un premier temps, j’ai pu démontrer grâce à un panel diversifié et représentatif de tests que mon implémentation en Python donnait des résultats dont la fiabilité équivalait à ceux produits par l’implémentation MATLAB. Dans un second temps, lors de ma comparaison entre l’implémentation SciPy déjà existante en Python et mon implémentation Python d’ ODE45, le constat fut sans appel : tant au niveau de la rapidité d’exécution que de la précision des résultats, les tests réalisés ont prouvés que mon implémentation ODE45 obtenait des résultats concrètement supérieurs. J’admets éprouver une certaine satisfaction à l’idée d’avoir eu l’occasion de réaliser ce mémoire, un projet qui me semble aussi utile que complexe dans sa réalisation et j’espère que mon sujet vous passionnera autant que cela a été le cas pour moi.