誤差の基礎

この章の目標

数値計算における誤差の種類(絶対誤差、相対誤差、丸め誤差、打ち切り誤差)を理解し、有効数字と誤差伝播の基本法則を学ぶ。

前提知識

  • 四則演算の基礎
  • 小数・分数の概念
目次

§1 なぜ誤差が生じるのか

数値計算では、様々な原因で「誤差」が生じる。誤差を理解し、管理することは数値計算の基本である。

誤差の主な原因

  • 無限小数を有限桁で表現する(丸め誤差)
  • 無限の計算を有限回で打ち切る(打ち切り誤差)
  • 測定値や入力データの不正確さ(入力誤差)

§2 絶対誤差と相対誤差

定義:絶対誤差

真の値を $x$、近似値を $\tilde{x}$ とするとき、絶対誤差

$$E = |x - \tilde{x}|$$

定義:相対誤差

真の値 $x \neq 0$ に対する相対誤差

$$E_r = \dfrac{|x - \tilde{x}|}{|x|}$$

パーセントで表すこともある:$E_r \times 100\%$

例:円周率の近似

$\pi = 3.14159265...$ を $\tilde{\pi} = 3.14$ で近似すると:

  • 絶対誤差:$|3.14159... - 3.14| \approx 0.00159$
  • 相対誤差:$\dfrac{0.00159}{3.14159} \approx 0.00051 = 0.051\%$

例:大きな数と小さな数

ケース1:$x = 1000000$、$\tilde{x} = 1000001$

  • 絶対誤差:$1$
  • 相対誤差:$10^{-6} = 0.0001\%$

ケース2:$x = 0.001$、$\tilde{x} = 0.002$

  • 絶対誤差:$0.001$
  • 相対誤差:$1 = 100\%$

絶対誤差は小さくても、相対誤差は大きい場合がある。

ケース1: 大きな数 x = 10⁶ x̃ = 10⁶+1 相対誤差: 0.0001% ✓ ケース2: 小さな数 x = 0.001 x̃ = 0.002 差 = 0.001 相対誤差: 100% ✗

§3 丸め誤差

丸め誤差(rounding error)は、数値を有限の桁数で表現するときに生じる誤差である。

例:小数の丸め

$\dfrac{1}{3} = 0.33333...$ を4桁で表すと $0.3333$

絶対誤差:$\dfrac{1}{3} - 0.3333 = 0.00003...$

丸めの方法

  • 切り捨て:$3.146 \to 3.14$
  • 切り上げ:$3.141 \to 3.15$
  • 四捨五入:$3.145 \to 3.15$、$3.144 \to 3.14$
  • 偶数丸め:$3.145 \to 3.14$、$3.155 \to 3.16$(銀行丸め)

コンピュータは通常、2進数で計算するため、10進数の小数でも丸め誤差が生じることがある。

例:$0.1$ の2進数表現

10進数の $0.1$ は、2進数では無限小数になる:

$$0.1_{10} = 0.0001100110011..._{2}$$

そのため、コンピュータでは $0.1$ を正確に表現できず、小さな誤差が生じる。

§4 打ち切り誤差

打ち切り誤差(truncation error)は、無限の計算を有限回で打ち切ることで生じる誤差である。

例:$e$ のテイラー展開

$e$ は無限級数で表される:

$$e = \displaystyle\sum_{n=0}^{\infty} \dfrac{1}{n!} = 1 + 1 + \dfrac{1}{2} + \dfrac{1}{6} + \dfrac{1}{24} + \cdots$$

最初の5項で打ち切ると:

$$e \approx 1 + 1 + 0.5 + 0.1667 + 0.0417 = 2.7083$$

真の値 $e = 2.71828...$ との差が打ち切り誤差である。

例:微分の近似

導関数の定義 $\displaystyle f'(x) = \lim_{h \to 0} \dfrac{f(x+h) - f(x)}{h}$ を有限の $h$ で近似すると:

$$f'(x) \approx \dfrac{f(x+h) - f(x)}{h}$$

テイラー展開を $O(h)$ で打ち切ったことによる誤差が残る (打ち切り誤差)。

ただし $h$ を極端に小さくすると、分子 $f(x+h) - f(x)$ で桁落ち (丸め誤差) が発生する。打ち切り誤差は $h$ に比例して減るが丸め誤差は $h$ に反比例して増えるため、両者がバランスする最適な $h$ が存在する

§5 誤差の伝播

計算を繰り返すと、誤差が蓄積・拡大することがある。

例:足し算での誤差伝播

$\tilde{x} = x + \epsilon_1$、$\tilde{y} = y + \epsilon_2$ のとき

$$\tilde{x} + \tilde{y} = (x + y) + (\epsilon_1 + \epsilon_2)$$

誤差は単純に足し合わされる。

例:掛け算での誤差伝播

相対誤差で表すと $\tilde{x} = x(1+\epsilon_1)$、$\tilde{y} = y(1+\epsilon_2)$ のとき

$$\tilde{x} \cdot \tilde{y} = xy\,(1 + \epsilon_1 + \epsilon_2 + \epsilon_1 \epsilon_2) \approx xy\,(1 + \epsilon_1 + \epsilon_2)$$

$\epsilon_1 \epsilon_2$ は二次の微小量として無視すると、相対誤差はほぼ足し合わされる。割り算も同様の振る舞いをする。

例:引き算での誤差拡大

$x \approx y$ のとき、$x - y$ の相対誤差は非常に大きくなる。

例:$x = 1.0001$、$y = 1.0000$(各4桁精度)

$x - y = 0.0001$ であるが、有効桁数は1桁に減少。

これを桁落ち(cancellation)という。

§6 有効数字

有効数字は、測定や計算で信頼できる桁数のことである。

例:有効数字の数え方

  • $123.45$ → 有効数字5桁
  • $0.00123$ → 有効数字3桁(先頭のゼロは数えない)
  • $1.23 \times 10^5$ → 有効数字3桁

有効数字と相対誤差の関係

$n$ 桁の有効数字を持つ数値の相対誤差は、おおよそ $10^{-n}$ のオーダーである。

§7 まとめ

  • 絶対誤差 $= |x - \tilde{x}|$、相対誤差 $= \dfrac{|x - \tilde{x}|}{|x|}$
  • 丸め誤差:有限桁での表現による誤差
  • 打ち切り誤差:無限の計算を有限回で止めることによる誤差
  • 誤差は計算を通じて伝播・拡大する可能性がある
  • 有効数字は信頼できる桁数を表す