On considère une équation différentielle d’ordre 1 avec condition initiale (problème de Cauchy) :
$\left\{\begin{array}{l} F'(x)=f(x)\\F(x_0)=y_0\end{array}\right.$
Dans ce problème, on connait la fonction $f$ ainsi que $x_0$. On cherche la fonction $F$ qui vérifie ce système pour tout $x$. On cherche donc une fonction $F$ dont on connait la fonction dérivée et une valeur.
La méthode d'Euler permet de tracer une courbe approximative de la représentation graphique de $F$.
A partir d'un pas $h$, on construit point par point, une approximation de la courbe de $F$, en remplaçant la courbe par un morceau de sa tangente au point d'abscisse $x_i$ pour trouver une valeur approchée de $F(x_i+h)$.
Sur la figure ci-dessous, les points $B_i$ sont les points de $\mathcal{C}_F$ et les points $A_i$ sont des approximations des points $B_i$ en suivant les tangentes à $\mathcal{C}_F$.
Travaillons avec l'exemple : $F'x)=f(x)=\dfrac{x}2$, $F(1)=\dfrac14$ et $h=0,5$.
La droite $(A_iA_{i+1})$ a donc $f(x_i)$ comme coefficient directeur, c'est à dire $\dfrac{y_{i+1}-y_i}{x_{i+1}-x_i}=f(x_i)$ avec $x_{i+1}=x_i+h$.
def f(x):
return x/2
def Euler(f,x0,y0,h,n):
# à compléter
print(Euler(f,1,0.25,0.5,3))
Exécuter le programme ci-dessous pour voir la courbe de $F$ et celle de son approximation par la méthode d'Euler.
import matplotlib.pyplot as plt
tabx = [1+i*0.5 for i in range(10)]
taby = Euler(f,1,0.25,0.5,10)
plt.plot(tabx,taby,'b-') # la coube approchée en bleu
plt.plot(tabx,[x**2/4 for x in tabx],'r--') # la courbe de F en pointillé rouge
plt.show()
Transformer la fonction Euler et tracer, sur le même graphique, sur $[0;5]$, plusieurs approximations (pour $h=0.5$, $h=0.2$ et $h=0.05$) de la courbe de la fonction exponentielle solution de :
$\left\{\begin{array}{l} F'(x)=F(x)\\F(0)=1\end{array}\right.$
# à compléter