目录
1、概述
2、代码
3、结果
4、讨论
1、概述
在前面一章,我们已经梳理了Romberg算法的相关知识点,下面我们就直接上Matlab代码以及运行结果。
2、代码
function [T,n]=mromb(f,a,b,eps)
if nargin<4,eps=1e-6;end
h=b-a;
R(1,1)=(h/2)*(feval(f,a)+feval(f,b));
n=1;J=0;err=1;
while (err>eps)
J=J+1;h=h/2;S=0;
for i=1:n
x=a+h*(2*i-1);
S=S+feval(f,x);
end
R(J+1,1)=R(J,1)/2+h*S;
for k=1:J
R(J+1,k+1)=(4^k*R(J+1,k)-R(J,k))/(4^k-1);
end
err=abs(R(J+1,J+1)-R(J+1,J));
n=2*n;
end
R;
T=R(J+1,J+1);
3、结果
4、讨论
Romberg 算法的优点是:
1 )把积分化为代数运算 , 而实际上只需求 T1(i), 以后用递推可得。
2 )算法简单且收敛速度快 , 一般 4 或 5 次即能达到要求。
3 )节省存储量,算出的 T m (0) 可存入 T 1(0) 。
Romberg 算法的缺点是:
1 )对函数的光滑性要求较高。
2 )计算新分点的值时 , 这些数值的个数成倍增加