0

モンテカルロ (MC) シミュレーションを行っています。粒子のエネルギーをゼロから計算する方法と、古い状態と新しい状態の差だけを計算する方法があります。私が行ったコードの変更をテストするために、ステップ後のエネルギーを双方向で計算したところ、異なる結果が得られました。数値は低かった (10^-5 のスケールで、総エネルギーは 10^8 のスケール) が、私はそれがさらに低いと予想した. これがFortranの問題であると私が疑う3つの理由があります

  1. すべてのやり取りを見てみると、2 つの方法に違いは見られません。

  2. 値は繰り返されます

  3. たとえば、値の多くは 2 の負の累乗 (2^-14) です。

よろしくお願いします。

上記の変数、および計算で使用されるほとんどの変数 (すべてではない場合) は、倍精度型です。コンパイラは gnu f95 です。

4

1 に答える 1

3

倍精度の小数点以下の桁数は約15〜17桁です。2つの計算には、10^13の約1つの違いがあります。真の実数では答えが変わらない計算の順序を変更すると、有限精度の算術で答えが変わる可能性があります。行われた計算の数とアルゴリズムの詳細によっては、この順序の違いが考えられます。Fortranコンパイラのバグはありそうにないようです...確信がある場合は、別のコンパイラを試してください。

GNU gfortranを使用しているということですか?もしそうなら、どのバージョンですか?

于 2013-02-21T06:33:09.367 に答える