桁落ち
近い値どうしを引き算すると、有効桁数が激減する現象。 catastrophic cancellation。
例#
と (有効 9 桁)を引くと 。 有効桁は 2 桁しか残らない。 上位の一致していた桁が消え、下位の誤差だけが残る。
二次方程式での典型例#
で のとき、 と が近くなり桁落ちする。
対処は式を変形すること。
数学的に同じ式でも、数値的には別物。
数値微分での桁落ち#
を小さくすると分子で桁落ちが起きる。 打ち切り誤差と丸め誤差の綱引きの正体がこれ。
対策#
- 式を変形して引き算を避ける
- には
log1p、 にはexpm1を使う - 分散の計算に ではなく Welford の逐次法を使う
参考文献#
- David Goldberg. What Every Computer Scientist Should Know About Floating-Point Arithmetic. ACM Computing Surveys 23(1), 1991. https://doi.org/10.1145/103162.103163
- Nicholas J. Higham. Accuracy and Stability of Numerical Algorithms, 2nd ed. SIAM, 2002. https://doi.org/10.1137/1.9780898718027