6

Sayısal bir fizikçiyim ve topluluğumda, [0.5, 0.5, 0.5]'da bir merkez ve 1 normalleştirilmiş uzunluğu olan bir 3D simülasyon kutusu kullanan bazı simülasyon kodları gördüm (böylece kutu koordinatları 0. - 1.). Bu kutuda birçok fiziksel hesaplamalar yapılır ve genellikle mümkün olan en iyi hassasiyet gereklidir.[0,5, 0,5, 0,5] 'de bir kutu boyutunu 1 olan bir simülasyonu merkezlemek bir bozukluk mu?

Böyle bir şey yapmanın bir kusur olarak görülebileceğini düşünüyorum, ancak bunun onayını almak istiyorum. Bunun bir kusur olduğunu düşünmeye eğilimliyim, çünkü 0. civarında daha hassas bir hassasiyetimiz olduğu için, sayısal doğruluk bütün kutuda iyi dengelenmiyor.

böyle bir kutu olduğunu düşünüyorum iyi bir denge sağlamak için: bir kutunun merkezi etrafında simetrik doğruluk istiyorsa

  • (-0.5 den 0.5 olacak) 0. etrafında edilmelidir
  • gerektiği bir tüm kutu içinde bir yarı-homojen doğruluğu istiyorsa (1. den 2. giderek) 1.5 merkezleşmiştir

Doğru mu, yanlış mıyım?

+0

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

+4

Etki alanı bu şekilde sınırlıysa, ** sabit nokta ** aritmetiği daha uygun olabilir. FP'de [1.0-2.0] etki alanını kullanarak yalnızca 32 bit'ten 23'ü veya 64'ünden 53'ü (IEEE754'ü varsayarak) kullanır. – MSalters

+0

Sabit noktaya katılıyorum. Bu 32 bit veya 64 bit tamsayı kullanılarak yapılırsa, muhtemelen daha fazla performanslıdır. Ve doğruluk tüm aralıkta eşittir. –

cevap

7

Siz haklısınız.

1.0'dan 2.0'a kadar olan kesinlik, sabit nokta kullandığınız gibi, yüzey boyunca eşit olacaktır.

-0,5'ten 0,5'e kadar olan hassasiyet, merkez noktasının etrafında en yüksek ve kenarların daha az (ama yine de oldukça iyi) olacaktır.

0,0 ile 1,0 arasındaki hassasiyet, (0.0, 0.0) köşede en yüksek ve (1.0, 1.0) köşede en alçak olacak, bu yüzden biraz eşit olmayan bir şekilde davranacaktır.

+0

Yuvarlama hataları nedeniyle yalnızca yüzdürmenin tam olarak bilen biri olmadığından, doğrunun neden diğerlerinden daha yüksek olduğunu açıklayabilir misiniz? Ayrıca, doğruluk sadece 0'dan daha fazla düşüyor mu? –

+0

Kayan nokta sayıları üç parça sabit uzunluğa sahip olduğundan: işaret-bit, üs ve mantis. 'sayı = işaret (+/- 1) * mantis * 2 ** üs. (Ancak bu oldukça doğru değil. Arama ve daha doğru cevaplar bulacaksınız) – Deduplicator

+0

http://steve.hollasch.net/cgindex/coding/ieeefloat.html Gerçekten meraklıysanız ve matematikten hoşlanıyorsanız. – StilesCrisis