2.3.1 有限差分法

顾名思义,有限差分法计算两个相差有限步长的值之间的差。它利用小差分近似方程(2.4)中的导数定义:

在数学上,步长h越小,导数估计就越准确。实际上,h值太小会导致数值误差相消。这种效果将在图2.4中展示。算法2.1提供了这些方法的实现。

算法2.1 有限差分h估计函数fx处的导数的有限差分方法

默认步长是浮点值的机器精度的平方根或立方根。这些步长平衡了机器舍入误差和步长误差。

eps函数提供了1.0和下一个较大的浮点值之间的步长。

有限差分法可以由泰勒展开式导出。我们利用f关于x的泰勒展开式,得到前向差分导数估计:

整理并求解一阶导数:

前向差分近似于小h的真正导数,其误差取决于。误差项是Oh),意味着当h接近零时,前向差分是线性误差[1]

中心差分法的误差项为Oh2[2]。我们可以用泰勒展开式导出这个误差项。fx+h/2)和fx-h/2)关于x的泰勒展开式为:

它们相减得到:

重新整理可以得到:

这表明近似值有二次误差。

[1] 附录C讨论了渐近表示法。

[2] J. H. Mathews and K. D. Fink,Numerical Methods Using MATLAB,4th ed.Pearson,2004.