В настоящее время я пытаюсь создать вектор-столбец 17x1 приближений правила Симпсона для моей функции P (x) с размерами шагов от 2 ^ 0, 2 ^ (- 1), 2 ^ (- 2), ...,2 ^ (- 16).Я вычисляю приближения вручную, но они не сходятся к истинному интегральному значению около 1,2119.Вот что у меня есть:
P = @(x) exp(-((x-1).^2)/(8));
a = 2;
b = 4;
approx_simp = zeros(17,1);
for k = 0:16
dx = 2:(2^(-k)):4;
first = P(2);
last = P(4);
dx2 = dx(2:length(dx)-1);
odds = 1:length(dx2);
evens = 1:length(dx2);
for jj = 1:2:length(dx2)-1
odds = P(dx2(jj));
end
for ii = 2:2:length(dx2)-2
evens = P(dx2(ii));
end
result = ((2^(-k))/3)*sum(first + last + 4*sum(odds) + 2*sum(evens));
approx_simp(k+1) = result;
end
true_area = integral(P,a,b);
Я использую формулу для правила Симпсона, которую я нашел в WikiPedia, поэтому мне нужно умножить четные слагаемые на 2 и нечетные слагаемые на 4 (исключаяконечные точки) и умножьте эту сумму на размер шага, деленный на 3. Я почти уверен, что проблема в том, как я прохожу четные и нечетные термины индекса.Как я уже упоминал ранее, он должен приблизиться к отметке 1.2119, но мои итерации в векторе очень отключены.Может кто-нибудь помочь мне решить эту проблему?