%**************************************************************************
%(第七题)用Romberg方法计算定积分--3111312053龚小林 硕1080
%**************************************************************************
clear
clc
format long
esp=1e-5;
b=0.8;
a=0.3;
Nmax=20;
t(1,1)=(b-a)/2*(b7(a)+b7(b));%矩阵t的第1,2,3,4列分别为梯形公式,Simpson公式,Cotes公式及Romberg公式计算结果。
for k=2:Nmax
sum=0;
for i=1:2^(k-2)
sum=sum+b7(a+(2*i-1)*(b-a)/2^(k-1));
end
t(k,1)=0.5*t(k-1,1)+(b-a)/2^(k-1)*sum;
for i=2:min(k,4)
t(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-1);
end
if k>4
if abs(t(k,4)-t(k-1,4))<esp
disp(['利用romberg方法计算得定积分的值为',num2str(t(k,4),10)]);
disp(['此时迭代次数k=',num2str(k)]);
disp('此时存放迭代结果的矩阵t为')
t
break;
end
end
end
if k==Nmax
disp('迭代次数过大也不收敛,积分函数性态较差')
end