两个功能,结果不同。怀疑fortran功能

时间:2013-02-21 04:24:27

标签: fortran precision

我正在进行蒙特卡罗(MC)模拟。我有办法从头开始计算粒子的能量,并且只计算旧状态和新状态之间的差异。为了测试对我所做的代码的修改,我通过双向计算了一步之后的能量,并得到了不同的结果。数量很低(10 ^ -5的规模,而总能量为10 ^ 8),但我预计它会更低。我怀疑这是一个强暴问题有三个原因

  1. 查看所有互动情况,我认为两种方式之间没有任何区别

  2. 值重演

  3. 例如,许多值是2的负幂(2 ^ -14)。

  4. 我很感激你的想法。

    所述变量,以及计算中使用的大多数变量(如果不是全部)都是双精度类型。编译器是gnu f95。

1 个答案:

答案 0 :(得分:3)

双精度有大约15到17个十进制数字。你的两个计算差异大约是10 ^ 13的一部分。改变真实数字不会改变答案的计算顺序可以改变有限精度算术的答案。根据计算的计算次数和算法的详细信息,此顺序的差异可能是合理的。 Fortran编译器中的错误似乎不太可能......如果您仍然坚信,请尝试使用其他编译器。

你的意思是你在使用GNU gfortran吗?如果是这样,哪个版本?