如何获得具有不同步长的辛普森规则近似向量?

时间:2019-03-01 21:44:58

标签: matlab for-loop math integral simpsons-rule

我目前正在尝试创建步长从2 ^ 0、2 ^(-1),2 ^(-2),...,我的函数P(x)的辛普森规则近似的17x1列向量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上找到的Simpson规则的公式,因此我需要将偶数索引项乘以2,将奇数索引项乘以4(不包括端点),并将该总和乘以步长除以3我很确定问题是如何处理偶数和奇数索引项。就像我之前提到的,它应该收敛到1.2119左右,但是我在向量中的迭代非常不完善。有人可以帮我解决这个问题吗?

0 个答案:

没有答案