見出し画像

[AP]計算誤差

丸め誤差(rounding error)

数値に対して、切り上げ・切り捨てなどの単数処理を行った際に生じる誤差。

1.23456 に対して、小数点第二位で四捨五入を行うと、

1.23456 ≒ 1.2

となる。この時、切り捨てられた0.03456が誤差となる。

打ち切り誤差(trancation error)

無限級数(0.333333…..など)が答えになる計算において、計算を途中で止めてしまうことによって発生する誤差。

1÷3 の計算において、解は0.333333…..の無限級数になる。これをデータに落とし込む際、メモリ容量などの都合上途中の桁で端数処理しなければならない。
そのため、端数処理された桁以降のデータは誤差となる。

情報落ち(infomation loss)

浮動小数点の計算など、精度に限りがある条件下で、絶対値の大きい値と小さい値を加減算したとき、小さいほうが無視されてしまうことによって起きる誤差。

有効桁数を10桁とする。10^10 + 0.1 の計算において、解は

10^10 + 0.01 = 10,000,000,000.1

となる。しかし、データ上では上十桁しか表せないため、

10,000,000,00/0.000 (/までが有効桁)

となり、0.01が誤差となる。

桁落ち(cancellation)

互いに丸め誤差を持つ、ほとんど等しい値の減算において、有効桁数が減少することによって起きる誤差。

平方根の計算などがわかりやすい。

√1000 - √999 = 0.031622781… 

とする。
これを有効数字8桁で計算する際、以下のようになる。

1.√1000, √999を有効数字8桁で丸める

√1000 ≒ 31.638584
√999   ≒ 31.606961

2.減算する

√1000 - √999 = 31.638584 - 31.606961 = 0.031623

結果として有効桁は5桁まで落ち、小数点第六位以降の桁は誤差として消えているのがわかる。

参照


いいなと思ったら応援しよう!