誤差の基礎
この章の目標
数値計算における誤差の種類(絶対誤差、相対誤差、丸め誤差、打ち切り誤差)を理解し、有効数字と誤差伝播の基本法則を学ぶ。
前提知識
- 四則演算の基礎
- 小数・分数の概念
§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\%$
絶対誤差は小さくても、相対誤差は大きい場合がある。
§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|}$
- 丸め誤差:有限桁での表現による誤差
- 打ち切り誤差:無限の計算を有限回で止めることによる誤差
- 誤差は計算を通じて伝播・拡大する可能性がある
- 有効数字は信頼できる桁数を表す