Méthode d'Euler (simulation)

Calculs ››
Parent Previous Next

On peut programmer la méthode d'Euler en utilisant la syntaxe z[i], i étant le point courant, i=0 étant le premier point. z[0]= permet d'initialiser z et de même z[2] pour une équation d'ordre 2). i étant le point courant, ne peut intervenir dans la partie gauche à affecter que des termes en [i] ; de même dans la partie droite à calculer, ne peuvent intervenir des termes en [i+1] non encore connus.

On peut omettre du côté gauche [i] : z=x[i]+x[i-1] est équivalent à z[i]=x[i]+x[i-1]

La boucle "for i := 1 to N-1 do begin … end;" qui est sous-entendue s'étend de la première ligne contenant un terme du type z[i] jusqu'à la dernière ligne du même type.

On peut écrire explicitement la boucle mais c'est juste pour faire “ joli ” : le memo expressions (i.e. expressions des diverses grandeurs) n'est pas un memo programme. Seuls [0], [1], [2], ou [i] sont possibles du côté gauche (grandeur à affecter). Le symbole = signifie affecter (:= du Pascal). Tout ceci est à taper directement dans le mémo "expressions" (ne pas utiliser le bouton Y+ pour créer v ou y).

Exemples :

´Chute ; y étant l'axe vertical orienté vers le haut

g=-9.81_m/s2 => g=-9.81 m/s²

´t est rempli automatiquement de manière régulière

Δt=t[1]-t[0]_s

´Initialisation

y[0]=0_m => y[0]=0 m

v[0]=0_m/s => v[0]=0 m/s

´sous-entendu ou explicite

´for i := 1 to N-1 do begin

v[i]=v[i-1]+g*Δt_m/s

y[i]=y[i-1]+v[i-1]*Δt_m

´sous-entendu ou explicite

´end;

yth=y[0]+v[0]*t+g*t*t/2_m

Remarque (méthode de Heun) : on peut prendre

y[i]=y[i-1]+(v[i-1]+v[i])*Δt/2
au lieu de
y[i]=y[i-1]+v[i-1]*Δt


w0=1_rad/s

Δt=t[1]-t[0]_s

´Initialisation

y[0]=1_m => y[0]=1 m

v[0]=0_m/s => v[0]=0 m/s

´Prédéfinition de y (forward) car utilisée par le calcul de la vitesse v

y=

´for i := 1 to N-1 do begin

v[i]=v[i-1]-sqr(w0)*y[i-1]*Δt

y[i]=y[i-1]+v[i-1]*Δt_m

´end;

yth=cos(w0*t)