Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Floating point 在实践中,我应该使用什么值来近似函数的梯度?_Floating Point_Theory_Numerical Methods_Derivative_Approximation - Fatal编程技术网

Floating point 在实践中,我应该使用什么值来近似函数的梯度?

Floating point 在实践中,我应该使用什么值来近似函数的梯度?,floating-point,theory,numerical-methods,derivative,approximation,Floating Point,Theory,Numerical Methods,Derivative,Approximation,对于某些函数f(x),我想用以下近似值求f'(x)和f'(x): [f(x+h)-f(x)]/h 在每个场景中,我应该选择哪些h值?我知道f'(x)应该是h=sqrt(epsilon),其中epsilon是机器epsilon。但是,对于f''(x),我必须以不同的方式处理h值吗?我的猜测是截断误差和舍入误差在某种程度上相互抵消,从而产生这个值 我应该如何估计双精度的误差(例如)?你应该使用类似h=sqrt(epsilon)*(1+abs(x))对于大的x来说h=sqrt(epsilon)的相对精

对于某些函数f(x),我想用以下近似值求f'(x)和f'(x):

[f(x+h)-f(x)]/h

在每个场景中,我应该选择哪些h值?我知道f'(x)应该是h=sqrt(epsilon),其中epsilon是机器epsilon。但是,对于f''(x),我必须以不同的方式处理h值吗?我的猜测是截断误差和舍入误差在某种程度上相互抵消,从而产生这个值


我应该如何估计双精度的误差(例如)?

你应该使用类似
h=sqrt(epsilon)*(1+abs(x))
对于大的
x
来说
h=sqrt(epsilon)
的相对精度会降低

通常,第k阶导数的差分公式的计算误差与ε/h^k成比例,这增加了近似公式的阶数
h^p
的理论误差。如果两个贡献大致相等,则总误差最小,即对于
h=epsilon^(1/(k+p))
,然后需要根据
x
的大小进行缩放


在下面的示例中,让
x
1
,以避免该比例。在单侧一阶导数公式中,
k=p=1
,因此
h=epsilon^(1/2)
。如果采用对称差分公式,则
k=1,p=2
,最佳
h
约为
epsilon^(1/3)
。如果你用对称二阶差分公式来近似二阶导数,你会得到
k=p=2
,因此
h=epsilon^(1/4)
是最优的,等等。

你应该使用类似
h=sqrt(epsilon)*(1+abs(x))
的东西,因为对于大的
x
h=sqrt(epsilon)的相对精度会降低

通常,第k阶导数的差分公式的计算误差与ε/h^k成比例,这增加了近似公式的阶数
h^p
的理论误差。如果两个贡献大致相等,则总误差最小,即对于
h=epsilon^(1/(k+p))
,然后需要根据
x
的大小进行缩放


在下面的示例中,让
x
1
,以避免该比例。在单侧一阶导数公式中,
k=p=1
,因此
h=epsilon^(1/2)
。如果采用对称差分公式,则
k=1,p=2
,最佳
h
约为
epsilon^(1/3)
。如果你用对称二阶差分公式近似二阶导数,你会得到
k=p=2
,因此
h=epsilon^(1/4)
是最优的,等等。

(a)没有普遍的答案。sqrt(epsilon)在某些情况下是满足的,因为它很小,但为精度留下了一些空间。但即使是这样,它也需要根据x进行缩放。(b) 众所周知,数值微分是不稳定的。你必须分析你使用的f和x。(c) 你不能期望舍入和截断被取消。(a)没有普遍的答案。sqrt(epsilon)在某些情况下是满足的,因为它很小,但为精度留下了一些空间。但即使是这样,它也需要根据x进行缩放。(b) 众所周知,数值微分是不稳定的。你必须分析你使用的f和x。(c) 您不能期望取整和截断被取消。请注意,对于x=0,没有真正的方法来选择h,因为f(x)和f(cx)是同一事物。请注意,对于x=0,没有真正的方法来选择h,因为f(x)和f(cx)是同一事物。