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