6

Sono un fisico numerico e nella mia comunità ho visto alcuni codici di simulazione che utilizzano una casella di simulazione 3D con un centro in [0.5, 0.5, 0.5] e una lunghezza normalizzata di 1 (quindi le coordinate della casella vanno da 0. a 1.). In questa scatola vengono eseguiti molti calcoli fisici e generalmente è richiesta la massima precisione possibile.È un difetto centrare una simulazione in [0.5, 0.5, 0.5] con una dimensione di casella di 1?

Penso che fare una cosa del genere possa essere vista come un difetto, ma mi piacerebbe avere la conferma di ciò. Tendo a pensare che questo sia un difetto, perché dato che abbiamo più precisione numerica vicino allo 0., la precisione numerica non è ben bilanciata nell'intera scatola.

avere un buon equilibrio penso che un tale dialogo:

  • deve essere centrata attorno 0. (andando -0.5-0.5) se si vuole una precisione simmetrica intorno al centro area
  • dovrebbe essere centrato intorno 1.5 (andando 1.-2.) se si vuole una precisione quasi-omogenea in tutta la scatola

Sono corretto o completamente sbagliato?

+0

http://scicomp.stackexchange.com/? – djechlin

+4

Se il dominio è limitato in questo modo, ** l'aritmetica ** del punto fisso ** può essere più appropriata. L'utilizzo del dominio [1.0-2.0] in FP utilizzerà solo 23 su 32 bit o 53 su 64 (supponendo IEEE754). – MSalters

+0

Sono d'accordo con il punto fisso. Se questo viene fatto usando numeri interi a 32 bit o 64 bit, probabilmente è anche più performante. E la precisione è uniforme su tutta la gamma. –

risposta

7

Sei corretto.

La precisione da 1,0 a 2,0 sarà uniforme sulla superficie, come se si stesse utilizzando il punto fisso.

La precisione da -0,5 a 0,5 sarà più alta intorno al punto centrale e inferiore vicino ai bordi (ma comunque abbastanza buona).

La precisione da 0.0 a 1.0 sarà più alta attorno all'angolo (0.0, 0.0) e più bassa intorno all'angolo (1.0, 1.0), quindi si comporterà in modo leggermente non uniforme.

+0

Come qualcuno che sa solo che float non è completamente accurato a causa di errori di arrotondamento, potresti spiegare perché l'accuratezza è più alta intorno ad alcuni numeri rispetto ad altri? Inoltre, la precisione diminuisce ulteriormente man mano che ci si allontana da 0? –

+0

Poiché i numeri in virgola mobile hanno tre parti di lunghezza fissa: sign-bit, esponente e mantissa. 'numero = segno (+/- 1) * mantissa * 2 ** esponente. (Questo non è ancora abbastanza accurato. Cerca e troverai risposte più accurate) – Deduplicator

+0

http://steve.hollasch.net/cgindex/coding/ieeefloat.html Se sei veramente curioso e ti piace la matematica. – StilesCrisis

Problemi correlati