1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
% assignment2.m

function [number,error]=assignment2(a,b,e,n,t,number,error)
% inputs:
% a:积分下限
% b:积分上限
% e:容许误差
% t:n/2的y值
% n:n次分半
% outputs:
% number:分半法关于n的矩阵,log(n)*1 对数底为2
% error:误差矩阵,log(n)*1 对数底为2

if n==1
y=(sin(b)/b+sin(a)/a)*(b-a)/2;
else
y=t/2;
q=(b-a)/n;
for ii=1:n/2
y=y+q*sin(a+(2*ii-1)*(b-a)/n)/(a+(2*ii-1)*(b-a)/n);
end
number=[number n];
error=[error abs(y-t)/3];
end
if abs(y-t)<e*3
else
[number, error]=assignment2(a,b,e,n*2,y,number,error);
end

% 命令行输入
% [number, error]=assignment2(1,2,0.0001,1,0,[],[])
% n=number(end)
% plot(number,error)