Solution approchée du système v’=f(t,v) : odesolve

### 4.3.6 Solution approchée du système v’=f(t,v) : odesolve

On cherche une valeur approchée du vecteur v(t) de ℝn qui est la solution du système : v′(t)=f(t,v(t)).
L’expression f(t,v(t)) peut être donnée :
soit par un vecteur ayant comme coordonnées des expressions de t et des coordonnées xi de v,
soit par une fonction f de ℝ × ℝn dans ℝn.

- L’expression f(t,v(t)) est donnée par un vecteur d’expressions Si v est un vecteur de coordonnées [x1,..,xn] dépendant de t et si f(t,v(t)) est donné par un vecteur ayant comme coordonnées les expressions dépendant de t et des xi : [Xpr1,...,Xprn], si la valeur initiale de v en t=t0 est le vecteur de coordonnées [x01,...,x0n] alors l’instruction
  odesolve([Xpr1,...,Xprn],t=t0..t1,[x1,...,xn],[x01,...,x0n])
  renverra une valeur approchée de v au temps t=t1. Le paramètre optionnel curve permet d’avoir les valeurs intermédiaires sous forme d’une liste de couples [t,v(t)] calculés.

  Pour résoudre le système :
  x′(t)=−y(t)
  y′(t)=x(t)
  On tape :

  odesolve([-y,x],t=0..pi,[x,y],[0,1])

  On obtient :

  [-1.79045146764e-15,-1]
- L’expression f(t,v(t)) est donnée par f une fonction de ℝ × ℝn dans ℝn.
  odesolve(t0..t1,(t,v)->f(t,v),v0) ou
  odesolve(t0..t1,f,v0)
  calcule de façon approchée la valeur de v(t1) lorsque le vecteur de coordonnées v(t) de ℝn est la solution de v′(t)=f(t,v(t)) qui vérifie v(t0)=v0.
  Le paramètre optionnel curve permet d’avoir les valeurs intermédiaires sous forme d’une liste de couples [t,v(t)] calculés.

  Pour résoudre le système :
  x′(t)=−y(t)
  y′(t)=x(t)
  On tape :

  odesolve(0..pi,(t,v)->[-v[1],v[0]],[0,1])

  Ou on définit la fonction :

  f(t,v):=[-v[1],v[0]]

  puis on tape :

  odesolve(0..pi,f,[0,1])

  On obtient :

  [-1.79045146764e-15,-1]

  On définit la fonction :

  f(t,v):=[-v[1],v[0]]

  puis on tape :

  odesolve(0..pi/4,f,[0,1],curve)

  On obtient :

  [[0.1781,[-0.177159948386,0.984182072936]], [0.3781,[-0.369155338156,0.929367707805]], [0.5781,[-0.54643366953,0.837502384954]], [0.7781,[-0.701927414872,0.712248484906]]]