桁落ち

桁落ち

執筆済 数学数値計算

近い値どうしを引き算すると、有効桁数が激減する現象。 catastrophic cancellation。

#

1.234567891.23456700(有効 9 桁)を引くと 0.00000089。 有効桁は 2 桁しか残らない。 上位の一致していた桁が消え、下位の誤差だけが残る。

二次方程式での典型例#

x=b+b24ac2a

b>04acb2 のとき、bb24ac が近くなり桁落ちする。

対処は式を変形すること。

x=2cbb24ac

数学的に同じ式でも、数値的には別物。

数値微分での桁落ち#

f(x)f(x+h)f(x)h

h を小さくすると分子で桁落ちが起きる。 打ち切り誤差と丸め誤差の綱引きの正体がこれ。

対策#

  • 式を変形して引き算を避ける
  • log(1+x) には log1pex1 には expm1 を使う
  • 分散の計算に 𝔼[X2]μ2 ではなく Welford の逐次法を使う

参考文献#

ノート一覧を閉じる