function Roberg
fprintf('Roberg 积分法\n\n');
a=0;b=1;eps=1e-8;
%a=input('a='); b=input('b=');eps=input('eps=');
h=(b-a)/2;
T(1,1)=h*(f(a)+f(b));
fprintf('T(1,1)=%11.10f \n',T(1,1));
k=2;n=1;
flag=0;
while flag~=1;
F=0;
for i=1:n
F=F+f(a+(2*i-1)*h);
end
T(1,k)=T(1,k-1)/2+h*F;
for m=2:k-1
T(m,k-m)=(4^m*T(m-1,k-m+1)-T(m-1,k-m))/(4^m-1);
if (k-m)==1 fprintf('\nT(%d,1)=%11.10f \n',m,T(m,1));end
end
if abs(T(m,1)-T(m-1,1))<eps
flag=1; fprintf('success \n');
else h=h/2;
n=2*n;
k=k+1;
end
end
function f=f(x)
f=4.0/(1.0+x*x);
评论2