數值積分——復合辛普森求積公式


  此段代碼是基於辛普森公式的積分計算方法

  1.代碼

%%復合辛普森求積公式
%%Y是數值(attribute=0)或具體表達式(attribute=1),interval是求積區間,n是精度(如果是數值,則為數值長度-1)
function CSQF = Compound_Simpson_quadrature_formula(Y,interval,n,attribute)
a = interval(1);b = interval(2);
h = (b-a)/n;lambda = 0.5;
for i = 1:n+1
    X(i) = a+h*(i-1);
end
if attribute == 0
    for i = 1:n
        r = rand(1);
        Y_ave(i) = r*lambda*Y(i)+(1-r*lambda)*Y(i+1);
    end
    sum1 = 0;
    sum2 = 0;
    for i = 1:n
        sum1 = sum1+Y_ave(i);
    end
    for i = 2:n
        sum2 = sum2+Y(i);
    end
    CSQF = vpa(h*(Y(1)+Y(n+1)+4*sum1+2*sum2)/6,8);
elseif attribute ==1
    F = subs(Y,X);
    for i = 1:n
        r = rand(1);
        F_ave(i) =  r*lambda*F(i)+(1-r*lambda)*F(i+1);
    end
    sum1 = 0;
    sum2 = 0;
    for i = 1:n
        sum1 = sum1+F_ave(i);
    end
    for i = 2:n
        sum2 = sum2+F(i);
    end
    CSQF = vpa(h*(F(1)+F(n+1)+4*sum1+2*sum2)/6,8);
end
end

  2.例子

syms x;
Y = exp(x)*sin(x)+log(x+1);
interval=[0 pi];
attribute = 1;
n = 1000;
Compound_Simpson_quadrature_formula(Y,interval,n,attribute)

vpa(int(Y,x,interval),8)

  3.結果

ans =
14.815334
ans =
14.81429

  通過結果看出,辛普森求積公式的精度並不是很高,同復合梯形公式一樣,取決於求積精度和積分表達式復雜程度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM