Re: Problema con una simulazione
> v(t+dt)=v(t)-(k/m)*x(t)*dt
>
> x(t+dt)=x(t)+v(t)*dt
prova ad aggiungere il termine di forza anche nell' equazione per x
(algoritmo di Eulero):
a(t) = -(k/m)*x(t)
x(t+dt)=x(t)+v(t)*dt+0.5*a(t)*dt**2
Ancora meglio e'di riorganizzare il calcolo secondo il seguente
algoritmo (alg. di Verlet con le velocita', valido solo per forze non
dipendenti dalla velocita'):
x(t+dt)=x(t)+v(t)*dt+0.5*a(t)*dt**2
v(t+dt)=v(t)+0.5*(a(t)+a(t+dt))*dt
che puo' essere implementato come:
dati x = x(0) e v=v(0)
calcola a = a(0) = -k/m * x(0)
per n volte ripeti:
x = x + v*dt + 0.5*a*dt**2
v = v + 0.5*a*dt ! modifica parziale della v.
a = -(k/m)*x
v = v + 0.5*a*dt ! questa e'la velocita' all'istante consiterato
! qui puoi far scrivere x e v, nonche' calcolare energia
cinetica e potenziale per verificare quanto bene si conserva l' energia
meccanica ad ogni step
ripeti
Giorgio
Received on Tue Apr 19 2005 - 12:24:21 CEST
This archive was generated by hypermail 2.3.0
: Thu Nov 21 2024 - 05:10:21 CET