网上的matble代码,哪里出错了啊

 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);

int求积分不适合用字符串,需要使用符号变量,程序已改如下

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);

syms x
Error=double(int(sqrt(-x^2+2*x)+4,x,0,2)-y); %% 与真值误差

disp(Error);