演算回数と丸め誤差

1. 演算回数と全体の丸め誤差 #

$$ \begin{align} X’ &= X \pm d \\ d &= \varepsilon \sqrt{N} \end{align} $$

  • 機械精度 $\varepsilon$
  • 演算回数 $N$
  • 真の値 $X$
  • 演算結果 $X'$
  • 計算の不確かさ $d$

2. 説明 #

コンピュータを用いて、演算を繰り返し行うことを考えます。 ここでいう"演算"は例えば10進数で考えたときの四則演算です。

コンピュータでは、変数は全て0もしくは1のビットで表現されていますので、どのような値でもコンピュータで利用される場合には有限の値に丸められます。 例えば円周率も無限桁が考慮される訳ではなく、有限の桁数(例えば10進数で16桁程度)で丸められます。

そのため、2進数で完全に表せられない数を2進数で表現する場合、値を丸めなければなりません。 この丸めの影響は最後のビットに影響し、丸め方は何らかのルールに従って決められます。

もし、最後のビットが無相関によって決まると考えると、その誤差は真値から機械精度分だけずれることになります。

つまり、機械精度$\varepsilon$を持つ計算機で、演算を$N$回実施すると、その計算結果$X’$と真値$X$に差$d$が生じるということを意味します。 差$d$は演算全体の丸め誤差であり、これはランダムウォークで考えることができるので1、計算結果$X’$は

$$ \begin{align} X’ &= X \pm d \\ d &= \varepsilon \sqrt{N} \end{align} $$

というように不確かさをもった結果しか得られないと考えられます(1σの範囲)。

例えば、機械精度が$\varepsilon=1\times 10^{-16}$, 演算を$10000$回実施して最終的な結果$X’$を得たとすると、結果の精度は$X\pm 1\times 10^{-14}$しか持たない、ということです。 これは丸め誤差による影響だけですので、本来は別の打切り誤差の影響などをこれに追加して考えなければなりません。