Romberg数值积分实验报告
数值分析积分实验报告(3篇)

第1篇一、实验目的本次实验旨在通过数值分析的方法,研究几种常见的数值积分方法,包括梯形法、辛普森法、复化梯形法和龙贝格法,并比较它们在计算精度和效率上的差异。
通过实验,加深对数值积分理论和方法的理解,提高编程能力和实际问题解决能力。
二、实验内容1. 梯形法梯形法是一种基本的数值积分方法,通过将积分区间分割成若干个梯形,计算梯形面积之和来近似积分值。
实验中,我们选取了几个不同的函数,对积分区间进行划分,计算积分近似值,并与实际积分值进行比较。
2. 辛普森法辛普森法是另一种常见的数值积分方法,它通过将积分区间分割成若干个等距的区间,在每个区间上使用二次多项式进行插值,然后计算多项式与x轴围成的面积之和来近似积分值。
实验中,我们对比了辛普森法和梯形法的计算结果,分析了它们的精度差异。
3. 复化梯形法复化梯形法是对梯形法的一种改进,通过将积分区间分割成多个小区间,在每个小区间上使用梯形法进行积分,然后计算所有小区间积分值的和来近似积分值。
实验中,我们对比了复化梯形法和辛普森法的计算结果,分析了它们的精度和效率。
4. 龙贝格法龙贝格法是一种通过外推加速提高计算精度的数值积分方法。
它通过比较使用不同点数(n和2n)的积分结果,得到更高精度的积分结果。
实验中,我们使用龙贝格法对几个函数进行积分,并与其他方法进行了比较。
三、实验步骤1. 编写程序实现梯形法、辛普森法、复化梯形法和龙贝格法。
2. 选取几个不同的函数,对积分区间进行划分。
3. 使用不同方法计算积分近似值,并与实际积分值进行比较。
4. 分析不同方法的精度和效率。
四、实验结果与分析1. 梯形法梯形法在计算精度上相对较低,但当积分区间划分足够细时,其计算结果可以接近实际积分值。
2. 辛普森法辛普森法在计算精度上优于梯形法,但当积分区间划分较细时,计算量较大。
3. 复化梯形法复化梯形法在计算精度上与辛普森法相当,但计算量较小。
4. 龙贝格法龙贝格法在计算精度上优于复化梯形法,且计算量相对较小。
龙贝格算法-数值分析-实验报告

3 / 13
一、任务综述于分析
1.1 任务
1、 根据所掌握龙贝格算法,独立编写程序,实现具体问题的求解等; 2、 自己设计一个多项式,根据设定的代数多项式进行测试,调式程序; 3、 对所设计的程序解决实际问题并分析,撰写分析报告
1.2 分析
1、 首先先明确什么是龙贝格算法,了解他的基本原理,画出流程图,编写程序代码。 2、 自己设计一个多项式,对他利用龙贝格算法求出他的积分。并与真实值比较,检测程序是否有错误。 并进一步修改完善程序。可以多试几个多项式,来判断程序的正确性。 3、 任务三实际上是求平面曲线长的问题。利用弧长微分公式可求得结果。
四、测试 ................................................................................................................................................. 8
主要参考资料
《数值分析简明教程》 《数值分析课程设计》
王能超 陈越、童若锋
高等教育出版社 浙江大学出版社
教研室签字: 年 月 日
院签字: 年 月 日
2 / 13
目录
目录 ......................................................................................................................................................... 3 一、任务综述于分析 ............................................................................................................................. 4
实验二 数值积分实验

实验二数值积分实验一. 实验目的(1)熟悉数值积分与数值微分方法的基本思想,加深对数值积分与数值微分方法的理解。
(2)熟悉Matlab编程环境,利用Matlab实现具体的数值积分与数值微分方法。
二. 实验要求用Matlab软件实现复化梯形方法、复化辛甫生方法、龙贝格方法和高斯公式的相应算法,并用实例在计算机上计算。
三.实验内容1. 实验题目已知x(-+=的数据表)1xef x4sin Array分别编写用复化梯形法、复化辛甫生公法、龙贝格法、三点高斯法求积分⎰=10)(dxfIx近似值的计算机程序。
2. 设计思想1.复化Simpson公式:设计Simpson公式,即为设计含有3个节点(即为3阶精度)的Newton-Cotes 公式。
将区间划分为3等份,选取等分点作为求积节点构造求积公式,具有三阶精度的Simpson公式。
将区间[a,b]划分为n等分,步长为h=(b-a)/n,等分点xi=a+i*h,i=0,1,2,3…。
设计复化求积法,先用低阶求积公式求得每个子段上的积分值,然后再将它们累加求和,用各段积分之和作为所求积分的近似值。
即设计出复化Simpson公式。
2.复化梯形公式:将区间[a,b]划分为n等分,步长为h=(b-a)/n,等分点xi=a+i*h,i=0,1,2,3…。
设计复化求积法,先用低阶求积公式求得每个子段上的积分值,然后再将它们累加求和,用各段积分之和作为所求积分的近似值。
再根据梯形公式即可设计出复化梯形公式。
3.Romberg公式:再加工Cotes值。
将积分区间[a,b]划分为8等份,等分点xi=a+i*(b-a)/8,i=0,1,2…,8,则二分前后的Cotes值可求,再对求得的Cotes公式进行松弛,提高精度,设计出Romberg公式。
4.三点Gauss公式:根据Newton-Cotes公式,但对求积节点自由选择,适当选取待定参数使公式具有高精度,即设计出Gauss公式。
用romberg积分法计算积分

用romberg积分法计算积分
Romberg积分法是一种数值求积方法,用于计算定积分。
该方法可以通过递归的方式不断提高精度,并且收敛速度非常快。
具体实现方法如下:首先,将区间[a, b]划分为n个小区间,将每个小区间的长度设为h。
然后,使用梯形法求解每个小区间的面积,将其累加起来得到总面积。
为了提高精度,我们将n逐渐加倍,循环计算梯形法得到的积分值,然后使用Richardson外推法得到更精确的积分值。
最终得到的结果可以满足所需的精度要求。
总之,Romberg积分法是一种高效的数值求积方法,可以在较短的时间内得到较高的精度,被广泛应用于科学计算领域。
Romberg算法的实验报告

Romberg 算法一、实验目的:学会数值求积的Romberg 算法,并应用该算法于实际问题.二、实验内容:求定积分 ⎰15.0dxx三、实验要求:(1)要求程序不断加密对积分区间的等分,自动地控制Romberg 算法中的加速收敛过程,直到定积分近似值的误差不超过610-为止,输出求得的定积分近似值。
(2)可用MATLAB 中的内部函数int 求得此定积分的准确值与Romberg 算法计算的近似值进行比较。
四、实验基本原理Romberg 方法是使用行很强的一种数值积分方法,其收敛速度很快,这里直接给出Romberg 积分的计算方法。
(1)计算)]()()[(21)0,0(b f a f a b R +-=(2)计算∑-=--⎪⎪⎭⎫ ⎝⎛⎪⎭⎫ ⎝⎛-++-=12111212)0,1(21)0,(i k i i h k a f h i R r R (3)14)1,1()1,(4),(11-----=--j j j m R j m R j m R这样就构成了Romberg 积分的基本步骤,其计算步骤可以表1.1来表示:表1.1 Romberg 积分R(1,1)R(2,1) R(2,2)R(3,1) R(3,2) R(3,3)R(4,1) R(4,2) R(4,3) R(4,4)R(5,1) R(5,2) R(5,3) R(5,4) R(5,5)可以证明Romberg 方法是数值稳定的。
五、实验过程:1、编写主函数。
打开Editor编辑器,输入romberg法主程序语句:function [R,wugu,h]=romberg(fun,a,b, wucha,m)n=1;h=b-a; wugu=1; x=a;k=0; RT=zeros(4,4);RT(1,1)=h*(feval(fun,a)+feval(fun,b))/2;while((wugu>wucha)&(k<m)|(k<4))k=k+1; h=h/2; s=0;for j=1:nx=a+h*(2*j-1); s=s+feval(fun,x);endRT(k+1,1)= RT(k,1)/2+h*s; n=2*n;for i=1:kRT(k+1,i+1)=((4^i)*RT(k+1,i)-RT(k,i))/(4^i-1);endwugu=abs(RT(k+1,k)-RT(k+1,k+1));endR=RT(k+1,k+1);以文件名romberg.m保存。
数值分析实验二 数值积分1

数值分析实验二 数值积分组号 班级 学号 姓名 分数一:实验目的1、掌握用复化Simpson 公式,复化梯形求积公式计算积分的方法。
2、掌握用龙贝格Romberg 积分公式计算积分的方法。
3、掌握用高斯-勒让德Gauss-Legendre 公式计算积分法。
4、通过实例了解三种方法的联系与区别,并会利用适当的方法计算某函数在某个区间的积分值。
二:实验内容及基本知识介绍(1)复化Simpson 求积公式的原理:将区间[a,b]分为n 等分,在每个子区间[1,k k x x +]上采用辛普森公式:()()462b a a b s f a f f b -⎡+⎤⎛⎫=++ ⎪⎢⎥⎝⎭⎣⎦,若记122k k x h x +=+,则得: ()()()()()111110246k kn bx ax k n k k k n k I f x dx f x dxh f x f x f x R f +-=-++===⎡⎤⎛⎫=+++⎢⎥ ⎪⎢⎥⎝⎭⎣⎦∑⎰⎰∑。
则可以记得:()()()()()⎥⎥⎦⎤⎢⎢⎣⎡++⎪⎪⎭⎫ ⎝⎛+=⎥⎥⎦⎤⎢⎢⎣⎡+⎪⎪⎭⎫ ⎝⎛+=∑∑∑-=-=+-=++1010211012124646n k n k k k n k k k k n b f x f x f a f h x f x f x f h S,称为复化辛普森求积公式。
其余项为:()()()()4141,,1802n n n kkkk k h h R f I S f x x ηη-+=⎛⎫=-=-∈ ⎪⎝⎭∑,此外,由于nS中求积系数均为正数,故知复化辛普森公式计算稳定。
(2)复化梯形求积公式的原理:将区间[a,b]分为n 等分,分点,,2,1,0,,n k nab h kh a x k =-=+=在每个子区间[]()1,,1,0,1-=+n k x x k k 上采用梯形公式()()[]b f a f a b T +-=2计算,则得:()()()()[]()f R x f x f h dx x f dx x f I n n k k k n k x x bak k++===∑∑⎰⎰-=+-=+11121,记:()()[]()()()⎥⎦⎤⎢⎣⎡++=+=∑∑-=-=+`11101222n k k n k k k n b f x f a f h x f x f h T ,称为复化梯形公式。
数值积分算法实验报告

数值积分算法实验报告实验目的:验证数值分析理论实验工具:matlab摘要:本实验通过对比龙贝格积分算法和三点,五点勒让德高斯求积公式,对数值分析理论进行验证。
文章中提供了用matlab写的小程序即运行结果。
我们可以看到,龙贝格积分算法方便快捷且效率较高。
三点积分算法不足以满足精度要求,五点法基本可以满足,但是如果追求更高精度,则五点法改进困难,而龙贝格则可适用于任何精度的计算。
高斯求积的效率是比较高的,只需五点就可以达到非常高的精度。
一matlab源程序1.%龙贝格积分算法,jd表示相对精度function z=lbgjf(a,b,jd)h=(b-a);TT(1,1)=h.*(f(b)+f(a))/2;k=2;TT(1,2)=TT(1,1)./2+h/2.*f(a+h/2);TT(2,1)=TT(1,2).*4/3-TT(1,1)./3;z=TT(2,1);while abs((TT(k,1)-TT(k-1,1))./TT(k,1))>=jdk=k+1;h=h./2;for j=1:2.^(k-2)ff(1,j)=f(a+h*(j-1/2));endfff=sum(ff).*h/2;TT(1,k)=TT(1,k-1)./2+fff;for j=2:kTT(j,k-j+1)=4^(j-1).*TT(j-1,k-j+2)./(4^(j-1)-1)-TT(j-1,k-j+1)/(4^(j-1 )-1);z=TT(j,k-j+1);endend2 %五点法·¨function z=fivedlrd(a,b)Ak=[0.2369269 0.4786287 0.5688889 0.4786287 0.2369269];xk=[-0.9061798 -0.5384693 0 0.5384693 0.9061798];for i=1:5ff(i)=Ak(i).*f((b-a).*xk(i)./2+(b+a)./2);endz=(b-a)./2.*sum(ff)3%三点法¨function z=threedlrd(a,b)Ak=[0.5555556 0.8888889 0.5555556];xk=[-0.7745967 0 0.7745967];for i=1:3ff(i)=Ak(i).*f((b-a).*xk(i)./2+(b+a)./2); endz=(b-a)./2.*sum(ff)4%另用一matlab文件来表示函数function y=f(x)y=sin(x).^10;end二实验过程1 f(x)=x.^2,2 f(x)=x.^3可以看到,对于这种简单函数三种方法基本没有区别3 f(x)=sin(x).^10.lbgjf(2,3,10e-6)ans =0.0608>> fivedlrd(2,3)z =0.0608ans =0.0608>> threedlrd(2,3)z =0.0618ans =0.06184f(x)= exp(exp(sin(x).^10))threedlrd(2,3)z =2.9278ans =2.9278>> fivedlrd(2,3)z =2.9304ans =2.9304>> lbgjf(2,3,10e-6)ans =2.9304>>可见三点法已经不再满足要求。
龙贝格算法-数值分析-实验报告

五、案例应用 ....................................................................................................................................... 11
5.1 案例分析: ................................................................................................................................. 11 5.2 计算: ......................................................................................................................................... 12 5.3 结果分析: ................................................................................................................................. 13
4.1 测试函数(1):............................................................................................................................... 8 4.2 测试函数(2):.................................................................................................................................. 9 4.3 测试曲线(3):............................................................................................................................. 10
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Romberg数值积分实验报告班级:__ 姓名:学号:日期:_一、实验目的1、加深外推法的原理理解, 掌握Romberg外推法的计算方法。
2、用matlab软件实现Romberg数值积分来计算题目的运算。
二、基本理论及背景1、理论推导:对区间[a,b],令h=b-a构造梯形值序列{T2K}。
T1=h[f(a)+f(b)]/2把区间二等分,每个小区间长度为h/2=(b-a)/2,于是T2 =T1/2+[h/2]f(a+h/2)把区间四(2)等分,每个小区间长度为h/2 =(b-a)/4,于是T4 =T2/2+[h/2][f(a+h/4)+f(a+3h/4).....................把[a,b] 2等分,分点xi=a+(b-a)/ 2 ·i (i =0,1,2 · · · 2k)每个小区间长度为(b-a)/ 2 .2、参考Romberg数值积分,实现积分的数值求解,完成下列题目:三、算法设计及实现1、算法设计(a)function y=fun1(x)y=sqrt(4-(sin(x)).^2);(b)function y=fun2 (x)y=log(1+2*x)/3;(c)function y=fun3(x)y=exp(-x).*sin(x.^2)四、实验步骤1、○1打开matlab软件,新建Romberg.m文件,在窗口中编辑Romber数值积分函数程序代码,并保存在指定的文件夹下,在Current Directory窗口右边点击《Browse For Folder》按钮指向Romberg.m文件;○2在Command Window中编辑相应要计算的题目的数值函数及相应的题目的表达式。
2、输出结果和初步分析说明(见附件一)。
五、使用说明实验结果分析1、在Command Window窗口中编辑要调用的函数名与指定的函数名字不同导致出现错误,通过改正与函数名相同即可。
2、Romberg方法也称为逐次分半加速法。
它是在梯形公式、辛卜生公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法。
作为一种外推算法,它在不增加计算量的前提下提高了误差的精度在等距基点的情况下,用计算机计算积分值通常都采用把区间逐次分半的方法进行,这样,前一次分割得到的函数值在分半以后仍可被利用,且易于编程。
六、算法的改进和实验总结1、算法进一步的发展:在实际计算中,为防止假收敛,可设置最小二分次数k1,当k<k1时,跳过精度判别而继续运算。
2、用数值计算的方法来实现数值积分的求解,被调用的函数需要清楚的描述所要执行的问题的求解过程,在matlab函数调用时,执行函数一定要与函数同名。
七、源程序(见附件二)附件一>>[val,M]=Romberg('fun1',[0 pi/2],1e-10)val =2.9349M =2.9311 0 0 0 0 0 02.9349 2.9362 0 0 0 0 02.9349 2.9349 2.9348 0 0 0 02.9349 2.9349 2.9349 2.9349 0 0 02.9349 2.9349 2.9349 2.9349 2.9349 0 02.9349 2.9349 2.9349 2.9349 2.9349 2.9349 02.9349 2.9349 2.9349 2.9349 2.9349 2.9349 2.9349>>[val,M]=Romberg('fun2',[1 3],1e-10)y =0.3662 0.6486y =0.5365y =0.4621 0.5973y =0.4176 0.5014 0.5682 0.6239y =0.3929 0.4406 0.4823 0.5194 0.5527 0.5831 0.6109 0.6365y =0.3798 0.4055 0.4293 0.4515 0.4724 0.4920 0.5105 0.5280 0.5447 0.5606 0.5757 0.5902 0.6041 0.6175 0.6303 0.6426y =Columns 1 through 160.3731 0.3864 0.3992 0.4116 0.4235 0.4350 0.4461 0.4568 0.4673 0.4774 0.4872 0.4967 0.5060 0.5150 0.5237 0.5323Columns 17 through 320.5406 0.5488 0.5567 0.5644 0.5720 0.5794 0.5867 0.5938 0.6007 0.6075 0.6142 0.6207 0.6271 0.6334 0.6396 0.6456val =1.0543M =1.0148 0 0 0 0 0 01.0439 1.0536 0 0 0 0 01.0516 1.0542 1.0542 0 0 0 01.0536 1.0543 1.0543 1.0543 0 0 01.0541 1.0543 1.0543 1.0543 1.0543 0 01.0542 1.0543 1.0543 1.0543 1.0543 1.0543 01.0542 1.0543 1.0543 1.0543 1.0543 1.0543 1.0543>> [val,M]=Romberg('fun3',[0 2],1e-10)y = 0 -0.1024y = 0.3096y =0.1501 0.1736y =0.0486 0.2519 0.2865 0.0137y =0.0138 0.0963 0.2038 0.2889 0.3097 0.2400 0.0946 -0.0560y =0.0037 0.0291 0.0713 0.1228 0.1773 0.2289 0.2721 0.3016 0.3124 0.3011 0.2660 0.2089 0.1351 0.0536 -0.0234 -0.0828y =Columns 1 through 160.0009 0.0080 0.0209 0.0384 0.0596 0.0836 0.1094 0.1364 0.1637 0.1907 0.2166 0.2407 0.2624 0.2810 0.2958 0.3062 Columns 17 through 320.3117 0.3117 0.3061 0.2945 0.2770 0.2537 0.2251 0.1917 0.1547 0.1150 0.0740 0.0334 -0.0053 -0.0403 -0.0702 -0.0936y =Columns 1 through 160.0002 0.0021 0.0056 0.0107 0.0172 0.0249 0.0337 0.0434 0.0541 0.0654 0.0774 0.0899 0.1028 0.1161 0.1296 0.1432 Columns 17 through 320.1569 0.1705 0.1840 0.1973 0.2102 0.2228 0.2349 0.2464 0.2573 0.2674 0.2767 0.2851 0.2925 0.2988 0.3040 0.3080 Columns 33 through 480.3108 0.3122 0.3122 0.3109 0.3081 0.3038 0.2980 0.2907 0.2819 0.2717 0.2600 0.2470 0.2327 0.2171 0.2005 0.1828 Columns 49 through 640.1642 0.1449 0.1251 0.1048 0.0843 0.0638 0.0435 0.0235 0.0041 -0.0144 -0.0320 -0.0484 -0.0633 -0.0767 -0.0884 -0.0982val =0.2971M =-0.1024 0 0 0 0 0 0 00.2583 0.3786 0 0 0 0 0 00.2910 0.3019 0.2968 0 0 0 0 00.2957 0.2973 0.2970 0.2970 0 0 0 00.2967 0.2971 0.2971 0.2971 0.2971 0 0 00.2970 0.2971 0.2971 0.2971 0.2971 0.2971 0 00.2970 0.2971 0.2971 0.2971 0.2971 0.2971 0.2971 00.2971 0.2971 0.2971 0.2971 0.2971 0.2971 0.2971 0.2971 >>附件二:function [val,M]=Romberg(f,ab,dalt)% Romberg算法计算积分% [val,M]=Romberg(f,ab,dalt)% val 返回积分值% M T数表% f 被积函数,函数文件名% ab 积分区间% dalt 精度if nargin<3dalt=1e-7; %设置默认精度10-7endi=1; h=ab(2)-ab(1); t=0; j=0;T(1,1)=(h/2)*(feval(f,ab)*ones(2,1));while i<50 %最大跌代次数为50次i=i+1; h=h/2;T=[T zeros(i-1,1);zeros(1,i)];x=ab(1)+h:2*h:ab(2)-h;y=feval(f,x)*ones(size(x')); % feval(f,x)求得f在x点值T(i,1)=T(i-1,1)/2+h*y; % 细化区间,求得梯形值for t=2:ij=t-1;T(i,t)=(4^j*T(i,j)-T(i-1,j))/(4^j-1); %外推加速endif abs(T(i,i)-T(i-1,i-1))<=dalt %控制精度breakendendif nargout==2M=T; %按需求返回T数表endval=T(i,i); %积分值附件二(迭代法):function val=DieDai(f,x0,delta)%用if nargin<3delta=1e-7;endn=1;x1=feval(f,x0);while abs(x1-x0)>deltax0=x1;x1=feval(f,x0);n=n+1;if n>100exit('跌代出问题');endendval=x1;disp(['跌代次数']);%显示跌代次数disp(n);附件二(牛顿法):function val=NewtonDieDai(f,df,x0,delta)if nargin<4delta=1e-7;endn=1;x1=x0-feval(f,x0)/feval(df,x0);while abs(x1-x0)>deltax0=x1;x1=x0-feval(f,x0)/feval(df,x0)n=n+1if n>20exit('跌代可能不收敛!!!'); endendval=x1;disp(['跌代次数']);disp(n);。