function FHQJ
k=2;
m=4;
a=0; % a,b 为区间
b=2;
epsilon=1e-3; % 精确度
fun=@(x.)sqrt(-x.^2+k*x)+m;
n =1;
h=(b-a)/2;
y0=h*(feval(fun,a)+feval(fun,b));
yiter=y0;
while 1
step =2^(n-1);
f=sum(feval(fun,a+(1:2:2*step-1)*h));
y=y0/2+h*f;
if abs(y-y0)<3*epsilon
break;
end
h=h/2;
y0=y;
yiter=[yiter,y0];
n=n+1;
end
yiter
disp(y);
Error=double(int('sqrt(-x^2+2*x)+4','x',0,2)-y); %% 与真值误差
disp(Error);