Как получить вектор приближений правила Симпсона с разными размерами шагов? - PullRequest
0 голосов
/ 02 марта 2019

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

...