精华内容
下载资源
问答
  • 采用复合梯形公式与复合辛普森公式,计算 sin(x)/x 在[0, 1]范围内的积分。采样点数 目为 5、9、17、33。
  • 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

    原文:https://www.cnblogs.com/wander-clouds/p/9940971.html

    展开全文
  • 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

    展开全文
  • function q=DblSimpson(f,a,A,b,B,m,n)if(m==1 &... n==1) %辛普森公式q=((B-b)*(A-a)/9)*(subs(sym(f),findsym(sym(f)),{a,b})+...subs(sym(f),findsym(sym(f)),{a,B})+...subs(sym(f),findsym(sym(f)),...

    function q=DblSimpson(f,a,A,b,B,m,n)

    if(m==1 && n==1)           %辛普森公式

    q=((B-b)*(A-a)/9)*(subs(sym(f),findsym(sym(f)),{a,b})+...

    subs(sym(f),findsym(sym(f)),{a,B})+...

    subs(sym(f),findsym(sym(f)),{A,b})+...

    subs(sym(f),findsym(sym(f)),{A,B})+...

    4*subs(sym(f),findsym(sym(f)),{(A-a)/2,b})+...

    4*subs(sym(f),findsym(sym(f)),{(A-a)/2,B})+...

    4*subs(sym(f),findsym(sym(f)),{a,(B-b)/2})+...

    4*subs(sym(f),findsym(sym(f)),{A,(B-b)/2})+...

    16*subs(sym(f),findsym(sym(f)),{(A-a)/2,(B-b)/2}));

    else                       %复合辛普森公式

    q=0;

    for i=0:n-1

    for j=0:m-1

    x=a+2*i*(A-a)/2/n;

    y=b+2*j*(B-b)/2/m;

    x1=a+(2*i+1)*(A-a)/2/n;

    y1=b+(2*j+1)*(B-b)/2/m;

    x2=a+2*(i+1)*(A-a)/2/n;

    y2=b+2*(j+1)*(B-b)/2/m;

    q=q+subs(sym(f),findsym(sym(f)),{x,y})+...

    subs(sym(f),findsym(sym(f)),{x,y2})+...

    subs(sym(f),findsym(sym(f)),{x2,y})+...

    subs(sym(f),findsym(sym(f)),{x2,y2})+...

    4*subs(sym(f),findsym(sym(f)),{x,y1})+...

    4*subs(sym(f),findsym(sym(f)),{x2,y1})+...

    4*subs(sym(f),findsym(sym(f)),{x1,y})+...

    4*subs(sym(f),findsym(sym(f)),{x1,y2})+...

    16*subs(sym(f),findsym(sym(f)),{x1,y1});

    end

    end

    end

    q=((B-b)*(A-a)/36/m/n)*q;

    展开全文
  • 使用积分,复合辛普森求积公式的计算,运行良好
  • 复合梯形和复合辛普森MATLAB程序.doc

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

    ####

    实 验 报 告

    课程名称数值分析实验项目名称数值积分实验类型上机实验学时班级学号姓名指导教师实验室名称实验时间2014.11.19实验成绩预习部分实验过程

    表现实验报告

    部分总成绩教师签字日期

    实验三 数值积分

    一.数值积分的基本思想

    1.复合梯形公式:Tn=2;

    2.复合辛普森公式:Sn=[f(a)+f(b)+2+4];

    以上两种算法都是将a-b之间分成多个小区间(n),则h=(b-a)/n,xk=a+kh, xk+1/2=a+(k+1/2)h,利用梯形求积根据两公式便可。

    3.龙贝格算法:在指定区间内将步长依次二分的过程中运用如下公式

    (1)Sn=T2n-Tn

    (2)Cn=S2n-Sn

    (3)Rn=C2n-Cn4

    T =T - T,k = 1,2,…

    二、计算流程图

    1、复合梯形和复合辛普森算法框图:

    下图是龙贝格算法框图:

    自适应辛普森积分算法流程框图:

    二.实验题目及实验目的

    实验题目:用不同数值方法计算积分 = -。

    (1)取不同的步长h。分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h,使得精度不能再被改善?

    (2)用龙贝格求积计算完成问题(1)。

    (3)用自适应辛普森积分,使其精度达到10。

    实验目的:

    了解并掌握matlab软件的基本编程、操作方法;

    初步了解matlab中的部分函数,熟悉循环语句的使用;

    通过上机进一步领悟用复合梯形、复合辛普森公式,以及用龙贝格求积

    方法计算积分的原理。

    三.实验手段:

    指操作环境和平台:win7系统下MATLAB R2009a

    程序语言:一种类似C语言的程序语言,但比C语言要宽松得多,非常方便。

    四.程序

    ①复合梯形求积程序

    function t=TiXing_quad(a,b,.h)

    format long

    x=a:h:b;

    y=sqrt(x).*log(x);

    y(1)=0;

    t=0;

    for k=1:(b-a)/h,

    t= t+y(k)+y(k+1);

    end

    t=t*h/2;

    ②复合辛普森求积程序

    function s=Simpson_quad(a,b,h)

    format long

    x=a:h:b;

    y=sqrt(x).*log(x);

    z=sqrt(x+h/2).*log(x+h/2);

    y(1)=0;

    s=0;

    for k=1:(b-a)/h,

    s= s+y(k)+y(k+1)+4*z(k);

    end

    s=s*h./6;

    ③龙贝格求积程序

    function [q,R]=Romberg(a,b,eps)

    h=b-a;

    R(1,1)=h*(0+sqrt(b).*log(b))/2;

    M=1;

    J=0;

    err=1;

    while err>eps

    J=J+1;

    h=h/2;

    S=0;

    for p=1:M

    x=a+h*(2*p-1);

    S=S+sqrt(x).*log(x);

    end

    R(J+1,1)=R(J,1)/2+h*S;

    M=2*M;

    for k=1:J

    R(J+1,k+1)=R(J+1,k)+(R(J+1,k)-R(J,k))/(4^k-1);

    end

    err=abs(R(J+1,J)-R(J+1,J+1));

    end

    q=R(J+1,J+1);

    控制台输入代码:

    (1)

    >> a=0;

    >> b=1;

    >> h=0.2;

    >> t=TiXing_quad(a,b,h)

    >> s=Simpson_quad(a,b,h)

    >> h=0.02;

    >> t=TiXing_quad(a,b,h)

    >> s=Simpson_quad(a,b,h)

    >> h=0.002;

    >> t=TiXing_quad(a,b,h)

    >> s=Simpson_quad(a,b,h)

    (2)

    >> a=0;

    >> b=1;

    >> eps=10^-8;

    >> [quad,R]=Romberg(a,b,eps)

    (3)

    >> a=0;

    >> b=1;

    >> eps=10^-4;

    >> q=ZiShiYingSimpson('sqrt(x).*log(x)',a,b,eps)

    实验结果比较与分析

    (1)

    h = 0.2时,结果如下:

    h = 0.02时,结果如下:

    h = 0.002时;得到的结果如下:

    由结果(1)可知对于同一步长h,复合辛普森法求积分精度明显比复合梯形法求积的精度要高,且当步长取不

    展开全文
  • 辛普森求积公式复合辛普森求积公式 Matlab 实现

    万次阅读 多人点赞 2017-11-04 19:46:34
    辛普森求积公式复合辛普森求积公式 Matlab 实现辛普森求积公式 利用区间[a,b]的端点及中点计算积分 ∫x2x1f(x)dx≈b−a6×(f(a)+4×f(b−a2)−+f(b)) \int_{x_1}^{x_2} f(x)dx \approx \frac{b-a}{6} \times ...
  • 《复合梯形和复合辛普森MATLAB程序》由会员分享,可在线阅读,更多相关《复合梯形和复合辛普森MATLAB程序(10页珍藏版)》请在人人文库网上搜索。1、实 验 报 告课程名称数值分析实验项目名称数值积分实验类型上机实验...
  • 复化梯形公式与辛普森公式matlab程序【程序代码】cclc;disp('1.复化梯形公式求解');disp('2.simpson公式求解');disp('请进行选择:');c=input(' ');if c==1clc;disp('复化梯形公式');disp('请输入积分下限 ');a=...
  • 二分法、牛顿迭代法、复合梯形公式、复合辛普森公式、改进欧拉公式、四阶龙格库塔公式matlab代码合集,带有一份数据分析word文档
  • 复合辛普森公式求解定积分 matlab

    千次阅读 2021-03-31 09:19:56
    复合辛普森积分 已知函数表达式与积分区间 精度esp正相关与1/num %复合辛普森积分 %已知函数表达式与积分区间 clc;clear; a=0;b=1;%积分范围 num=1000;%积分准确度 h=(b-a)/(2*num); f=@(x)exp(-x);%积分表达式 I=0;...
  • 采用等距点的向量 x 以及相应的函数值向量 y,并通过复合辛普森规则返回数值积分。 注意:设计为量子散射计算的最后阶段,其中被积函数甚至不接近封闭函数,因此缺少函数输入。 也意识到等距点的限制。 对不起。
  • 《复化梯形公式-辛普森公式matlab程序》由会员分享,可在线阅读,更多相关《复化梯形公式-辛普森公式matlab程序(2页珍藏版)》请在人人文库网上搜索。1、复化梯形公式与辛普森公式matlab程序【程序代码】cclc;...
  • 包含代码和文档 采用复化梯形公式和复化辛普森公式求积分,并与精确值进行比较得下表。 采用复化梯形公式和复化辛普森公式求积分,并与精确值进行比较得下表。
  • 复合辛普森公式

    2021-05-22 06:06:23
    复合辛普森公式》由会员分享,可在线阅读,更多相关《复合辛普森公式(5页珍藏版)》请在人人文库网上搜索。1、精选文档实验5 复合辛普森公式李涛 201226100108 计自1201一、实验目的l 用复合辛普森公式计算积分,使...
  • 复化梯形公式-辛普森公式matlab程序.doc (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.90 积分复化梯形公式与辛普森公式matlab程序【程序代码】cclc;disp...
  • X 0 1 4 9 16 25 36 49 64 Y 0 1 2 3 4 5 6 7 8 三次样条,复合梯形公式,复合辛普森公式,龙贝格公式求积分,数值分析第5版李庆扬
  • 用复合梯形公式复合辛普森求积公式计算。      ​ 复合梯度代码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function T_n=fht(a,b,n) h=(b-a)/n; for k=0:n x(k+1)=a+k*h; if...
  • %复化辛普森公式 function T_n = C_t_r(f,n,a,b) %f为函数,n为精度,a,b为区间端点 h=(b-a)/n; %f=sqrt(x); for i=0:n     x(i+1)=a+i*h; end T_1=h/6*(f(a)+f(b)); T_2=0; T_3=0; for j=2:n  &...
  • [摘要]佛山科学技术学院 实 验 报 告 课程名称 数值分析 实验项目 ... 2、学会复合梯形、复合Simpson和龙贝格求积分公式的编程与应用。3、探索二重积分在矩形区域的数值积分方法。二、实验要求 按照题目要求完成实...
  • matlab代码
  • 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...
  • 变步长复化辛普森公式计算积分

    千次阅读 2021-04-22 08:33:01
    变步长复化辛普森公式计算积分 matlab编程2. 编写用变步长复化辛普森公式计算积分 baf(x)dx 的程序。1用上面编写的程序计算下列积分并分析计算结果 (1)0cosxdx (2)0xcosxdx (3) 220xdx程序:function S=...
  • 常用的有复合梯形公式和复合辛普森公式。 龙贝格(Romberg)求积公式 前面介绍的复合求积方法可提高求积精度,如若精度仍不够,则可通过将步长逐次减半的方式来提高精度。如对复合梯形公式可导出其递推公式 其中 表示...
  • 1. 掌握复合梯形公式与复合辛普森公式的基本思想。2. 编程实现用复合梯形公式与复合辛普森公式求积分。3. 熟悉matlab软件的使用。 二 实验内容1、用复合梯形公式计算积分 I=4/(1+x2)dx ,求它0到1的积分。精确度为...
  • 梯形公式辛普森Matlab

    千次阅读 2020-12-27 14:14:10
    梯形公式: function y = TXGS(a,b,n,f) h = (b - a) / n; x = linspace(a,b,n+1); yy = h * feval(f,x); yy(1) = yy(1) / 2; yy(n+1) = yy(n+1) / 2; y = sum(yy); 运行结果: >> f(x)=inline('sqrt(4-sin(x...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 196
精华内容 78
关键字:

复合辛普森公式matlab

matlab 订阅
友情链接: corc.rar