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 consiste à approcher, au voisinage de t0,
la solution de l'équation différentielle
y'(t) = f (t, y(t)), y(t0) = y0 t0
[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 :
= 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*
= 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)
où 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;
}
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