我们要研究前向差分和中心差分在差分近似中的误差,列出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]
的误差,并绘制对数图。关于如何做到这一点,有什么建议吗?这就是我们的中心和前进的区别。
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);
发布于 2011-09-09 00:46:08
近似中的误差是使用它得到的结果与分析结果之间的差异。幸运的是,您有一个很好的函数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(...)
https://stackoverflow.com/questions/7350110
复制相似问题