盒子大小为1时,将模拟集中在[0.5,0.5,0.5]中是不是一个缺陷?

时间:2014-06-25 18:30:00

标签: c++ floating-point precision floating-accuracy numerical-methods

我是一名数字物理学家,我在社区中看到了一些使用3D模拟框的模拟代码,其中心位于[0.5, 0.5, 0.5],标准化长度为1(所以框坐标从0.1.)。在此框中,执行了大量物理计算,通常需要尽可能高的精度。

我认为做这样的事情可以被视为一种缺陷,但我希望得到确认。我倾向于认为这是一个缺陷,因为我们在0.附近有更多的数值精度,所以整个框中的数值精度并不均衡。

为了获得良好的平衡,我认为这样的方框:

  • 应该以{{1​​}}为中心(从0.-0.5),如果想要围绕框中心的对称精确度
  • 应该以{{1​​}}(从0.51.5)为中心,如果想要在整个方框中准确的同质性

我是对还是完全错了?

1 个答案:

答案 0 :(得分:7)

你是对的。

从表面到1.0到2.0的精度将是均匀的,就像使用固定点一样。

从-0.5到0.5的精度在中心点附近最高,在边缘附近较低(但仍然非常好)。

从0.0到1.0的精度在(0.0,0.0)角附近最高,在(1.0,1.0)角附近最低,因此它的行为会略微不均匀。