数值计算实验—实验报告3
一、实验项目:Romberg算法 二、实验目的和要求
通过本实验可以使学生理解如何在计算机上使用数值方法计算定积分f(x)dx的近似值。
ab三、实验内容
h=b-a; k=1;
T(1,1)=(b-a)*(f(a)+f(b))/2; err=1;
while(err>eps) new=0;
for j=1:2^(k-1); x=a+(2*j-1)*h/2; new=new+f(x); end
T(k+1,1)=(T(k,1)+h*new)/2; for m=1:k
T(k+1,m+1)=(4^m*T(k+1,m)-T(k,m))/(4^m-1); end
err=abs(T(k+1,m+1)-T(k,m)); k=k+1; h=h/2; end
k,T,m
(1)将上述程序录入计算机,并进行调试
(2)用调试好的程序计算0sin(x)/xdx的近似值,取精度为eps=10^-8。 步骤一:先编制计算函数值的程序
function z=f(x) if(x!=0)
z=sin(x)/x; else z=1; end
步骤二:执行上述Romberg算法,输出的T—数表为(参考) T= 0.920735492403948 0 0 第1页 / 共3页
0 0 1
0.939793284806177 0.944513521665390 0.945690863582701 0.945985029934386 0.946145882273587 0.946086933951794 0.946083310888472 0.946083085384948 0 0.946083004063674 0.946083069350917 0.946083070351379 0 0 0.946083070387223 0.946083070367260 0 0 0 0.946083070367181
(3)用下列方法计算积分0(1(b^2)*(cos(t))^2))^(0.5)dx的近似值,其中b分别取为0.1,0.3,0.5.0.7,0.9。
(a) Romberg
function z=f(x) b=0.1;
z=sqrt(1-b*b*cos(x)*cos(x)); end
b=0.1,T= 6.25169044565659 6.25169044565659 b=0.3,T= 5.99377677428558 5.99377677428558 b=0.5,T= 5.99377677428558 5.99377677428558 b=0.7,T= 4.48709181744950 4.48709181744950 b=0.9,T= 2.73877697975354 2.73877697975354 (b)复合的Simpson公式(n=16) h=(b-a)/16; X0=f(a)+f(b); X1=0; X2=0;
for i=1:15 x=a+i*h;
if(rem(i,2)==0) X2=X2+f(x); else
20 6.25169044565659 0 5.99377677428558 0 5.99377677428558 0 4.48709181744950 0 2.73877697975354 第2页 / 共3页
X1=X1+f(x); end end
X=h*(X0+4*X1+2*X2)/3; b=0.1,X= 6.26744776809318 b=0.3,X= 6.13933390904750 b=0.5,X= 5.86985288646431 b=0.7,X= 5.42275185873374 b=0.9,X= 4.68936847260762
四、实验总结
Romberg方法也称为逐次分半加速法。作为一种外推算法,它在不增加计算量的前提
下提高了误差的精度在等距基点的情况下,用计算机计算积分值通常都采用把区间逐次分半的方法进行,这样,前一次分割得到的函数值在分半以后仍可被利用,且易于编程。用数值计算的方法来实现数值积分的求解,被调用的函数需要清楚的描述所要执行的问题的求解过程,在matlab函数调用时,执行函数一定要与函数同名。
第3页 / 共3页
因篇幅问题不能全部显示,请点此查看更多更全内容