zoukankan      html  css  js  c++  java
  • 数值积分——复合辛普森求积公式

      此段代码是基于辛普森公式的积分计算方法

      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
    

      通过结果看出,辛普森求积公式的精度并不是很高,同复合梯形公式一样,取决于求积精度和积分表达式复杂程度

  • 相关阅读:
    文件操作
    安全名词
    浏览器并发连接
    acm 2057
    acm 2072
    acm 2084
    acm 2044
    acm 2043
    acm 2032
    acm 2005
  • 原文地址:https://www.cnblogs.com/guliangt/p/12243064.html
Copyright © 2011-2022 走看看