龙贝格算法求积分:
函数1:
function [s]=Tsum(a,b,n)%计算公式(4.3.1)中的累加项。
h=(b-a)/n;
s1=0;
for i=1:n
tmp=sin(a+(i-1/2)*h);
s1=s1+tmp;
end
s=h/2*s1;
函数2:
function [answer,r,q]=Romberg(a,b,e)%e为控制误差。
r(1)=((b-a)/2)*(sin(a)+sin(b));
q(1)=1/2*r(1)+Tsum(a,b,2^0);
q(2)=(4/(4-1))*q(1)-(1/(4-1))*r(1);
k=2;
while (abs(q(k)-r(k-1))>=e)
r=q;
q(1)=1/2*r(1)+Tsum(a,b,2^(k-1));
for i=1:k
q(i+1)=4^i/(4^i-1)*q(i)-1/(4^i-1)*r(i);
end
k=k+1;
end
answer=r(k-1);
脚本:
[Q,R,answer]=Romberg(0,pi/2,0.00001);%输出结果。