Excelの計算ミスのようなことはMathematicaにはない?


Excelで「850*77.1」を計算すると100000になるように見えるというバグが話題になっている。「なる」ではなく「なるように見える」と書いたのは、結果をグラフなどで2次利用する際には問題ないから(つまり内部では正しい値を持っている)。もちろん、結果をそのまま使う場合には問題になる。

この話題がWolfram Blogで取り上げられていて(上の画像もこのブログへの直リンク)、似たような話として、40000.223と入力したつもりが40000.2229999999になってしまう(逆ではない)例が紹介されていた。

「テストで見つけるには相当な知識が必要だよ」とか、「ふつうの処理系はハードウェアに組み込まれた精度での計算しかしないが、Mathematicaは任意の精度で計算できるから大丈夫」とのこと。

「テスト」なんてそんなにありがたいものではないと私は思っているし、計算結果の信頼性はExcelよりMathematicaのほうが上だというのもそのとおりかもしれない。でも、それは程度の問題であって、Mathematicaだって完璧ではない。たとえば先日の問題で、「10^-4」と書くところを「0.0001」にしたりすると、Mathematicaだって正しい結果は返してくれない(UMMで確認できる)。

Select[Range@199,
 With[{f = Exp[Pi Sqrt@#]},
  Abs[f - Round@f] <= 0.0001 &]]

{37, 58, 96, 100, 103, 104, 117, 118, 119, 123, 124, 126, 128, 
132, 134, 138, 140, 143, 144, 146, 147, 148, 150, 152, 153, 
156, 160, 162, 164, 166, 167, 168, 172, 175, 178, 179, 180, 
181, 182, 184, 186, 187, 188, 189, 190, 192, 194, 195, 197, 
198, 199}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です