Re: problema dei tre corpi
Leonardo Kotelnikor wrote:
>
...
> Si il metodo di Runge-Kutta e' un metodo molto efficiente per risolvere
> equazioni differenziali con il calcolatore.
...
Vero in generale, pero' per problemi di dinamica ci si e' resi conto da
10/15 anni che i cosiddetti algoritmi simplettici offrono vantaggi non
trascurabili.
Il piu' semplice degli algoritmi simplettici e' quello che la comunita'
che fa simulazione in materia condensata chiama "Velocity Verlet"
Vale per forze non dipendenti dalla velocita' e si scrive in 2 righe:
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
dove a(t) e' l' accelerazione (forza / massa) al tempo t.
N.B. tra la prima e la seconda formula occorre ri-valutare le forze
nella nuova posizione a t+dt.
La generalizzazione per piu' gradi di liberta' e' diretta.
Il vantaggio di una formula simplettica e' che nonostante l' errore di
discretizzazione (dt finito), l' evoluzione resta hamiltoniana. In
soldoni significa che leggi di conservazione tipo momento lineare o
momento angolare continuano ad essre validi anche per la dinamica
discretizzata, ovvero sono realizzati "a precisione macchina" e non
dipendono da dt. P. es. con un integratore non simplettico, gli errori
di discretizzazione possono trasformare un' ellisse del problema di
Keplero in una curva che non chiude su se stessa.
Ovviamente anche per gli integratori simplettici la qualita' della
traiettoria dipende dalla scelta del time step (dt). In genere si prende
il dt grande abbastanza da permettere un' evoluzione ma non cosi' grande
da distruggere la conservazione dell' energia (l' energia del sistema
che si vuole simulare NON e' una quantita' conservata esattamente).
Tipicamente oscillazioni dell' energia attorno ad un valore costante
dell' ordine del 1% o 0.1% delle variazioni di energia potenziale
possono essere un buon punto di partenza.
Il tutto e' implementabile in un programma scritto in linguaggi di alto
livello (C,C++, fortran) senza particolari problemi.
Giorgio
Received on Wed Mar 06 2002 - 11:54:28 CET
This archive was generated by hypermail 2.3.0
: Wed Feb 05 2025 - 04:23:30 CET