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] и нарисовать логарифмическую диаграмму. Любые советы о том, как это сделать? Это наша центральная и передняя разница.

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

person user940599    schedule 08.09.2011    source источник


Ответы (1)


Ошибка приближения — это разница между результатами, полученными с его помощью, и аналитическим результатом. К счастью, у вас есть хорошая функция 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(...)
person carlpett    schedule 08.09.2011