異常な浮動小数点精度でπを格納していません。倍精度でπに誤った値を使用しています。バイナリで3.1415926536 を概算するには、少なくとも38ビットが必要です。
3.14159265359922… > 11.001001000011111101101010100010001001
2 ^ -36は約1.5e-11であり、後続の99と一致することに注意してください。 倍精度浮動小数点には52ビットの仮数があります。cos(pi/2)
-5e-12として評価するには、他に唯一可能な選択肢は48ビットタイプですが、これは非常に奇妙です。
微分係数がほぼゼロである0とπの近くでは、cos(θ)は非常に正確に計算できません。
cos(3.1415926536) ≈ -0.999999999999999999999947911
これは-1と約5.2e-23異なります。これはのεよりも小さいためdouble
、正確に -1 cos(3.1415926536)
として計算されます...これは正しくありません。
±π/ 2に近い場合、導関数[ -sin(θ) ]はほぼ±1になるため、入力の誤差が出力になります。
cos(1.57079632679961) ≈ -4.71338076867830836e-12
cos(1.57079632679962) ≈ -4.72338076867830836e-12
cos(1.57079632680000) ≈ -5.10338076867830836e-12
たまたま、表示さcos(π/2)
れる桁が1つ少なく、-5.2e-12 と計算されるTI電卓があります。ただし、これは電子的には非常に異なり、の正確な値を与えるように設計されていますcos(90°)
。
Spotlightでは、cos(pi/2)
πの値を取得し、10進数の文字列に変換し、それを(正確な、有理)バイナリ値11.00100100001111110110101010001000100100001101101111(または10000)として保存し、2で除算してから、基本的にそれを減算することによって計算されていると思います真の値 π/ 2の。がcos(pi/2 + cos(pi/2))
ゼロに近いかどうかを確認する必要があります(-2.2e-35の可能性があります)。
2のべき乗による乗算は、指数にのみ影響し、仮数には影響しません。丸めがどのように適用されるかを、半分または2倍に繰り返すことで判断できる場合があります。