Matlab - 差分近似误差

时间:2011-09-08 14:57:01

标签: matlab derivative

我们希望研究前向差异和中心差异的差异近似误差,将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图。关于如何做到这一点的任何提示? 这是我们的中心和前方差异。

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);

1 个答案:

答案 0 :(得分:2)

近似值中的误差是您使用它的结果与分析结果之间的差异。幸运的是,你有一个很好的函数f,可以轻松(好吧,sorta)区分。找到导数并创建相应的Matlab函数后,只需将分析结果与近似结果进行比较即可。最简单的方法可能是使用for循环覆盖不同的h

所以,这个想法是这样的(没有经过测试,只是为了给你一个想法):

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(...)