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

From: PG <pasquale.galianni_at_le.infn.it>
Date: Fri, 10 Dec 2004 11:38:28 GMT

"Danguard" wrote:
> Ho pero' dei dubbi su quale tipo scegliere per i numeri reali: qualcuno
> che ha esperienza a riguardo, potrebbe per piacere illuminarmi se sia
> meglio usare double o float?

La scelta del tipo di variabili da utilizzare dipende da molti fattori.
Suppongo dall'e-mail precedente, che tu voglia fare una simulazione n-corpi.
In tal caso molto dipende dall'algoritmo che utilizzi e dal numero di corpi
che
fanno parte del sistema simulato. Se ad esempio, utilizzi per la risoluzione
approssimata delle equazioni del moto, il metodo di Eulero, allora avrai
un errore dello stesso ordine di grandezza dello step temporale (o(h)).
Dunque, se l'errore dovuto al tuo metodo di calcolo � superiore all'errore
di arrotondamento che si commette utilizzando i float, non c'� problema.
Ad esempio, se utilizzi uno step temporale di h=0.0001 ad esempio, l'errore
di arrotondamento
commesso utilizzando i float viene totalmente assorbito dall'errore
intrinseco dell'algoritmo.
Se invece (per assurdo -perche' in realt� non � conveniente-) utilizzi un
Runge-Kutta del secondo
ordine avrai che l'errore � se non mi sbaglio un o(h^2) quindi utilizzando
lo step temporale precedente
avresti che gli errori di troncamento non sono pi� trascurabili rispetto
all'errore intrinseco dell'algoritmo.
Insomma per dirla breve, devi verificare se l'errore intrinseco dovuto al
metodo di integrazione utilizzato
� paragonabile all'errore di arrotondamento dovuto al formato float. Se si
ti conviene passare ai double,
altrimenti usa i float che occupano meno memoria e sono pi� veloci.
A presto!

--
Pasquale Galianni
Received on Fri Dec 10 2004 - 12:38:28 CET

This archive was generated by hypermail 2.3.0 : Fri Nov 08 2024 - 05:10:22 CET