Re: Simulazione fisica C++: float o double ?

From: Giorgio Pastore <pastgio_at_univ.trieste.it>
Date: Sat, 11 Dec 2004 22:47:06 GMT

Danguard wrote:

>...
>
>Volevo fare anche delle prove di moto di un proiettile, ipotizzando
>pero' la resistenaza dell'aria (quindi non piu' la banale parabola che
>si ha quanto non vi e' resistenza al moto).
>
>E poi volevo verificare alcuni teoremi di conservazione "in maniera
>empirica", vedendo anche la simulazione quanto si discosta dalle
>previsioni teoriche.
>
>Come integrazione (cioe': per risalire da a alla posizione) pensavo
>semplicemente di approssimare le derivata con un rapporto incrementale
>finito,...
>

Se vuoi integrare le e. del moto per un sistema conservativo ti
consiglio l' algoritmo di Verlet con le velocita'. E' semplicissimo:

dalle forze a t -> a(t)

x(t+dt) = x(t) + v(t) dt + a(t) dt^2 / 2 [1]
vaux(t+dt) = v(t) + a(t) dt/2

adesso si calcolano le forze a t+dt e quindi le accelerazioni, a(t+dt)
v(t+dt) = vaux(t+dt) + a(t+dt) dt/2
si avanza nel tempo e si riparte da [1].

E ha molti pregi nascosti. Per una derivazione dello stesso puoi dare
un' occhiata ad una pagina che ho preparato per il corso che tengo al
primo anno di fisica (
www-dft.ts.infn.it/~pastore/DIDA/fisica/MNF/vverlet/node1.html ).
La conservazione dell' energia dipende dall' ampiezza del passo di
integrazione. Ma se provi a vedere come si conserva il momento o la
quantita' di moto per un sistema isolato troverai una piacevole
sorpresa... che lo rende superiore ai vari Runge-Kutta.

Nel caso di forze dipendenti dalla velocita', il metodo si puo'
generalizzare solo se si tratta di forze lineari. Per dipendenze
diverse, meglio usare altro.

Giorgio
Received on Sat Dec 11 2004 - 23:47:06 CET

This archive was generated by hypermail 2.3.0 : Mon Feb 10 2025 - 04:23:40 CET