0

要计算给定函数 Func 在给定点 x 处的导数值,为了获得良好的精度,人们会认为:

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-15返回 1.000000000000001。试图获得更高的精度,1 + 1e-16返回1。所以我将不得不使用1e-15Number.MIN_VALUE 而不是5e-324.

在这种情况下,有没有办法在 javascript 中获得更好的精度?

4

1 回答 1

3

实际上,这根本不是关于 javascript 的。

减少点之间的间隔不会增加导数的精度。关闭点中的函数值将在最后一位数字中计算出一些错误,最后,您的错误将比点分离大得多。然后,您将具有巨大相对误差的非常小的差异除以非常小的数字,您很可能会得到完全的垃圾。

获得更好的导数值的最佳方法是在多个点上计算函数(间隔不是很小),然后构造一个近似多项式并在您感兴趣的点上对其进行微分。

于 2012-12-12T12:58:38.397 回答