Cet article t’explique la manière de résoudre des équations différentielles grâce à Python, en particulier avec la commande odeint. Après avoir trouvé les solutions, nous pouvons les représenter graphiquement. Essayons de comprendre le lien entre équations différentielles et Python avant d’effectuer de brefs rappels qui nous serviront à étudier pas à pas la méthode que nous illustrerons ensuite grâce à un exemple concret.
Cet article s’adresse en premier lieu à des élèves en mathématiques appliquées.
Pourquoi lier équations différentielles et Python ?
Les équations différentielles et Python sont deux notions qui ont vu leur part augmenter après la transition entre ECE et maths appliquées. Ce sont des notions clés, mais qu’on a souvent pour habitude de délaisser par désintérêt ou du fait de la conviction que, de toute façon, « c’est les probas le plus important ».
Bien au contraire, se démarquer sur ces notions te permettra de gagner des points facilement.
En effet, les exercices se ressemblent beaucoup entre eux et sont souvent assez rapides à traiter. Apprendre quelques méthodes suffit donc largement pour « se border ». Plus encore, très peu d’élèves prennent le temps de traiter les exercices de Python ou d’équations différentielles, ce qui peut te distinguer des autres dans le lot de copies.
Maintenant que tu es convaincu(e) de l’utilité de travailler ces deux notions, il s’agit de comprendre en quoi elles sont liées.
Qu’est-ce qu’une équation différentielle ?
Commençons par reprendre les bases : résoudre une équation différentielle, c’est trouver une fonction qui vérifie une certaine équation. En première année, tu apprendras différentes méthodes pour les résoudre, notamment en ce qu’il s’agit de la recherche de la solution particulière.
Tout au long de cet article, on utilisera l’équation différentielle suivante en exemple :
\( y’ + ay = b\)
Pourquoi utiliser Python pour résoudre une équation différentielle ?
L’avantage de Python est sa capacité de calcul et il permet ainsi de calculer des trajectoires qui sont constituées de dizaines de milliers de points chacune.
CEPENDANT, il est très important de noter qu’on n’obtiendra pas la solution de l’équation différentielle sous la forme d’une fonction, mais sous la forme d’un vecteur qui correspondra aux images successives de réels par la fonction solution de l’équation.
Mais alors, comment fait-on ?
La fonction odeint pas à pas
Tout d’abord, il faut importer la fonction qu’on utilisera dans notre résolution, qui est la fonction odeint, dans la bibliothèque scipy.integrate.
On fera cela avec le script suivant :
La bibliothèque scipy.integrate n’est pas au programme, mais le programme mentionne explicitement cette fonction, il est donc attendu de toi que tu la connaisses et que tu saches la manipuler.
On s’intéressera ici seulement à des équations différentielles qui remplissent une condition initiale, c’est-à-dire qu’on sait par exemple que \(y(t_0) = y_0\) (la valeur \(y_0\) étant donnée dans l’énoncé).
On va considérer l’équation différentielle E, qu’on a définie en début d’article, et on va la réécrire comme ceci :
\(y’ = f(y,t)\)
Afin de résoudre notre équation différentielle, on écrit le script suivant :
\(t\) est donc un vecteur défini à l’aide de linspace (mais qui aurait pu l’être avec arange, cela ne change rien au procédé), \(y_0\) comme étant un réel (comme on l’a défini au-dessus).
Peut-être que tu as déjà vu ce script en classe et que tu as eu du mal à le comprendre. Ne t’inquiète pas, c’est parfaitement normal, car c’est l’un des scripts les plus compliqués de l’année.
Si tu dois retenir une chose de cet article, c’est qu’on utilise la fonction odeint qui prend en argument trois choses :
- Un vecteur : on l’appelle ici t : c’est grâce à celui-ci qu’on peut définir sur quel intervalle on veut représenter notre trajectoire et quel degré de précision on veut donner à notre calcul (plus on augmente le nombre de points, plus la simulation sera précise, cependant cela alourdit le calcul et peut donc ralentir le processus. Pour un intervalle de largeur compris entre \(10\) et \(50\), choisir \(10 000\) points suffit).
- Un réel : \(y_0\) : c’est la condition initiale que doit respecter la solution de l’équation différentielle, elle nous est donnée par l’énoncé.
- Une fonction : \(f\), c’est ici que tu as peut-être du mal. En réalité, on a affaire à une fonction qui prend en argument une fonction. Cette fonction \(f\) prend en argument \(y\) et t et renvoie l’expression de \(y’\) en fonction de \(y\) et de t. Si tu n’as toujours pas compris, ne t’inquiète pas, on va étudier un exemple plus bas.
Représentation graphique d’équation différentielle avec matplotlib
Si l’exercice est de type EDHEC/EM Lyon, on ne te demandera pas de faire autre chose une fois ce script écrit. Cependant, dans une épreuve des Parisiennes ou dans un oral de maths HEC, on peut te demander des connaissances en Python hors programme et alors te demander de représenter les solutions de cette équation différentielle.
Pas de panique, car tu auras lu assidûment cet article jusqu’au bout.
Pour ce faire, on va procéder comme lorsqu’on représente une fonction dans Python.
Ainsi, on commence par importer la bibliothèque matplotlib.pyplot, puis on réutilise le vecteur linspace qu’on a utilisé dans la résolution de notre équation différentielle.
Et cela donne donc le script suivant :
On représentera donc la fonction sol définie plus haut par rapport à notre abscisse.
Exemple concret
Appliquons désormais cette méthode à un exemple.
On considère l’équation différentielle :
\(y’=3y + 2t\)
Avec la condition initiale \(y(-6) = 0\)
Écrivons un seul script pour la résolution et la représentation graphique :
Voici le résultat de notre courbe :
On observe que la fonction solution décroît très fort et de manière soudaine (cela est indiqué par le \(1e16\) en ordonnée). Cela est expliqué par la nature exponentielle des solutions de cette équation et du fait du \(3t\). En effet, on sait qu’on aura un \(exp(3t)\) dans notre fonction solution. D’après la courbe obtenue, ce \(exp(3t)\) aura un coefficient négatif devant lui.
Conclusion
Ainsi, la résolution d’équation différentielle à l’aide de Python est bien plus impressionnante qu’elle n’est difficile. T’entraîner à bien maîtriser ces deux parties du programme te permettra de te démarquer des autres candidats lors du concours. Il n’y a malheureusement pas encore d’annales qui traitent de ce thème, mais cela ne fait que renforcer la probabilité que cela tombe au concours.
Tu peux retrouver ici le méga-répertoire qui contient toutes les annales de concours et les corrigés. Tu peux également accéder ici à toutes nos autres ressources mathématiques !




