精华内容
下载资源
问答
  • matlab复合梯形公式误差
    千次阅读
    2021-04-22 11:31:12

    分别用复化梯形公式、复化Simpson公式计算定积分分别验证结果(精确值I=4.006994)。

    复化梯形公式求定积分:

    function I=tquad(x,y)

    %复化梯形求积公式,其中,

    %x为向量,被积函数自变量的等距结点; %y为向量,被积函数在结点处的函数值; n=length(x);

    m=length(y);

    %积分自变量的结点数应与它的函数值的个数相同 h=(x(n)-x(1))/(n-1);

    a=[1 2*ones(1,n-2) 1];

    I=h/2*sum(a.*y);

    复化Simpson公式求定积分:

    function I=squad(x,y)

    %复化Simpson求积公式,其中,

    %x为向量,被积函数自变量的等距结点; %y为向量,被积函数在结点处的函数值; n=length(x);

    m=length(y);

    %积分自变量的结点数应与它的函数值的个数相同 if rem(n-1,2)~=0

    I=tquad(x,y);

    return;

    end

    N=(n-1)/2;

    h=(x(n)-x(1))/N;

    a=zeros(1,n);

    for k=1:N

    a(2*k-1)=a(2*k-1)+1;

    a(2*k)=a(2*k)+4;

    a(2*k+1)=a(2*k+1)+1;

    end

    I=h/6*sum(a.*y);

    20 exdx,取n=2,4,8,16

    更多相关内容
  • 复合梯形公式求积分

    2018-10-19 12:47:33
    数值计算积分,利用复合梯形公式求积分,计算结果误差较小
  • 复合梯形公式

    千次阅读 2021-04-22 20:32:32
    1、从积分和式到求积公式 插值型求积公式 求积公式的代数精度 复合梯形公式 MATLAB求积分命令,第五章 数值积分与数值微分,椭圆周长计算:,x =a cos t y =b sin t,0 t 2,椭圆积分,x = a sin cos y = b sin sin z = c ...

    《复合梯形公式》由会员分享,可在线阅读,更多相关《复合梯形公式(20页珍藏版)》请在人人文库网上搜索。

    1、从积分和式到求积公式 插值型求积公式 求积公式的代数精度 复合梯形公式 MATLAB求积分命令,第五章 数值积分与数值微分,椭圆周长计算:,x =a cos t y =b sin t,0 t 2,椭圆积分,x = a sin cos y = b sin sin z = c cos ,D= (,) |0 2, 0 ,思考题: 椭球面的面积计算,椭球面积的积分表达式? 对二重积分的计算问题? 三维体积的离散数据计算?,积分和式的计算: f (x)Ca, b单增, 令 h = (b a)/n, xk = a + kh, (k = 0,1,2,n),近似计算,4.8612e+004 4.8660e+0。

    2、04 4.8683e+004 4.8695e+004 4.8701e+004 4.8704e+004 4.8706e+004 4.8707e+004 4.8707e+004,4.8803e+004 4.8755e+004 4.8731e+004 4.8719e+004 4.8713e+004 4.8710e+004 4.8709e+004 4.8708e+004 4.8708e+004 4.8708e+004,a=7782.5 c=972.5,P.170人造卫星的轨道长度计算,数值求积公式的一般形式(机械求积公式),Rf 为数值求积公式余项, x0, x1, , xn为求积 结点; A0, A。

    3、1, , An为求积系数.,矩形公式: 取A0 =(b a ),特别地, 时分别称为左矩公式,中矩公式,右矩公式。,梯形公式: 取A0 =A1 =(b a )/2,Simpson 公式 取A0 = A3 =(b a )/6, A1 =2(b a )/3,,插值型求积公式: 在 a,b上取 a x0 x1 x2 xnb 作Lagrange插值,令,插值求积法,插值型求积公式的余项,例2 梯形公式的误差余项,即,例3取 x0 =a, x1 =0.5(a+b), x2 = b ,则 h=0.5(b a ),A0= (b-a)/6 A1=2(b-a)/3 A2= (b-a)/6,著名的 Simpson。

    4、 公式,定义: 若一个求积公式对f(x)= xi(i=0,1,.,m)能精确成立,但对f(x)= xm+1不精确成立,则称该公式具有m次代数精度。 令机械求积公式对f(x)= xi(i=0,1,.,n)精确成立,那么得线性方程组 当节点xk (k=0,1,.,n)给定且互异时,系数Ak可由上式确定。,定理:(n+1)个节点的求积公式为插值型的充要条件是该公式至少有n次代数精度.,类似有: Simpson公式具有3阶代数精度,例. 矩形公式 代数精度为0,解: 取f(x)= 1, x, x2 令求积公式准确成立,容易验证, 对f (x) = x3 求积公式式不能准确成立. 因此这一公式只具有2次。

    5、代数精度,取等距结点xj = a + jh时,插值型求积公式称为Newton-Cotes公式,定理: 当n为偶数时, n阶Newton-Cotes公式至少有(n+1)阶代数精确度。,Newton-Cotes公式代数精度至少为n,复合梯形求积公式,将积分区间a,b n 等分.令h=(b-a)/n . xj=a+jh,取,递推,得,给定允许误差界0,当,时,结束计算并以T2n作为定积分的近似值.,f=inline(sqrt(7782.5*sin(x).2+59621550*cos(x).2); t=0.25*pi*(f(0)+f(pi/2); n=1;h=pi/2;e=1;k=0; while e。

    6、0.01 s=0.5*(t+h*sum(f(.5*h:h:pi/2); e=abs(s-t);t=s; n=2*n;h=h/2;k=k+1 end 4*t,ans=4.8707e+004, (循环次数k= 2),复合梯形公式计算,将程序第二行改为t=0.5*pi*f(pi/2)用积分部分和式计算,循环次数k=13,f=inline(sqrt(7782.5*sin(x).2+59621550*cos(x).2); T=4*quad(f, 0, pi/2) Ans=4.8707e+004,MATLAB求定积分命令quad(fun, a, b),高阶求积分命令q = quad8(fun,a,b) 重积分计算命令dblquad(fun,inmin,inmax,outmin,outmax。

    展开全文
  • 1. 用1阶至4阶Newton-Cotes公式计算积分程序:function I = NewtonCotes(f,a,b,type)%syms t;t=findsym(sym(f));I=0;switch typecase 1,I=((b-a)/2)*(subs(sym(f),t,a)+subs(sym(f),t,b));case 2,I=((b-a)/6)*(subs...

    1. 用1阶至4阶Newton-Cotes公式计算积分

    程序:

    function I = NewtonCotes(f,a,b,type)

    %

    syms t;

    t=findsym(sym(f));

    I=0;

    switch type

    case 1,

    I=((b-a)/2)*(subs(sym(f),t,a)+subs(sym(f),t,b));

    case 2,

    I=((b-a)/6)*(subs(sym(f),t,a)+4*subs(sym(f),t,(a+b)/2)+...

    subs(sym(f),t,b));

    case 3,

    I=((b-a)/8)*(subs(sym(f),t,a)+3*subs(sym(f),t,(2*a+b)/3)+...

    3*subs(sym(f),t,(a+2*b)/3)+subs(sym(f),t,b));

    case 4,

    I=((b-a)/90)*(7*subs(sym(f),t,a)+...

    32*subs(sym(f),t,(3*a+b)/4)+...

    12*subs(sym(f),t,(a+b)/2)+...

    32*subs(sym(f),t,(a+3*b)/4)+7*subs(sym(f),t,b));

    case 5,

    I=((b-a)/288)*(19*subs(sym(f),t,a)+...

    75*subs(sym(f),t,(4*a+b)/5)+...

    50*subs(sym(f),t,(3*a+2*b)/5)+...

    50*subs(sym(f),t,(2*a+3*b)/5)+...

    75*subs(sym(f),t,(a+4*b)/5)+19*subs(sym(f),t,b));

    case 6,

    I=((b-a)/840)*(41*subs(sym(f),t,a)+...

    216*subs(sym(f),t,(5*a+b)/6)+...

    27*subs(sym(f),t,(2*a+b)/3)+...

    272*subs(sym(f),t,(a+b)/2)+...

    27*subs(sym(f),t,(a+2*b)/3)+...

    216*subs(sym(f),t,(a+5*b)/6)+...

    41*subs(sym(f),t,b));

    case 7,

    I=((b-a)/17280)*(751*subs(sym(f),t,a)+...

    3577*subs(sym(f),t,(6*a+b)/7)+...

    1323*subs(sym(f),t,(5*a+2*b)/7)+...

    2989*subs(sym(f),t,(4*a+3*b)/7)+...

    2989*subs(sym(f),t,(3*a+4*b)/7)+...

    1323*subs(sym(f),t,(2*a+5*b)/7)+...

    3577*subs(sym(f),t,(a+6*b)/7)+751*subs(sym(f),t,b));

    end

    syms x

    f=exp(-x).*sin(x);

    a=0;b=2*pi;

    I = NewtonCotes(f,a,b,1)

    N=1:

    I =

    0

    N=2:

    I =

    0

    N=3:

    I =

    (pi*((3*3^(1/2)*exp(-(2*pi)/3))/2 - (3*3^(1/2)*exp(-(4*pi)/3))/2))/4

    N=4:

    I =

    (pi*(32*exp(-pi/2) - 32*exp(-(3*pi)/2)))/45

    2. 已知,因此可以通过数值积分计算的近似值。

    (1)分别取和,利用复合梯形公式和复合Simpson公式计算的近似值;

    程序:

    function Y= CombineTraprl(f,a,b,h)

    %用复合梯形公式计算积分

    syms t;

    t= findsym(sym(f));

    n=(b-a)/h;

    I1= subs(sym(f),t,a);

    l=0;

    for k=1:n-1

    xk=a+h*k;

    l=l+2*subs(sym(f),t,xk);

    end

    Y=(h/2)*(I1+l+subs(sym(f),t,b));

    syms x

    f=4/(1+x^2);

    a=0;b=1;

    y= CombineTraprl(f,a,b,0.1);

    vpa(y,6)

    h=0.1:

    ans =

    3.13993

    H=0.2:

    ans =

    1.04498

    复合辛普森:

    function Y= CombineSimpson(f,a,b,h)

    %用复合辛普森公式计算积分

    syms t;

    t= findsym(sym(f));

    n=(b-a)/h;

    I1= subs(sym(f),t,a);

    l=0;

    for k=1:n-1

    xk=a+h*k;

    l=l+2*subs(sym(f),t,xk);

    end

    l2=0;

    for k=1:n-1

    xk2=a+h*(k+1)/2;

    l2=l2+4*subs(sym(f),t,xk2);

    end

    Y=(h/6)*(I1+l+l2+subs(sym(f),t,b));

    H=0.1:

    ans =

    3.22605

    H=0.2:

    ans =

    2.93353

    (2)把区间[0,1] 等分,利用复合梯形公式和复合Simpson公式计算的近似值,若要求误差不超过,问需要把区间[0,1]划分成多少等份;

    function n=trap(f,a,b)

    syms t;

    t= findsym(sym(f));

    I=zeros(1,500);

    I(1)=((b-a)/2)*(subs(sym(f),t,a)+subs(sym(f),t,b));

    I(2)=((b-a)/4)*(subs(sym(f),t,a)+2*subs(sym(f),t,(b-a)/2)+subs(sym(f),t,b));

    k=3;

    while((I(k-1)-I(k-2))>1/2*10^(-6))

    l=0;

    for i=1:k-1

    xi=a+(b-a)/k*i;

    l=l+2*subs(sym(f),t,xi);

    end

    I(k)=((b-a)/(2*k))*(subs(sym(f),t,a)+l+subs(sym(f),t,b));

    k=k+1;

    end

    n=k-1;

    syms x;

    f=4./(1+x.^2);

    a=0;b=1;

    n=trap(f,a,b)

    n =

    88

    复合辛普森公式:

    function n=Simpson(f,a,b)

    syms t;

    t= findsym(sym(f));

    I=zeros(1,500);

    I(1)=((b-a)/6)*(subs(sym(f),t,a)+4*subs(sym(f),t,(b-a)/2)+subs(sym(f),t,b));

    I(2)=((b-a)/12)*(subs(sym(f),t,a)+4*subs(sym(f),t,(b-a)/4)+4*subs(sym(f),t,3*(b-a)/4)+2*subs(sym(f),t,(b-a)/2)+subs(sym(f),t,b));

    k=3;

    while((I(k-1)-I(k-2))>1/2*10^(-6))

    l=0;

    m=4*subs(sum(f),t,(a+((a+b)/(2*k))));

    for i=1:k-1

    xi=a+(b-a)/k*i;

    l=l+2*subs(sym(f),t,xi);

    end

    for j=1:k-1

    xj=a+(b-a)/(k*2)+(b-a)/k*j;

    m=m+4*subs(sym(f),t,xj);

    end

    I(k)=((b-a)/(2*k))*(subs(sym(f),t,a)+l+m+subs(sym(f),t,b));

    k=k+1;

    end

    n=k-1;

    n =

    5

    (3)选择不同的,对两种复合求积公式,试将误差描述为的函数,并比较两种方法的精度。

    复合求积公式:

    function y=traprls(f,a,b,h)

    syms t;

    t= findsym(sym(f));

    n=(b-a)/h;

    l=0;

    for k=1:n-1

    xk=a+h*k;

    l=l+2*subs(sym(f),t,xk);

    end

    I1=(h/2)*(subs(sym(f),t,a)+l+subs(sym(f),t,b));

    h=(b-a)/(n-1);

    n=(b-a)/h;

    l=0;

    for k=1:n-1

    xk=a+h*k;

    l=l+2*subs(sym(f),t,xk);

    end

    I2=(h/2)*(subs(sym(f),t,a)+l+subs(sym(f),t,b));

    y=I2-I1;

    y=abs(y);

    y=vpa(y,8);

    syms x;

    f=4./(1+x.^2);

    a=0;b=1;

    h=0.01:0.05:0.5;

    v=zeros(1,10);

    for i=1:10

    v(i)=traprls(f,a,b,h(i))

    end

    v

    plot(h,v,‘r-‘)

    复合辛普森公式:

    function y=Simpsons(f,a,b,h)

    syms t;

    t= findsym(sym(f));

    n=(b-a)/h;

    l=0;

    m=4*subs(sum(f),t,(a+h/2));

    for k=1:n-1

    xk=a++h*k;

    l=l+2*subs(sym(f),t,xk);

    end

    for i=1:n-1

    xi=a+h/2+h*i;

    m=m+4*subs(sym(f),t,xi);

    end

    I1=(h/6)*(subs(sym(f),t,a)+l+m+subs(sym(f),t,b));

    h=(b-a)/(n-1);

    n=(b-a)/h;

    l=0;

    m=4*subs(sum(f),t,(a+h/2));

    for k=1:n-1

    xk=a++h*k;

    l=l+2*subs(sym(f),t,xk);

    end

    for i=1:n-1

    xi=a+h/2+h*i;

    m=m+4*subs(sym(f),t,xi);

    end

    I2=(h/6)*(subs(sym(f),t,a)+l+m+subs(sym(f),t,b));

    y=abs(I2-I1);

    y=vpa(y,10);

    通过图像对比可知,复合辛普森公式精度更高。

    (4)是否存在某个值,当小于这个值之后,再继续减小,计算结果不再有改进?为什么?

    复合求积公式:

    syms x;

    f=4./(1+x.^2);

    a=0;b=1;

    h=0.001:0.004:0.2;

    v=zeros(1,10);

    for i=1:50

    v(i)=traprls(f,a,b,h(i));

    end

    plot(h,v,‘r-‘)

    复合辛普森公式:

    通过图像可以发现,当h<0.025后,精度不再有显著改变。

    3. 分别用三点和五点Gauss-Legendre公式计算积分

    程序:

    function I = IntGaussLegen(f,a,b,n)

    syms t;

    t= findsym(sym(f));

    ta = (b-a)/2;

    tb = (a+b)/2;

    switch n

    case 0,

    I=2*ta*subs(sym(f),t,tb);

    case 1,

    I=ta*(subs(sym(f),t,ta*0.5773503+tb)+...

    subs(sym(f),t,-ta*0.5773503+tb));

    case 2,

    I=ta*(0.55555556*subs(sym(f),t,ta*0.7745967+tb)+...

    0.55555556*subs(sym(f),t,-ta*0.7745967+tb)+...

    0.88888889*subs(sym(f),t,tb));

    case 3,

    I=ta*(0.3478548*subs(sym(f),t,ta*0.8611363+tb)+...

    0.3478548*subs(sym(f),t,-ta*0.8611363+tb)+...

    0.6521452*subs(sym(f),t,ta*0.3398810+tb) +...

    0.6521452*subs(sym(f),t,-ta*0.3398810+tb));

    case 4,

    I=ta*(0.2369269*subs(sym(f),t,ta*0.9061793+tb)+...

    0.2369269*subs(sym(f),t,-ta*0.9061793+tb)+...

    0.4786287*subs(sym(f),t,ta*0.5384693+tb) +...

    0.4786287*subs(sym(f),t,-ta*0.5384693+tb)+...

    0.5688889*subs(sym(f),t,tb));

    case 5,

    I=ta*(0.1713245*subs(sym(f),t,ta*0.9324695+tb)+...

    0.1713245*subs(sym(f),t,-ta*0.9324695+tb)+...

    0.3607616*subs(sym(f),t,ta*0.6612094+tb)+...

    0.3607616*subs(sym(f),t,-ta*0.6612094+tb)+...

    0.4679139*subs(sym(f),t,ta*0.2386292+tb)+...

    0.4679139*subs(sym(f),t,-ta*0.2386292+tb));

    end

    I=simplify(I);

    I=vpa(I,6);

    三点:

    syms x

    f=x.*exp(x)./((1+x)^2);

    a=0;b=1;

    a=IntGaussLegen(f,a,b,2)

    a =

    0.359187

    五点:

    a =

    0.359141

    展开全文
  • 1. 用1阶至4阶Newton-Cotes公式计算积分 程序: function I = NewtonCotes(f,a,b,type) % syms t; t=findsym(sym(f)); I=0; switch type case 1, I=((b-a)/2)*(subs(sym(f...

     

     

    1. 用1阶至4阶Newton-Cotes公式计算积分

                             

    程序:

    function I = NewtonCotes(f,a,b,type)

    %

    syms t;

    t=findsym(sym(f));

    I=0;

    switch type

        case 1,

            I=((b-a)/2)*(subs(sym(f),t,a)+subs(sym(f),t,b));

            

        case 2,

            I=((b-a)/6)*(subs(sym(f),t,a)+4*subs(sym(f),t,(a+b)/2)+...

                subs(sym(f),t,b));

           

        case 3,

            I=((b-a)/8)*(subs(sym(f),t,a)+3*subs(sym(f),t,(2*a+b)/3)+...

                3*subs(sym(f),t,(a+2*b)/3)+subs(sym(f),t,b));

           

       case 4,

            I=((b-a)/90)*(7*subs(sym(f),t,a)+...

                32*subs(sym(f),t,(3*a+b)/4)+...

                12*subs(sym(f),t,(a+b)/2)+...

                32*subs(sym(f),t,(a+3*b)/4)+7*subs(sym(f),t,b));

          

        case 5,

            I=((b-a)/288)*(19*subs(sym(f),t,a)+...

                75*subs(sym(f),t,(4*a+b)/5)+...

                50*subs(sym(f),t,(3*a+2*b)/5)+...

                50*subs(sym(f),t,(2*a+3*b)/5)+...

                75*subs(sym(f),t,(a+4*b)/5)+19*subs(sym(f),t,b)); 

           

        case 6,

            I=((b-a)/840)*(41*subs(sym(f),t,a)+...

                216*subs(sym(f),t,(5*a+b)/6)+...

                27*subs(sym(f),t,(2*a+b)/3)+...

                272*subs(sym(f),t,(a+b)/2)+...

                27*subs(sym(f),t,(a+2*b)/3)+...

                216*subs(sym(f),t,(a+5*b)/6)+...

                41*subs(sym(f),t,b));

           

        case 7,

            I=((b-a)/17280)*(751*subs(sym(f),t,a)+...

                3577*subs(sym(f),t,(6*a+b)/7)+...

                1323*subs(sym(f),t,(5*a+2*b)/7)+...

                2989*subs(sym(f),t,(4*a+3*b)/7)+...

                2989*subs(sym(f),t,(3*a+4*b)/7)+...

                1323*subs(sym(f),t,(2*a+5*b)/7)+...

                3577*subs(sym(f),t,(a+6*b)/7)+751*subs(sym(f),t,b));

    end

     

    syms x

    f=exp(-x).*sin(x);

    a=0;b=2*pi;

    I = NewtonCotes(f,a,b,1)

     

    N=1:

    I =

    0

    N=2:

    I =

    0

    N=3:

    I =

    (pi*((3*3^(1/2)*exp(-(2*pi)/3))/2 - (3*3^(1/2)*exp(-(4*pi)/3))/2))/4

    N=4:

    I =

    (pi*(32*exp(-pi/2) - 32*exp(-(3*pi)/2)))/45

     

    2. 已知,因此可以通过数值积分计算的近似值。

     (1)分别取和,利用复合梯形公式和复合Simpson公式计算的近似值;

    程序:

    function Y= CombineTraprl(f,a,b,h)

    %用复合梯形公式计算积分

    syms t;

    t= findsym(sym(f));

    n=(b-a)/h;

    I1= subs(sym(f),t,a);

    l=0;

    for k=1:n-1        

      xk=a+h*k;        

          l=l+2*subs(sym(f),t,xk);

    end

    Y=(h/2)*(I1+l+subs(sym(f),t,b));

     

     

    syms x

    f=4/(1+x^2);

    a=0;b=1;

    y= CombineTraprl(f,a,b,0.1);

    vpa(y,6)

    h=0.1:

    ans =

    3.13993

    H=0.2:

    ans =

     

    1.04498

    复合辛普森:

    function Y= CombineSimpson(f,a,b,h)

    %用复合辛普森公式计算积分

    syms t;

    t= findsym(sym(f));

    n=(b-a)/h;

    I1= subs(sym(f),t,a);

    l=0;

    for k=1:n-1        

      xk=a+h*k;        

          l=l+2*subs(sym(f),t,xk);

    end

    l2=0;

    for k=1:n-1

        xk2=a+h*(k+1)/2;

        l2=l2+4*subs(sym(f),t,xk2);

    end

    Y=(h/6)*(I1+l+l2+subs(sym(f),t,b));

     

    H=0.1:

    ans =

     

    3.22605

    H=0.2:

    ans =

     

    2.93353

     

     (2)把区间[0,1] 等分,利用复合梯形公式和复合Simpson公式计算的近似值,若要求误差不超过,问需要把区间[0,1]划分成多少等份;

    function n=trap(f,a,b)

    syms t;

    t= findsym(sym(f));

    I=zeros(1,500);

    I(1)=((b-a)/2)*(subs(sym(f),t,a)+subs(sym(f),t,b));

    I(2)=((b-a)/4)*(subs(sym(f),t,a)+2*subs(sym(f),t,(b-a)/2)+subs(sym(f),t,b));

    k=3;

    while((I(k-1)-I(k-2))>1/2*10^(-6))

        l=0;

    for i=1:k-1        

      xi=a+(b-a)/k*i;        

          l=l+2*subs(sym(f),t,xi);

    end

    I(k)=((b-a)/(2*k))*(subs(sym(f),t,a)+l+subs(sym(f),t,b));

    k=k+1;

    end

    n=k-1;

     

    syms x;

    f=4./(1+x.^2);

    a=0;b=1;

    n=trap(f,a,b)

    n =

     

    88

    复合辛普森公式:

    function n=Simpson(f,a,b)

    syms t;

    t= findsym(sym(f));

    I=zeros(1,500);

    I(1)=((b-a)/6)*(subs(sym(f),t,a)+4*subs(sym(f),t,(b-a)/2)+subs(sym(f),t,b));

    I(2)=((b-a)/12)*(subs(sym(f),t,a)+4*subs(sym(f),t,(b-a)/4)+4*subs(sym(f),t,3*(b-a)/4)+2*subs(sym(f),t,(b-a)/2)+subs(sym(f),t,b));

    k=3;

    while((I(k-1)-I(k-2))>1/2*10^(-6))

        l=0;

        m=4*subs(sum(f),t,(a+((a+b)/(2*k))));

    for i=1:k-1        

      xi=a+(b-a)/k*i;        

          l=l+2*subs(sym(f),t,xi);

    end

    for j=1:k-1

        xj=a+(b-a)/(k*2)+(b-a)/k*j;

        m=m+4*subs(sym(f),t,xj);

    end

    I(k)=((b-a)/(2*k))*(subs(sym(f),t,a)+l+m+subs(sym(f),t,b));

    k=k+1;

    end

    n=k-1;

     

    n =

     

         5

     (3)选择不同的,对两种复合求积公式,试将误差描述为的函数,并比较两种方法的精度。

    复合求积公式:

    function y=traprls(f,a,b,h)

    syms t;

    t= findsym(sym(f));

    n=(b-a)/h;

    l=0;

    for k=1:n-1        

      xk=a+h*k;        

          l=l+2*subs(sym(f),t,xk);

    end

    I1=(h/2)*(subs(sym(f),t,a)+l+subs(sym(f),t,b));

     

    h=(b-a)/(n-1);

    n=(b-a)/h;

    l=0;

    for k=1:n-1        

      xk=a+h*k;        

          l=l+2*subs(sym(f),t,xk);

    end

    I2=(h/2)*(subs(sym(f),t,a)+l+subs(sym(f),t,b));

     

    y=I2-I1;

    y=abs(y);

    y=vpa(y,8);

     

    syms x;

    f=4./(1+x.^2);

    a=0;b=1;

    h=0.01:0.05:0.5;

    v=zeros(1,10);

    for i=1:10

        v(i)=traprls(f,a,b,h(i))

    end

    v

    plot(h,v,'r-')

     

    复合辛普森公式:

    function y=Simpsons(f,a,b,h)

    syms t;

    t= findsym(sym(f));

    n=(b-a)/h;

    l=0;

    m=4*subs(sum(f),t,(a+h/2));

    for k=1:n-1        

      xk=a++h*k;        

          l=l+2*subs(sym(f),t,xk);

    end

    for i=1:n-1

        xi=a+h/2+h*i;

        m=m+4*subs(sym(f),t,xi);

    end

    I1=(h/6)*(subs(sym(f),t,a)+l+m+subs(sym(f),t,b));

     

    h=(b-a)/(n-1);

    n=(b-a)/h;

    l=0;

    m=4*subs(sum(f),t,(a+h/2));

    for k=1:n-1        

      xk=a++h*k;        

          l=l+2*subs(sym(f),t,xk);

    end

    for i=1:n-1

        xi=a+h/2+h*i;

        m=m+4*subs(sym(f),t,xi);

    end

    I2=(h/6)*(subs(sym(f),t,a)+l+m+subs(sym(f),t,b));

     

    y=abs(I2-I1);

    y=vpa(y,10);

     

    通过图像对比可知,复合辛普森公式精度更高。

     (4)是否存在某个值,当小于这个值之后,再继续减小,计算结果不再有改进?为什么?

    复合求积公式:

    syms x;

    f=4./(1+x.^2);

    a=0;b=1;

    h=0.001:0.004:0.2;

    v=zeros(1,10);

    for i=1:50

        v(i)=traprls(f,a,b,h(i));

    end

    plot(h,v,'r-')

     

     

    复合辛普森公式:

     

    通过图像可以发现,当h<0.025后,精度不再有显著改变。

    3. 分别用三点和五点Gauss-Legendre公式计算积分

                             

    程序:

    function I = IntGaussLegen(f,a,b,n)

    syms t;

    t= findsym(sym(f));

    ta = (b-a)/2;

    tb = (a+b)/2;

    switch n

        case 0,

            I=2*ta*subs(sym(f),t,tb);

           

        case 1,

            I=ta*(subs(sym(f),t,ta*0.5773503+tb)+...

                subs(sym(f),t,-ta*0.5773503+tb));

           

        case 2,

            I=ta*(0.55555556*subs(sym(f),t,ta*0.7745967+tb)+...

                0.55555556*subs(sym(f),t,-ta*0.7745967+tb)+...

                0.88888889*subs(sym(f),t,tb));

              

        case 3,

            I=ta*(0.3478548*subs(sym(f),t,ta*0.8611363+tb)+...

                0.3478548*subs(sym(f),t,-ta*0.8611363+tb)+...

                0.6521452*subs(sym(f),t,ta*0.3398810+tb) +...

                0.6521452*subs(sym(f),t,-ta*0.3398810+tb));

             

        case 4,

            I=ta*(0.2369269*subs(sym(f),t,ta*0.9061793+tb)+...

                0.2369269*subs(sym(f),t,-ta*0.9061793+tb)+...

                0.4786287*subs(sym(f),t,ta*0.5384693+tb) +...

                0.4786287*subs(sym(f),t,-ta*0.5384693+tb)+...

                0.5688889*subs(sym(f),t,tb));

    case 5,

            I=ta*(0.1713245*subs(sym(f),t,ta*0.9324695+tb)+...

                0.1713245*subs(sym(f),t,-ta*0.9324695+tb)+...

                0.3607616*subs(sym(f),t,ta*0.6612094+tb)+...

                0.3607616*subs(sym(f),t,-ta*0.6612094+tb)+...

                0.4679139*subs(sym(f),t,ta*0.2386292+tb)+...

                0.4679139*subs(sym(f),t,-ta*0.2386292+tb));

    end

     

    I=simplify(I);

    I=vpa(I,6);

     

    三点:

    syms x

    f=x.*exp(x)./((1+x)^2);

    a=0;b=1;

    a=IntGaussLegen(f,a,b,2)

    a =

    0.359187

    五点:

    a =

    0.359141

    转载于:https://www.cnblogs.com/wander-clouds/p/9940971.html

    展开全文
  • 《复合梯形和复合辛普森MATLAB程序》由会员分享,可在线阅读,更多相关《复合梯形和复合辛普森MATLAB程序(10页珍藏版)》请在人人文库网上搜索。1、实 验 报 告课程名称数值分析实验项目名称数值...复合梯形公式:Tn=...
  • MATLAB 复化梯形公式、复化Simpson公式

    千次阅读 2021-05-20 10:53:18
    复化梯形公式 Tn.m文件: function Tn=Tn(n) % n代表区间数 a = -2; % 区间下界 b = 2; % 区间下界 h=(b-a)/n; sum=0; for k=1:n-1 sum=sum+f(a+k.*h); end Tn=(f(a)+2*sum+f(b))*h/2; end 复化Simpson...
  • 2 分别用复化梯形公式复化 Simpson 公式计算定积分 1+ ex dx 取 n=2,4,8,16 0 分别验证结果精确值I=4.006994 复化梯形公式求定积分: function I=tquad(x,y) %复化梯形求积公式其中 %x 为向量被积函数自变量的等距...
  • 复合梯形和复合辛普森MATLAB程序.doc

    千次阅读 2021-04-20 04:59:59
    ####实 验 报 告课程名称数值分析实验项目名称数值积分实验类型上机实验学时班级学号姓名指导...复合梯形公式:Tn=2;2.复合辛普森公式:Sn=[f(a)+f(b)+2+4];以上两种算法都是将a-b之间分成多个小区间(n),则h=(b-a)...
  • 复化梯形公式matlab

    千次阅读 2020-12-24 18:02:34
    根据题意和复化梯形公式、复化辛普森公式的原理编辑程序求解代码如下: Matlab 代码 clc s=quad('sin(x)./x',0,1) p1=zeros(10,1); p2=......(xk1)] ; 根据题意和复化梯形公式、复化辛普森公式的原理编辑程序求解...
  • matlab中利用复化梯形公式和复化simpson公式实现积分运算,对于数值计算类课程很有帮助。
  • 计算定积分,在函数体中修改函数名和上下限以及误差精度。 matlab程序m文件。
  • main.mg=@(t)exp(-t.^2);x=linspace(0,5,100);y1=zeros(1,100);y2=zeros(1,100);for i = 1:100y1(i)=2/sqrt(pi)*Simpson(g,0,x(i),1000); %幸普森公式y2(i)=2/sqrt(pi)*trapezoidal(g,... %复合梯形公式endplot(x,y1...
  • 分别用复合梯形及复合辛普森求积计算积分, 给出误差中关于h的函数, 并与积分精确值比较两个公式的精度, 是否存在一个最小的h, 使得精度不能再被改善? (2) 用龙贝格求积计算完成问题(1). (3) 用自适应辛普森积分, 使...
  • 复合梯形公式和复合辛普森求积公式计算。      ​ 复合梯度代码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function T_n=fht(a,b,n) h=(b-a)/n; for k=0:n x(k+1)=a+k*h; if...
  • Matlab实现复化求积公式梯形

    千次阅读 2021-07-05 16:21:50
    实验条件 算法设计 实验用例 实验要求 代码实现 a=0; b=3.14159265358979323846; %disp(b); %b的输出是3.1416; n=1;%刚刚开始是1等分 h=(b-a)/n; w=10^(-6); t1=(h/2)*(exp(a)*cos(a)+exp... x=a+(((2*i-1)*h)/2)
  • 其中n可由第二个函数通过设定误差R_n求出满足的n。 function [op]=JF(fun,a,b,n,c) if (nargin<5) c='T'; end x1=(b-a)/2; x2=(b+a)/2; h=(b-a)./n; Sum=0; Sum_1=0; if c=='T' op=x1*fun(x2); elseif c=='X' ...
  • 2、学会复合梯形、复合Simpson和龙贝格求积分公式的编程与应用。3、探索二重积分在矩形区域的数值积分方法。佛山科学技术学院实 验 报 告课程名称 数值分析实验项目 数值积分专业班级 机械工程 姓 名 余红杰 学 号 ...
  • MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积-以及二重积分计算等)
  • 自适应梯形积分算法

    千次阅读 2020-12-05 09:38:28
    数值分析,自适应梯形积分算法及matlab代码。针对(100/x^2)sin(1/x)函数与普通梯形积分公式进行比较.
  • Matlab实现复化的梯形公式、Simpson公式与Cotes公式的比较
  • 梯形递推公式

    2021-03-26 22:55:14
    T2=12T1+h2f(xk+12)T_2 = \frac{1}{2}T_1 + \frac{h}{2}f(x_{k+\frac{1}{2}})T2​=21​T1​+2h​f(xk+21​​) 将此关系式关于 kkk从 000到 n−1n-1n−1累加求和,即可导出下列递推公式 T2n=12Tn+h2∑k=0n−1f(xk+12)...
  • [摘要]佛山科学技术学院 实 验 报 告 课程名称 数值分析 实验项目 ... 2、学会复合梯形、复合Simpson和龙贝格求积分公式的编程与应用。3、探索二重积分在矩形区域的数值积分方法。二、实验要求 按照题目要求完成实...
  • matlab高斯积分公式

    千次阅读 2021-04-20 04:38:03
    编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方 《数值分析》实验报告 一、实验目的与要求 1.掌握高斯消去法的基本思路和迭代......MATLAB计算概率_数学_自然科学_专业资料。一、实验名称已知随机...
  • 数值积分的基本思想由积分中值定理可知,在积分区间 内存在一点 ,成立 式的几何意义即为:底为 而高为 的矩形的面积恰等于所求曲边梯形的面积 。因此,要想求出 式左端积分,我们只需要知道三个值: 即可,这里 是...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 141
精华内容 56
关键字:

matlab复合梯形公式误差

matlab 订阅