0

我们要研究前向差分和中心差分的差分逼近中的误差,将误差制表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);
4

1 回答 1

2

近似值的误差是您使用它得到的结果与分析结果之间的差异。幸运的是,你有一个很好的函数f,它可以很容易地(嗯,有点)被区分。求导数并创建相应的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(...)
于 2011-09-08T16:46:08.453 回答