函数f(x)的导数可以表示为如下形式:
(1)
其中,式(1)为前向差分。另外两种形式的差分公式,可以表示为如下形式:
(2)
(3)
式(2)即为后向差分,式(3)为中心差分。
为了计算函数f(x)导数的差分近似和实际导数之间的误差,对函数f(x)进行泰勒级数展开,得:
通过上述的前向差分,后向差分,以及中心差分的泰勒级数展开公式可知,函数f(x)的导数和前向差分,以及后向差分的误差均为采样间隔的一阶项,即正比于
,为一阶精度;函数f(x)的导数和中心差分的误差为采样间隔
的二阶项,即正比于
,为二阶精度;当采样间隔
越小,二阶精度的中心差分所造成的误差越小,因此,中心差分的导数近似精度更高。如下代码为基于前向差分,后向差分,以及中心差分实现的导数近似的误差对比。
原始函数图像f(x)
不同形式的f'(x)差分近似对比
采样间隔为pi/10的f'(x)差分近似的误差对比
采样间隔为pi/20的f'(x)差分近似的误差对比
从上述的前向差分,后向差分以及中心差分近似的误差对比结果来看,对函数导数采用差分近似,相应的误差最小。实现的python代码如下:
本文所参考的资料为:《MATLAB模拟的电磁学时域有限差分法》