Matlab - 差分近似的误差

问题描述:

我们想要研究前向差分和中心差分差分近似的误差,列出h=[1.E-3 1.E-4 1.E-5 1.E-6 1.E-7 1.E-8 1.E-9 1.E-10 1.E-11 1.E-12 1.E-13]的误差并绘制一个loglog图。有关如何做到这一点的任何提示? 这是我们的*和远期差异。Matlab - 差分近似的误差

centdiff=(subs(f, x+h))/(2*h) - (subs(f, x-h))/(2*h) 
framdiff=(subs(f, x+h) - f)/h 

而且我们的功能:

f=60*x-(x.^2+x+0.1).^6./(x+1).^6-10*x.*exp(-x); 

在近似的错误是结果你使用它,而分析结果之间的差异。幸运的是,你有一个很好的功能f,它可以很容易(很好,有点)区分。找到导数并创建相应的Matlab函数后,您只需将分析结果与近似结果进行比较。最简单的方法可能是在您的不同h上使用for循环。

所以,这个想法是这样的(未测试,只是给你一个想法):

cent_error = zeros(size(h)); 
forw_error = zeros(size(h)); 
for idx = 1:size(h) 
    cent_error(idx) = abs(analytical_diff - centdiff(f, h)); 
    forw_error(idx) = abs(analytical_diff - forwdiff(f, h)); 
end 

loglog(...)