Solution approchée de y’=f(t,y) : odesolve

### 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]]]