资源描述:
《实验报告 龙贝格算法.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、专业和班级姓名成绩学号课程名称数值计算方法实验名称数值积分实验目的505$误差的绝对值小于预先给定的误差限£o实验基本要求I.将伪码程序转换为程序录入计算机,并进行调试;2.将调试好的程序解决1・2个定积分的问题:3.分析数值结果实验的主要内容计算机上机实验报告本实验主要涉及定积分的数值求解,用Romberg公式计算定积分/=[/(%)力的近似值,自动选取步长,使相邻两次计算1・代码为:function[t]=romberg(f,a,b,e)t二zeros(15,4):t(1,1)=(b-a)/2*(f(a)+f(b)):f
2、ork=2:4sum=0:fori=l:2A(k-2)sum=su>+f(a+(2*i-l)*(b-a)/2*(k-1)):endt(k,1)=0.5*t(k-1,l)+(b-a)/2(k-1)*sum:fori=2:kt(k,i)=(4*(i-l)*t(k,i-l)-t(k-1,i-l))/(4*(i-l)-l):endendfork=5:15sum=0:fori=l:2*(k-2)sum=su»+f(a+(2*i-l)*(b-a)/2-(k-1)):endt(k,1)=0.5*t(k-1,l)+(b-a)/2-(k-l)
3、*sum;fori=2:4t(k,i)=(4*(i-l)*t(k,(k-1,i-1))/(4*(i-l)-l):endifk>6ifabs(t(k,4)-t(k-1,4))2str(t(k,4))]):break:endendifk>=15disperse]):end2.解决问题:(1)计算sin(x)/x从10竹100)到1的积分:»f=inline(,sin(x)/x7x,)f=Inlinefunction:f(x)=sin(x)/x»romberg(f,10A(-100),1,5*10A(
4、-7))答案0.94608ans=0.92070000.93980.9461000.94450.94610.946100.94570.94610.94610.94610.94600.94610.94610.94610.94610.94610.94610.94610.94610.94610.94610.946100000000000000000000000000(2)、计算从»f=inline(M/00f(x)=4/(1+〉F(l+xA2),x,)00:A2)0到100的积分的结果为:f=Inlinefunction:f(x
5、)=4/(l+xA2)»romberg(f,0,l,0.5e-6)答案3.1416ans=3.00000003.10003.1333003.13123.14163.142103.13903.14163.14163.14163.14093.14163.14163.14163.14143.14163.14163.14163.14163.14163.14163.141600000000000000000000000000000000另一种代码:function[I,n]=algorithm(f,a,b,eps)h=b-a;fa=f
6、eval(f,a):fb=feval(f,b):Tl=h*(fa+fb)/2:T2=Tl/2+h*feval(f,a+h/2)/2;n=l:□whileabs(T1-T2)>=epsh=h/2;Tl=T2;S=0;x=a+h/2;Hwhilex>al
7、gorithm(f,0^h0.5e-6)ans=3.1416研究与探讨龙贝格求积公式也称为逐次分半加速法。它是在梯形公式、辛卜生公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法。作为一种外推算法,它在不增加计算量的前提下提高了误差的精度.用龙贝格计算积分是十分方便的,只要知道f(X),就可以知道积分是多少了,并且误差在误差范围之内,这在数学的计算中是十分重要的,因为有的两数的原函数不是十分的简单,因此计算积分也是很困难的。在用matlab写代码的时候,我发现龙贝格算法是十分方便的,算法的代码是通用的。