在javascript中计算导数

时间:2012-12-12 12:48:00

标签: javascript precision differentiation

要计算给定点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-15返回1.000000000000001。为了获得更高的精确度,1 + 1e-16返回1。因此,我必须使用1e-15而不是{。1}}的Number.MIN_VALUE。

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

1 个答案:

答案 0 :(得分:2)

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

减少点之间的间隔不会增加导数的精度。关闭点中函数的值将在最后一位数字中计算出一些误差,最后您的误差将远大于点间距。然后你将非常小的差异除以非常小的数字而产生巨大的相对误差,你很可能得到一个完整的垃圾。

获得更好的导数值的最好方法是计算多个点的函数(分离不是很小),然后构造一个近似的polinoomial并根据你感兴趣的点区分它。