背景
ある2個の数値の一致桁数を評価するときに,両者の相対誤差の常用対数をとる。このため,Excel上ではLOG10関数を利用している。しかし,一致桁数云々を議論する前に,そもそも,この関数の精度が重要である。一方,CASIOの高精度計算サイト(50桁での計算が可能)にも,LOG関数という関数があり,常用対数を計算できる。
そこで,メタ議論になってしまうが,一致桁数評価ツールとしてのLOG10関数,LOG関数について,両者の結果を比較し,一致桁数を評価した。
検証環境
- OS: Windows 10 Pro(64bit)
- アプリケーション: Excel 2013(64bit)
- CPU: Core i7 2.4GHz
- RAM: 16GB
- 仮想メモリ: OFF
検証方法
以下の手順で検証した。- 相対誤差に基づいて一致桁数を評価するとき,相対誤差は概ね10^-16から10^+2までの範囲に収まる。そこで,この範囲の数値を等比的に分割して数列を作成する。10倍区間を100分割して得た等比数列の値をxとする。
- ExcelのLOG10関数を利用して,xの常用対数を計算する。
- CASIOの高精度計算サイトで,「桁数50桁」,「精度保証あり」でxの常用対数を計算する。
- ただし,この結果を適切にExcelに貼り付けるには有効桁数を15桁にしておく必要があるので,高精度計算サイト側でプログラムを自作し,最終結果の有効桁数を15桁にする。
- 手順2.の結果と手順4.の結果をExcel上で比較し,一致桁数を評価する。
- 同様にして,相対誤差は概ね10^-1から10^+1までの範囲で,10倍区間を999分割して一致桁数を評価する。なお,1000分割ではなく,999分割にしたのは,CASIOの高精度計算サイトの制約による。
結果
結果は下図のとおり。- 10^-16≦x≦10^+2の範囲で,一致桁数はほぼ14桁以上であった。
- ただし,x=1の近辺で一致桁数が低下するようなので,上記手順6のとおり,より細かくみてみると,一致桁数は13.5桁まで低下している。
- さらに細かくみれば,一致桁数がさらに低下する可能性もあるが,重要なのは x≦10^-1の領域なので,大きな問題にはならないであろう。
0 件のコメント:
コメントを投稿