next up previous contents index
suivant: La méthode de Heun monter: Les méthodes numériques pour précédent: La méthode d'Euler   Table des matières   Index

La méthode du point milieu

La méthode du point milieu consiste à approcher, au voisinage de t0, la solution de l'équation différentielle y'(t) = f (t, y(t)),  y(t0) = y0 t0 $ \in$ [a;b], par une paralléle à la tangente au "point milieu de la solution obtenue par la méthode d'Euler" :
Le "point milieu de la solution obtenue par la méthode d'Euler" est le point de coordonnées :
(t0 + h/2, y0 + h/2f (t0, y0))
et sa tangente a donc comme pente :
$ \alpha$ = f (t0 + h/2, y0 + h/2f (t0, y0))
La méthode du point milieu fait passer du point (t0, y0) au point (t1, y1) avec :
t1 = t0 + h et y1 = y0 + h*$ \alpha$ = y0 + h*f (t0 + h/2, y0 + h/2*f (t0, y0)).
On remarquera que :
euler_f(f,t0,y0,h/2)=(t0+h/2,y0+h/2*f(t0,y0))
On va donc écrire la fonction :
ptmilieu_f(f,t0,y0,h)=(t0+h,y0+h*f(t0+h/2,y0+h/2*f(t0,y0)))
qui réalise une seule étape de cette méthode et qui permet de passer d'un point d'abscisse t0 au point d'abscisse t0 + h, ces points étant situés sur le graphe de la solution approchée par cette méthode.
ptmilieu_f(f,t0,y0,h):={
local t1,y1;
t1:=t0+h;
y1:=y0+h*f(t0+h/2,y0+h/2*f(t0,y0));
return (t1,y1);
}
Il reste à écrire une fonction qui renvoie la séquence des segments obtenus par cette méthode, pour avoir le dessin dans l'écran graphique obtenu comme réponse.
On peut écrire la même fonction que précédemment en remplacant simplement tous les appels à euler_f par ptmilieu_f.
Mais on va plutôt rajouter un paramètre supplémentaire methode qui sera soit la fonction euler_f soit la fonction ptmilieu_f. On écrit :
trace_methode(methode,f,t0,y0,h,a,b)
methode qui est une fonction des variables f,t0,y0,h
trace_methode(methode,f,t0,y0,h,a,b):={
local td0,yd0,l1,j,ls;
td0:=t0;
yd0:=y0;
h:=abs(h);
ls:=[];
while (t0<b-h){
    l1:=methode(f,t0,y0,h);
    ls:=ls,segment(t0++i*y0,point(l1));
    (t0,y0):=l1;
}
ls:=ls,segment(t0+i*y0,point(methode(f,t0,y0,b-t0)));
//on trace avec -h en partant de td0 et de yd0 
//(td0 et yd0 sont les valeurs du debut)
t0:=td0;
y0:=yd0;
while ( t0>a+h){
    l1:=methode(f,t0,y0,-h);
    ls:=ls,segment(t0+i*y0,point(l1));
    (t0,y0):=l1;
}
ls:=ls,segment(t0+i*y0,point(methode(f,t0,y0,a-t0))); 
return ls;
}

next up previous contents index
suivant: La méthode de Heun monter: Les méthodes numériques pour précédent: La méthode d'Euler   Table des matières   Index
Documentation de giac écrite par Renée De Graeve