要计算给定点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中有没有办法在这种情况下获得更好的精度?
答案 0 :(得分:2)
实际上,这根本不是关于javascript的。
减少点之间的间隔不会增加导数的精度。关闭点中函数的值将在最后一位数字中计算出一些误差,最后您的误差将远大于点间距。然后你将非常小的差异除以非常小的数字而产生巨大的相对误差,你很可能得到一个完整的垃圾。
获得更好的导数值的最好方法是计算多个点的函数(分离不是很小),然后构造一个近似的polinoomial并根据你感兴趣的点区分它。