Matlab - ошибка в разностном приближении - PullRequest
0 голосов
/ 08 сентября 2011

Мы хотим изучить ошибку в приближении разности для прямой разности и центральной разности, составить таблицу ошибок для 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);

1 Ответ

2 голосов
/ 08 сентября 2011

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