2016年4月17日日曜日

Excel 2013のLOG10関数の精度

背景

ある2個の数値の一致桁数を評価するときに,両者の相対誤差の常用対数をとる。このため,Excel上ではLOG10関数を利用している。しかし,一致桁数云々を議論する前に,そもそも,この関数の精度が重要である。

一方,CASIOの高精度計算サイト(50桁での計算が可能)にも,LOG関数という関数があり,常用対数を計算できる。

そこで,メタ議論になってしまうが,一致桁数評価ツールとしてのLOG10関数,LOG関数について,両者の結果を比較し,一致桁数を評価した。


検証環境

  • OS: Windows 10 Pro(64bit)
  • アプリケーション: Excel 2013(64bit)
  • CPU: Core i7 2.4GHz
  • RAM: 16GB
  • 仮想メモリ: OFF


検証方法

以下の手順で検証した。
  1. 相対誤差に基づいて一致桁数を評価するとき,相対誤差は概ね10^-16から10^+2までの範囲に収まる。そこで,この範囲の数値を等比的に分割して数列を作成する。10倍区間を100分割して得た等比数列の値をxとする。
  2. ExcelのLOG10関数を利用して,xの常用対数を計算する。
  3. CASIOの高精度計算サイトで,「桁数50桁」,「精度保証あり」でxの常用対数を計算する。
  4. ただし,この結果を適切にExcelに貼り付けるには有効桁数を15桁にしておく必要があるので,高精度計算サイト側でプログラムを自作し,最終結果の有効桁数を15桁にする。
  5. 手順2.の結果と手順4.の結果をExcel上で比較し,一致桁数を評価する。
  6. 同様にして,相対誤差は概ね10^-1から10^+1までの範囲で,10倍区間を999分割して一致桁数を評価する。なお,1000分割ではなく,999分割にしたのは,CASIOの高精度計算サイトの制約による。


結果

結果は下図のとおり。
  • 10^-16≦x≦10^+2の範囲で,一致桁数はほぼ14桁以上であった。
  • ただし,x=1の近辺で一致桁数が低下するようなので,上記手順6のとおり,より細かくみてみると,一致桁数は13.5桁まで低下している。
  • さらに細かくみれば,一致桁数がさらに低下する可能性もあるが,重要なのは x≦10^-1の領域なので,大きな問題にはならないであろう。



0 件のコメント:

コメントを投稿