数值微分
编辑在数值分析中,数值微分算法利用函数的值,也许还有关于函数的其他知识来估计数学函数或函数子程序的导数。
有限差分
编辑最简单的方法是使用有限差分近似法。一个简单的两点估计是计算通过点(x,f(x))和(x+h,f(x+h))的附近正切线的斜率。选择一个小数h,h代表x的一个小变化,它可以是正数,也可以是负数。这条线的斜率是这个表达式是牛顿差分商(也被称为一阶分差)。这条正切线的斜率与正切线的斜率相差的量大约与h成正比。因此,f在x处的真正导数是当正切线越来越接近于正切线时,差值商的极限。这个公式被称为对称性差分商。在这种情况下,一阶误差抵消了,所以这些正切线的斜率与正切线的斜率相差了一个近似的量,即.因此,对于小的h值,这是一个比单边估计更准确的切线近似值。然而,尽管斜率是在x处计算的,但函数在x处的值并不涉及。这个误差不包括由于数字的表示和计算的精度有限而产生的舍入误差。对称差商在一些计算器中被用作近似导数的方法,包括TI-82、TI-83、TI-84、TI-85,它们都使用这种方法,h=0.001。
数值微分的步长
编辑当函数使用浮点运算时,实践中的一个重要考虑因素是步长h的选择。事实上,所有的有限差分公式都是条件不良的,如果h足够小的话,由于抵消的原因会产生一个零值。如果太大,计算正切线的斜率会更准确,但利用正切线的斜率的估计可能更差。对于基本中心差分,最佳步长是机器ε的立方根。对于在x和x+h处评估的数值导数公式,选择小的h而不产生大的舍入误差是(尽管当x=0时不是),其中机器ε通常是双精度的2.2×10-16的数量级。平衡舍入误差和正切误差以达到最佳精度的h公式是对于单精度来说,问题就更严重了,因为尽管x可能是一个可表示的浮点数,但x+h几乎肯定不是。
这意味着x+h会被改变(通过四舍五入或截断)为一个附近的机器可表示的数字,其结果是(x+h)-x不等于h;两个函数的评价不会正好相差h。在这方面,由于大多数十进制分数在二进制中是循环序列(就像1/3在十进制中一样),一个看似圆的步骤,如h=0.1,在二进制中不会是一个圆的数字;它是0.000110011001100...2一个可能的方法如下。h:=sqrt(eps)*x;xph:=x+h;dx:=xph-x;slope:=(F(xph)-F(x))/dx。然而,对于计算机来说,编译器的优化设施可能没有注意到实际计算机算术的细节,而是应用数学的公理来推断dx和h是相同的。在C语言和类似语言中,一个指令
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/168490/