利用复合梯形公式计算定积分

function [I,n]=fuhe(f,a,b,eps)

if(nargin==3)

    eps=1.0e-4;

end

n=1;

h=(b-a)/2;

I1=0;

I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))*h;

while abs(I1-I2)>eps

    n=n+1;

    h=(b-a)/n;

    I1=I2;

    I2=0;

    for i=0:n-1

        x=a+h*i;

        x1=x+h;

        I2=I2+(subs(sym(f),findsym(sym(f)),x)+subs(sym(f),findsym(sym(f)),x1))*(h/2);

    end

end

% I=eval(I2);

I=I2;

n;

%求解文件脚本代码

[I,step]=fuhe('1/(x^2-1)',2,4,1.0e-4)

2)利用复合simpson公式计算定积分

%复化辛普森求解定积分函数

function [I,step]=ISimpson(f,a,b,eps)

if(nargin==3)

    eps=1.0e-4;

end

n=1;

h=(b-a)/2;

I1=0;

I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))*h;

while abs(I1-I2)>eps

    n=n+1;

    h=(b-a)/n;

    I1=I2;

    I2=0;

    for i=0:n-1

        x=a+h*i;

        x1=x+h;

         I2=I2+(h/6)*(subs(sym(f),findsym(sym(f)),x)+4*subs(sym(f),findsym(sym(f)),(x+x1)/2)+subs(sym(f),findsym(sym(f)),x1));

    end

end

% I=eval(I2);

I=I2;

step=n

%求解脚本文件

[I,step]=ISimpson('sin(x)',0,10,1.0e-4)

 运行结果:

 1)利用复合梯形公式计算定积分

I =

0.2945

n =

     15

2)利用复合simpson公式计算定积分

I =

      1.8393

step =

      13

原文地址:https://www.cnblogs.com/msyou/p/5890592.html