私はちょうどnumpy
のsine
機能をチェックしました。どうやら、それはpiの周りに非常に不正確な結果を生み出します。なぜnumpyの正弦関数はある点では不正確なのですか?
In [26]: import numpy as np
In [27]: np.sin(np.pi)
Out[27]: 1.2246467991473532e-16
numpy
があるので、不正確であるのはなぜ期待される結果は0ですか?
計算結果を不正確と見なすことが許容できるかどうかは確かではありません。その絶対誤差は1つのマシンイプシロン(binary64の場合)ですが、相対誤差は+inf
です - 。何か案が?
[編集]浮動小数点計算が不正確である可能性があることを十分に理解しています。しかし、ほとんどの浮動小数点ライブラリは、小さな誤差範囲内で結果を提供することができます。ここで、相対誤差は+ infであり、許容できないようです。
1/(1e-16 + sin(pi))
私たちがnumpyの実装を使用すると、結果が悲惨に間違っているでしょう。
「e-16」がありましたか? –
"とても不正確"は相対的なものだと思います... 0と0.00000000000000012246468の差は、コンピュータが無限のシーケンスを正確に表す能力を考えると比較的小さいです。 – Lost
@FredLarsonはい。私はe-16の部分に気づいた。上で述べたように、その絶対誤差は1つのマシンイプシロン(binary64の場合)になりますが、相対誤差は+ – zell