• 数值分析实验之数值积分法(MATLAB代码)


     详细实验指导见上上一篇,此处只写内容啦

    实验内容

         选择 y=arctan(x) 在0-1上的积分

        准确积分结果:

        精确值(保留二十位有效数字)为

           

    程序实现

    • 复化梯形算法

    function Tn=Tn(a,b,n)
    syms x
    h=(b-a)/n;
    sum=0;
    f(x)=atan(x);
    for k=1:n-1
        sum=sum+f(a+k.*h);
    end
    Tn=(f(a)+2*sum+f(b))*h/2;
    end
    

    运行结果:

               

    • 复化simpson公式

    %%复化simpson法
    syms x
    a=0;          %积分区间左端点
    b=1;          %积分区间右端点
    n=50;
    h=(b-a)/n;
    f(x)=atan(x);
    g(x)=a+x*h;
    s1=0;
    for i=0:n-1
        s1=s1+f(g(i+1/2));
    end
    s2=0;
    for j=1:n-1
        s2=s2+f(g(j));
    end
    S=h/6*(f(a)+4*s1+2*s2+f(b));
    fprintf('复化simpson法=%g
    ',S);
    

      运行结果:

       

    • 复化科特斯法

    function Cn = Cn(a,b,n) 
    format long 
    syms x
    f(x)=atan(x);
    h = (b-a)/n; 
    sum1 = 0; 
    sum2 = 0;
     for i = 0:n-1 
    sum1 = sum1 + 32*f(a+(i+1/4).*h)+12*f(a+(i+1/2).*h)+32*f(a+(i+3/4).*h); 
    end 
    for j = 1:n-1 
        sum2 = sum2 + 14*f(a+j.*h); 
    end 
    Cn = h/90*(7*f(a)+sum1+sum2+7*f(b));
    

     运行结果:

          

     • 另复化科特斯法

    syms x
    a=0;          %积分区间左端点
    b=1;          %积分区间右端点
    n=50;
    h=(b-a)/n;
    f(x)=atan(x);
    g(x)=a+x*h;
    c1=0;
    for i=0:n-1
        c1=c1+h/90*(7/n*f(a)+32*f(g(i+1/4))+12*f(g(i+1/2))+32*f(g(i+3/4))+14*f(g(i))+7/n*f(b));
    end
    C1=c1-h/90*14*f(g(0));
    fprintf('复化柯特斯法=%g
    ',C1);
    

     运行结果:

          

    • 龙贝格公式

    syms x
    a=0;          %积分区间左端点
    b=1;          %积分区间右端点
    n=50;
    h=(b-a)/n;
    h1=(b-a)/(2*n);
    f(x)=atan(x);
    g(x)=a+x*h;
    g1(x)=a+x*h1;
    c1=0;
    for i=0:n-1
        c1=c1+h/90*(7/n*f(a)+32*f(g(i+1/4))+12*f(g(i+1/2))+32*f(g(i+3/4))+14*f(g(i))+7/n*f(b));
    end
    C1=c1-h/90*14*f(g(0));
    c2=0;
    for i=0:2*n-1
        c2=c2+h1/90*(7/(2*n)*f(a)+32*f(g1(i+1/4))+12*f(g1(i+1/2))+32*f(g1(i+3/4))+14*f(g1(i))+7/(2*n)*f(b));
    end
    C2=c2-h1/90*14*f(g1(0));
    Rn=64/63*C2-1/63*C1;
    fprintf('龙贝格公式法=%g
    ',Rn);
    

      运行结果:

          

  • 相关阅读:
    Action<T>和Func<T>委托
    异步委托学习笔记
    .Net身份验证里边的几个基本概念(转)
    线程和进程
    WebClient类的使用
    关于NHibernate的更新和读取操作,及碰见的一点问题
    ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
    LINQ标准查询操作符学习笔记
    C#3.0中的扩展方法
    NHibernate中的一对多映射
  • 原文地址:https://www.cnblogs.com/ynly/p/12878652.html
Copyright © 2020-2023  润新知