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