0

与えられた点 x で与えられた関数 Func の導関数の値を計算するには、良い精度を得るために次のように考えます:

a = Fun( x - Number.MIN_VALUE)
b = Func( x + Number.MIN_VALUE)
return (b-a)/(2*Number.MIN_VALUE)

現在、任意のx + Number.MIN_VALUE(またはx - Number.MIN_VALUE) 両方に対して、javascript で x を返します。

さまざまな値を試してみたところ、1 + 1e-151.000000000000001 が返されました。精度を上げようとすると、1 + 1e-16が返されます1。したがって1e-15、 Number.MIN_VALUE の代わりに使用する必要があり5e-324ます。

この場合、javascriptでより良い精度を得る方法はありますか?

4

1 に答える 1

3

実際、これはJavaScriptに関するものではありません。

ポイント間の間隔を狭めても、導関数の精度は向上しません。近い点の関数の値は、最後の桁に多少の誤差が含まれて計算され、最終的に、誤差は点の間隔よりもはるかに大きくなります。次に、相対誤差が非常に大きい非常に小さな差を非常に小さな数で割ると、完全にゴミになる可能性が高くなります。

導関数のより良い値を取得する最良の方法は、複数の点で関数を計算し (あまり小さくない分離で)、近似多項式を作成して、関心のある点で微分することです。

于 2012-12-12T12:58:38.397 に答える