【基礎理論】コンピュータの「細かさ」の限界!「計算機イプシロン」|情報処理問題1000本ノック
理論上は無限に続く実数も、コンピュータの中では有限のビット数で表さなければなりません。数値表現の精度や丸め誤差の基準となる「計算機イプシロン」を攻略しましょう。
1. 【 問題 】:浮動小数点数の精度表現
【 問題 】 コンピュータにおける浮動小数点数の精度を表す指標の一つで、「1 より大きい最小の浮動小数点数」と「1」との差(隙間)として定義される値を何と呼ぶでしょうか?
① 丸め誤差 (Rounding Error)
② 限界誤差 (Limit Error)
③ 計算機イプシロン (Machine Epsilon)
④ アンダーフロー (Underflow)
2. 正解:
正解: ③ 計算機イプシロン(Machine Epsilon / 機械イプシロン)
3. 解説:「1のすぐ隣」にある数字との距離
計算機イプシロン($\epsilon$:イプシロン)は、そのコンピュータ(あるいはデータ型)が表現できる「値の細かさ(識別可能な最小の差)」の基準となる値です。
・浮動小数点数(IEEE 754規格など)は、内部的に「$1.XXXX \times 2^{n}$」という形でデータを記憶しています(正規化)。
・この仕組み上、仮数部(小数部分)の最下位ビットが「1」変化したときの値の刻み幅は、基準となる「1」のすぐ隣が最もシンプルに表せます。
■ 具体的な数値の例(IEEE 754 倍精度 64bitの場合)
・1の次に大きい数:$1.000000000000000222...$
・1との差(計算機イプシロン):$2^{-52}$(約 $2.22 \times 10^{-16}$)
→ つまり、これより小さな変化(例:$1$ に $10^{-17}$ を足すなど)をさせようとしても、コンピュータは「変化なし(ただの1)」と見なしてしまい、区別できません。
★ 計算機イプシロンよりも極端に小さな数値を、大きな数値に対して加減算すると、小さな数値が計算結果にまったく反映されずに消えてしまう現象が発生します。これを「情報落ち」と呼びます。
1. 理解のコツ: デジタル時計の「1秒」をイメージしてください。1時00分00秒の次の瞬間は「1時00分01秒」です。この時計の世界では、1秒未満の隙間(0.5秒など)は存在しないものとして扱われます。この「1の次にある最小のステップとの隙間の幅」が、浮動小数点数における計算機イプシロンです。
2. 試験対策の視点: 「1より大きい最小の浮動小数点数」「1との差」という一文が出たら計算機イプシロン(あるいはマシーン・イプシロン)の一択です。数値計算プログラミングのバグを防ぐため、あるいは「情報落ち」などの数値演算誤差の根本原因を理解するための重要ワードとして出題されます。
4. まとめ
「1と、その次に大きい浮動小数点数との差(識別できる限界の細かさ)」。これが計算機イプシロンです。コンピュータが万能ではなく、デジタル特有の「数値の隙間」を持っていることを示す象徴的な概念です。