フリーキーズ | 独学プログラミング

桁落ちとは

最終更新日

桁落ちとは、有意差消失とも呼ばれ、数値計算において、ほぼ等しい2つの数値を引き算する際に、計算結果の精度が低下する現象のことです。そのため、その後の計算が不正確になったり、不安定になったりすることがある。この問題は、コンピュータが数字を表現する桁数(ビット数)が有限であることや、実数を扱う際に丸め誤差が発生する可能性があることから生じます。

定規を用いた例

有効数字の取り消しを理解するために、例えを用いて説明しましょう。センチメートルとミリメートルのマークがある定規で2つの長さを測っているとします。最初の長さは21.35cm、2番目の長さは21.33cmと測った。1つ目の長さから2つ目の長さを引くと、0.02cmになります。しかし、あなたの測定の小さな不正確さによって、本当の差は0.02cmより少し多いか少ないかもしれません。この結果の精度の低下は、数値計算で起こりうる有効桁数のキャンセルに似ています。

ほぼ等しい2つの数を引き算する例

123456.78と123456.76という数字を考えてみましょう。小さいほうの数字から大きいほうの数字を引くと、0.02になります。しかし、元の数字には有効数字が8桁あったのに、この結果には有効数字が1桁しかありません。このように有効数字がなくなることで、その結果を使ったその後の計算が不正確になることがあります。

数式での例

xの値が小さい場合(例えば、x = 0.0001)の式(1 - cos(x))/x^2の値を計算したいとします。cos(0.0001)の値は1に非常に近いので、1から引くと、有効桁数の少ない結果が得られます。これは式の最終結果に不正確さをもたらす可能性があり、特に有効桁数の損失がその後の除算演算で伝播する場合は注意が必要です。

まとめ

まとめると、有効数字のキャンセルとは、数値計算において、ほぼ等しい2つの数値を引き算する際に発生する現象で、結果の精度が低下することであります。そのため、その後の計算が不正確になったり、不安定になったりすることがあります。この問題は、コンピュータで数値を表現できる桁数が有限であることや、実数を扱う際に発生する丸め誤差のために発生します。