スポンサーリンク

【応用情報技術者試験】コンピュータ科学基礎理論を学ぼう!     ~第4章~計算誤差

浮動小数点数の計算誤差は、有限のビット数で実数を近似表現する際に生じ、主な種類として、表現しきれない端数を処理する丸め誤差、絶対値の差が大きい和・差で小数が無視される情報落ち、近似値同士の引き算で有効桁が減る桁落ち、計算を途中で止める打切り誤差があります。また、オーバーフローも計算誤差の一種です。

計算誤差を表にまとめてみました。

誤差内容
丸め誤差コンピュータが実数や小数を有限桁の2進数で表現・計算する際、扱える桁数を超えた端数を「四捨五入」「切り捨て」「切り上げ」で処理することで生じる本来の値とのズレのことです。
情報落ちコンピュータの浮動小数点演算で、絶対値が極端に異なる2つの数値を加減算する際、小さい値の情報が切り捨てられて結果に反映されない誤差のことです。
桁落ちコンピュータの浮動小数点演算において、ほぼ等しい2つの数値の減算を行う際、有効数字(有効桁)が大幅に減少する計算誤差のことです。
打切り誤差コンピュータの数値計算において、無限級数や繰り返し計算(収束計算)を有限の段階で止めることによって生じる、真の値との間の差のことです。
オーバーフロー計算結果がコンピュータのデータ型やメモリで扱える数値の最大上限を超えてしまい、正しい値が表現・保存できなくなる現象です。

情報落ち

情報落ちは、コンピュータの浮動小数点演算で、絶対値が極端に異なる2つの数値を加減算する際、小さい値の情報が切り捨てられて結果に反映されない誤差のこと。有効桁数に制限があるため、大きな桁に合わせて小さな値の桁が無視される。改善には、小さい順に加算するなどの工夫が必要である。 

情報落ちのポイントと対策

  • 発生要因: 非常に大きい数値(例: 108)と非常に小さい数値(例:0.0001 )の計算。
  • 現象: 小さい方の数値の精度が不足し、計算結果が大きな値のみになる。
  • 対策: 計算順序を変え、小さな値同士を先に加算してから大きな値を足す(小さい順に足す)。
  • 類似用語: 有効桁が減る「桁落ち」や、計算途中で打ち切る「打ち切り誤差」とは区別される。 

例として、4桁の浮動小数点数で 1234 + 0.00012 を計算する場合、

結果は 1234 となり、0.0012 が無視される現象を指す。 

桁落ち

桁落ちは、コンピュータの浮動小数点演算において、ほぼ等しい2つの数値の減算を行う際、有効数字(有効桁)が大幅に減少する計算誤差のこと。上位の桁が相殺され、結果の精度が落ちて大きな誤差を生む。回避策として、計算式の変形(例:√の和による分母分子の有理化)や高精度計算の利用がある。 

桁落ちの詳細な解説

  • 現象: 有効桁数が4桁の小数 0.1234 – 0.1233 を計算すると 0.0001 となり、結果の有効数字は1桁になるように、計算途中で精度が失われる。
  • 発生要因: 非常に近い値同士の引き算、あるいは符号が異なる(ほぼ等しい)値の加算で発生する。
  • 影響: 計算途中で桁落ちが発生すると、その後の計算結果に大きな誤差が累積される。
  • 例: 10.0001 – 10.0000のような計算。
  • 情報落ちとの違い: 桁落ちは「近い数同士の減算」、情報落ちは「大きな数と小さな数の加減算」で発生する。
  • 対策:
    • 計算式の工夫:似た数値の引き算を避ける変形を行う。
    • データ型:より精度の高いデータ型(double型など)を利用する。 

桁落ちは、数値計算、特に科学技術計算において精度を保つために注意すべき重要な演算誤差の一つである。 

コメント