Aller au contenu principal

Comment résoudre des équations différentielles ordinaires en utilisant SciPy.

Voici un tutoriel détaillé étape par étape sur la façon de résoudre des équations différentielles ordinaires en utilisant SciPy.

Introduction

Les équations différentielles ordinaires (EDO) sont des équations mathématiques qui décrivent la relation entre une fonction et ses dérivées. Résoudre ces équations nous permet de comprendre le comportement de divers systèmes dans des domaines tels que la physique, l'ingénierie et la biologie.

SciPy est une puissante bibliothèque de calcul scientifique en Python qui fournit divers outils pour résoudre des équations différentielles. Dans ce tutoriel, nous couvrirons le processus de résolution des EDO en utilisant le module scipy.integrate.

Étape 1 : Importer les modules requis

La première étape consiste à importer les modules nécessaires de SciPy. Nous utiliserons le module scipy.integrate pour résoudre les équations différentielles. De plus, nous importerons NumPy pour effectuer des opérations numériques et Matplotlib pour les visualisations.

import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt

Étape 2 : Définir l'EDO

Ensuite, nous devons définir l'EDO que nous voulons résoudre. L'EDO peut être représentée sous la forme d'un système d'équations différentielles du premier ordre. Par exemple, considérons l'EDO suivante :

dy/dt = f(t, y)

Ici, y est la variable dépendante, t est la variable indépendante (temps) et f(t, y) est une fonction connue qui décrit la relation entre t, y et ses dérivées.

Définissons une EDO simple à titre d'exemple :

dy/dt = -2y

Nous pouvons définir cette EDO en tant que fonction Python qui prend la variable indépendante t et la variable dépendante y en arguments et renvoie la dérivée dy/dt.

def ode(t, y):
return -2 * y

Étape 3 : Résoudre l'EDO

Maintenant, nous pouvons utiliser la fonction solve_ivp de SciPy pour résoudre numériquement l'EDO. Cette fonction nécessite les arguments suivants :

  • La fonction EDO (ode dans notre cas)
  • Les conditions initiales (t0 et y0)
  • L'intervalle de temps pour lequel nous voulons résoudre l'EDO (t_span)
t0 = 0  # temps initial
y0 = 1 # valeur initiale de y
t_span = (0, 5) # plage de temps

sol = solve_ivp(ode, t_span, [y0], t_eval=np.linspace(t_span[0], t_span[1], 100))

Dans le code ci-dessus, nous passons la fonction EDO ode, la plage de temps t_span, la valeur initiale de y y0 et le temps initial t0 à la fonction solve_ivp. Nous spécifions également t_eval pour obtenir la solution à des points de temps spécifiques.

Étape 4 : Analyser la solution

Une fois que nous avons la solution, nous pouvons l'analyser et la visualiser. La solution retournée par solve_ivp contient les points de temps et les valeurs correspondantes de y. Nous pouvons y accéder en utilisant sol.t et sol.y.

print(sol.t)  # points de temps
print(sol.y) # valeurs de y aux points de temps correspondants

Étape 5 : Tracer la solution

Enfin, nous pouvons tracer la solution en utilisant Matplotlib pour visualiser le comportement de y au fil du temps.

plt.plot(sol.t, sol.y[0])
plt.xlabel('Temps')
plt.ylabel('y')
plt.title('Solution de l\'EDO')
plt.grid(True)
plt.show()

Dans le code ci-dessus, nous utilisons plt.plot pour créer un graphique linéaire de la solution. Nous définissons l'axe des x comme les points de temps sol.t et l'axe des y comme les valeurs de y sol.y[0]. Nous ajoutons également des étiquettes, un titre et des lignes de grille au graphique.

Conclusion

Dans ce tutoriel, nous avons appris comment résoudre des équations différentielles ordinaires en utilisant SciPy. Nous avons couvert les étapes impliquées, de l'importation des modules nécessaires à la visualisation de la solution. Maintenant, vous pouvez appliquer ces connaissances pour résoudre des EDO plus complexes et analyser divers systèmes dynamiques.

N'oubliez pas d'ajuster le code en fonction de l'EDO spécifique que vous souhaitez résoudre et de personnaliser la visualisation en fonction de vos besoins.