TD: Programmation de la méthode d'Euler TS
Il s'agit de résoudre de manière approchée de l’équation différentielle:
y’ = ay et y(0) = 1 (E) sur [0,1] lorsque a est un réel donné
On admet que (E) possède une unique solution.
On utilise la méthode d'Euler pour obtenir une approximation de la solution sous la
forme d'une courbe représentative.
Principe: On cherche à déterminer une approximation d'une fonction f, dérivable sur un
intervalle I, connaissant une relation entre f' et f ainsi que la valeur de f en un point a
de I
On subdivise l'intervalle, en construisant la suite de points
x0=a x1=a+h x2=x1+h etc…
h est appelé le pas.
f étant dérivable, on a f(x1) = f(x0+h) ≈ f'(x0)h+f(x0).
Lorsque h est petit on obtient une approximation de f(x1) et on réitère le procédé.
A l'étape k, on a f(xk+1) = f(xk+h) ≈ f'(xk)h + f(xk) (*)
Application de la méthode à notre problème.
Ici on a:
x0=
x1=
.......
xk=
.........
xn=1
Quelle est la nature de la suite de valeurs (xk):
Quelle est la relation entre n et h:
a et h étant supposé connus, adapter la relation (*) au problème posé.
On note yk la valeur approché de f(xk). Quelle est la nature de la suite de valeurs (yk)?
Ecriture d'un algorithme
Décrire les étapes permettant de remplir le tableau suivant:
xk 0 h 2h ........................................... 1
yk 1 y1 y2 ......................................... yn
Ecriture d'un programme dans scilab:
Voici un programme écrit en Scilab, écrire en regard des instructions, ce que fait le
programme, sur le modèle des commentaires déjà écrits.
function [x,y]=euler(a,h) ici on crée une fonction qui remplit deux tableaux x et y
x(1)=0;y(1)=1;
n=1/h;
for i=2:n+1
x(i)=x(i-1)+h;
y(i)=y(i-1)*(1+a*h);
end
endfunction
clf() initialise la fenêtre graphique
xtitle('résolution de dy/dt=ay sur [0;1] avec la méthode d Euler') insère un titre
[x,y]=euler(-2,0.1);
plot2d(x,y,2,axesflag=4) trace la courbe correspondante en rouge
[x,y]=euler(-2,0.05);
plot2d(x,y,3,axesflag=4) trace la courbe correspondante, en vert.
[x,y]=euler(-2,0.01);
plot2d(x,y,5,axesflag=4) trace la courbe correspondante, en bleu.
Remarque: dans Scilab, les tableaux ne peuvent commencer leur indexation à 0, d'où
l'adaptation de l'algorithme dans la boucle for.
Admirons le résultat: Ouvrir Scilab puis dans application, lancer l'éditeur de programme,
recopier le programme, sans les commentaires puis faites charger dans Scilab, modifier
ensuite les paramètres a et h et relancer.