計算機実験
精度について
2007/12/20  

シミュレーションの精度を確認しておこう。

このシミュレーションでは物体の衝突が中心だが、1回の衝突で、最大1ステップの移動量だけの誤差が生じている。 つまり、100回衝突すれば、最大100ステップ分の誤差が累積する。 特に、3個以上の物体が同時に衝突した場合、まず1と2を処理し、次に2と3を処理する、といった手順を踏む。 試しに、隔壁に対して左右から同時にボールをぶつけてみれば、衝突後のボールの挙動は左右で全く対称にはならない。

振動子が登場するシミュレーション5以降では、振動子の運動をルンゲ・クッタ法によって積算している。 断熱条件下では、シミュレーション全体でのエネルギーは保存するはずだ。 シミュレーション7および8について、全エネルギーを表示してみた。 その結果、エネルギーについては(転送回数が3000回に達するまでの全シミュレーション期間で)最大±10%の累積誤差があることがわかった。

10%もの誤差が生じたなら、決して精緻なシミュレーションとは言えない。 ただ、上の結果から±10%の誤差を差し引いたとしてもなお、主たる傾向は読み取れる。 90点の粗いシミュレーションではあるが、誤差に埋もれた全くのでたらめではないようだ。

もし正の転送と負の転送が全くランダムに行われたとすると、結果はどのようになるだろうか? いわゆるランダムウォークであれば、結果は正規分布を成し、偏差はステップ数のRootとなることが知られている。 シミュレーション結果がランダムかどうか判断するには、ランダムウォークの偏差を超えているかどうかが1つの目安となる。 一般に使われている統計的に有意といった基準はさらに高く、例えば95%=2σ といった値を基準としている。

判定基準: σ = Root(試行回数) x 1.1
・試行回数が1000回であれば、Root(1000) x 1.1 = 35 回以上が目安
・試行回数が3000回であれば、Root(3000) x 1.1 = 60 回以上が目安

有意基準: 2σ = 上の判定基準の2倍
・試行回数が1000回であれば、 70 回以上が有意
・試行回数が3000回であれば、120 回以上が有意

ページ先頭に戻る▲