4.3.5 Solution approchée de y’=f(t,y) : odesolve
Soit f une fonction de ℝ2
dans ℝ.
odesolve renvoie la valeur approchée y(t1) de la solution
de léquation differentielle y′=f(t,y) lorsque y(t0)=y0.
odesolve a comme paramètres :
-
odesolve(f(t,y),[t,y],[t0,y0],t1) ou
odesolve(f(t,y),t=t0..t1,y,y0) ou
odesolve(t0..t1,f,y0) ou
odesolve(t0..t1,(t,y)->f(t,y),y0)
renvoie la valeur approchée de
y(t1) lorsque y(t) est la
solution de y′(t)=f(t,y(t)) qui vérifie y(t0)=y0.
- On peut ajouter un paramètre optionnel pour
indiquer la discrétisation en temps souhaitée
(tstep=valeur). Cette valeur n’est pas forcément
respectée par le solver. Par défaut tstep=0.3)
- On peut indiquer en paramètre optionnel curve
pour obtenir la liste des [t,[y(t)]] calculés au lieu
de la seule valeur de y(t1).
On tape :
odesolve(sin(t*y),[t,y],[0,1],2)
ou :
odesolve(sin(t*y),t=0..2,y,1)
ou :
odesolve(0..2,(t,y)->sin(t*y),1)
ou encore on définit la fonction :
f(t,y):=sin(t*y)
et on tape:
odesolve(0..2,f,1)
On obtient :
[1.82241255675]
puis on tape :
odesolve(0..2,f,1,tstep=0.3)
On obtient :
[1.82241255675]
On tape :
odesolve(sin(t*y),t=0..2,y,1,tstep=0.5)
On obtient :
[1.82241255675]
On tape :
odesolve(sin(t*y),t=0..2,y,1,tstep=0.5,curve)
On obtient :
[[0.0,[1.0]],[0.3906,[1.07811817892]],[0.760963058921,[1.30972370161]],[1.07086790074,[1.60476137064]],[1.39334557444,[1.86417104883]],[1.78645581533,[1.90374891395]],[2.0,[1.82241253071]]]
On tape :
odesolve(sin(t*y),t=0..2,y,1,curve)
Ou on tape :
odesolve(sin(t*y),t=0..2,y,1,tstep=0.3,curve)
On obtient :
[[0.0,[1.0]],[0.3781,[1.07309655677]],[0.6781,[1.24392692452]],[0.9781,[1.51224777765]],[1.2781,[1.7904830809]],[1.5781,[1.92164503333]],[1.8781,[1.87481063533]],[2.0,[1.82241255617]]]