数値解析、誤差、絶対誤差、相対誤差、浮動小数点、丸め誤差、情報落ち誤差、桁落ち誤差、打切り誤差
統計計算や数値解析など科学技術計算の分野では、誤差論という分野があるほど、誤差が大きな問題になります。
誤差とは、本当の値(理論値)と近似値(計算値、測定値)との違いのことですが、誤差が大きいか小さいかを評価する尺度は2つあります。例えば理論値が10mの棒の計算値が11mだとしたとき、
絶対誤差=測定値-理論値=11-10=1m
相対誤差=(測定値-理論値)/理論値=(11-10)/10=0.1
で定義されます。
絶対誤差は計算が単純で誤差がmになるので物理的評価が容易です。ところが棒の長さが20mならば、1mの絶対誤差は相対誤差では0.05になります。そのため、棒の長さがまちまちなときは相対誤差のほうが適切な評価尺度になることがあります。
自然界のデータは連続的な数値が多くあります。それをコンピュータで扱うときは、浮動小数点数で表現しますが、浮動小数点数は有限のビット数ですので、本当の数値ではなく近似値ですから、誤差を含んでいます。さらに、浮動小数点数同士の計算での誤差が生じます。
代表的な誤差には、丸め誤差、情報落ち誤差、桁落ち誤差、打切り誤差などがあります。
固定小数点型では,取扱える数値が限定されますし,非常に大きな数や小さい数を取扱うことができませんので,科学技術計算などでは困ります。このような数値を表現するには,浮動小数点型を用います。
浮動小数点型では,0.6022×1024のように,数値をR=M×BEという形式で表現します。ここでMを仮数,Bを底,Eを指数といいます。内部表現では,Mは0~1の16進数,Mは16,Eは16進数にした値に64を加えるなど,面倒な変換が必要になりますが,それを右図のような形式で表現します。
この場合は,0000000のときは-64ですので10-77,1111111のときは63で1076となるので,浮動小数点型で取扱える数は,
-1076~-10-77,0,10-77~1076
の範囲になります。絶対値が1076を超えるとオーバーフロー,絶対値が10-77より小さいとアンダーフローとなり,取扱うことができません。
また(後述のように),10進小数点数を2進数に変換すると丸め誤差を生じます。2進数の24桁は10進数の7桁程度ですので,有効数字は7桁程度になります。たとえば,3.1415926535などの値を入力しても,コンピュータ内部ではそれを正確に受け取ることはできないのです。
数値解析のような浮動小数点演算を行うアルゴリズムでは、前述した計算量を小さくするとともに、このような誤差の累積が演算過程により増大しないように工夫することが重要です。また、その利用にあたっては、実用の観点から打切りの基準を考えること、εの値を考慮することが必要です。