next up previous
: 情報落ち(誤差) : 計算機の浮動小数点システムによる誤差 : 丸め誤差

浮動小数点システムの精度

浮動小数点システムの精度は、実数を表すときの最大相対誤差 $ \epsilon_{mach}$

$\displaystyle \left\vert \frac{x_R-x}{x} \right\vert \le \epsilon_{mach}$ (3)

で特徴付けられる。この $ \epsilon_{mach}$ のことをマシンイプシロンという。 精度の桁数は $ \epsilon_{mach}$ を(1)式に用いて

$\displaystyle \log_{10} \left( \frac{1}{\epsilon_{mach}} \right)$ (4)

と表される。

現在使用しているシステムのマシンイプシロンを知るには、計算機上で

$\displaystyle 1 + \left( \frac{1}{2} \right)^q \le 1$ (5)

となる最小の自然数$ q$ を求めれば良い。 そのとき、$ (1/2)^q$ つまり$ 2^{-q}$ がマシンイプシロンである。

$ \beta$$ p$ 桁の浮動小数点数システムにおける $ \epsilon_{mach}$ は、 「切り捨てによる丸め」の場合 : $ \epsilon_{mach} = \beta^{1-p}$ であり、 「最も近い浮動小数点数への丸め」の場合 : $ \epsilon_{mach} = \beta^{1-p}/2$ となる。 IEEEシステムでは後者が標準で、 float(単精度実数型)の場合、仮数部が24ビットであるから $ \epsilon_{mach} = 2^{1-24}/2 = 2^{-24} \simeq 10^{-7}$ となり、 double(倍精度実数型)の場合、仮数部が53ビットであるから $ \epsilon_{mach} = 2^{1-53}/2 = 2^{-53} \simeq 10^{-16}$ となる。 それぞれの精度の桁数は(4)式を用いると約7桁(float型)および、約16桁(double型)であることが分かる。


上記の「丸め」に起因し、算術計算において簡単に起こりうる誤差(広義の「丸め誤差」)を以下に示す。 これらの誤差は計算法を工夫することにより回避出来る場合がある。


ykagawa 平成20年7月29日