Romberg数值积分实验报告

合集下载

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

数值分析积分实验报告(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积分法计算积分
Romberg积分法是一种数值求积方法,用于计算定积分。

该方法可以通过递归的方式不断提高精度,并且收敛速度非常快。

具体实现方法如下:首先,将区间[a, b]划分为n个小区间,将每个小区间的长度设为h。

然后,使用梯形法求解每个小区间的面积,将其累加起来得到总面积。

为了提高精度,我们将n逐渐加倍,循环计算梯形法得到的积分值,然后使用Richardson外推法得到更精确的积分值。

最终得到的结果可以满足所需的精度要求。

总之,Romberg积分法是一种高效的数值求积方法,可以在较短的时间内得到较高的精度,被广泛应用于科学计算领域。

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

数值分析实验二 数值积分组号 班级 学号 姓名 分数一:实验目的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

Romberg数值积分

Romberg数值积分

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方法也称为逐次分半加速法。

数值积分龙贝格matlab

数值积分龙贝格matlab

《数值分析》课程实验报告一、实验目的1、进一步熟悉向量矩阵的运算;2、掌握龙贝格(Romberg )算法,并能用高级程序语言MATLAB 编写实现此算法的程序;3、进而加深对龙贝格(Romberg )算法的理解。

二、实验内容1. 使用Romberg 积分,对于计算下列⎰+4802)cos (1dx x 各近似值a.确定1,51,41,31,21,1,,,,R R R R Rb.确定5,54,43,32,2,,,R R R Rc.6,65,64,63,62,61,6,,,,,R R R R R Rd.确定10,109,98,87,7,,,R R R R三、实验步骤1. 编写程序龙贝格积分方法如下:n=5;a=0;b=48;h(1,1)=b-a;fa=sqrt(1+(cos(a))^2);fb=sqrt(1+(cos(b))^2);r(1,1)=h(1,1)/2*(fa+fb);disp('R11,R21,R31,R41,R51分别为');disp(r(1,1));for i=2:nh(i,1)=(b-a)/(2^(i-1));sum=0;for k=1:2^(i-2)x=a+(2*k-1)*h(i,1);sum=sum+sqrt(1+(cos(x)).^2);endr(i,1)=0.5*(r(i-1,1)+h(i-1,1)*sum);disp(r(i,1));enddisp('R22,R33,R44,R55分别为');for k=2:nfor j=2:kr(k,j)=r(k,j-1)+(r(k,j-1)-r(k-1,j-1))/(4^(j-1)-1);enddisp(r(k,k));enddisp('R61,R62,R63,R64,R65,R66分别为');n=6;for i=2:nh(i,1)=(b-a)/(2^(i-1));sum=0;for k=1:2^(i-2)x=a+(2*k-1)*h(i,1);sum=sum+sqrt(1+(cos(x)).^2);endr(i,1)=0.5*(r(i-1,1)+h(i-1,1)*sum);endfor k=2:nfor j=2:kr(k,j)=r(k,j-1)+(r(k,j-1)-r(k-1,j-1))/(4^(j-1)-1);endendfor i=1:ndisp(r(6,i));enddisp('R77,R88,R99,R10,10分别为');n=10;for i=2:nh(i,1)=(b-a)/(2^(i-1));sum=0;for k=1:2^(i-2)x=a+(2*k-1)*h(i,1);sum=sum+sqrt(1+(cos(x)).^2);endr(i,1)=0.5*(r(i-1,1)+h(i-1,1)*sum);endfor k=2:nfor j=2:kr(k,j)=r(k,j-1)+(r(k,j-1)-r(k-1,j-1))/(4^(j-1)-1);endendfor i=7:10disp(r(i,i));end运行结果如下:R11,R21,R31,R41,R51分别为62.437457.288656.443856.263156.2188R22,R33,R44,R55分别为55.572356.201556.205656.2041R61,R62,R63,R64,R65,R66分别为58.362759.077359.268959.317559.329759.3328R77,R88,R99,R10,10分别为58.422158.470758.470558.4705四、实验小结在这次编程中我学到了很多东西,把程序写进软件中也出现了很多错误,细节问题使我们必须注意的,自己有了很多的收获,自己进一步理解和学习了Matlab软件。

实验六-数值积分-数值分析-实验报告

实验六-数值积分-数值分析-实验报告

实验六-数值积分-数值分析-实验报告山西大学计算机与信息技术学院实验报告姓名学号班级 08 计科课程名称计算方法实验日期 2021 年 12 月6 日实验名称实验六数值积分成绩一、实验目的利用复化梯形公式,复化辛普生公式和龙贝格数值积分公式计算a( )b_f _ d的近似值。

二、实验方法(1)将[a,b]区间 n 等分,记分点为 ,( , 0,1,..., )ib a_ a ih h i nn,并在每个小区间[1,i i_ _]上应用梯形公式11[ ( ) 2 ( ) ( )]2nn iihT f a f _ f b(2)在每个小区间[1,i i_ _]上应用辛普生公式1 111 12[ ( ) 4 ( )2 ( ) ( )]6n nn iii ihS f a f _ f _ f b式中,12i_为[1,i i_ _]的中点,即1212ii_ _ h。

(3)先用梯形公式计算 ( )/ 2_[ ( ) ( )]iT b a f a f b ,然后,将求积区间(a,b)逐次折半的方法,令区间长度 ( )/ 2 ( 0,1,2....)ih b a i 。

计算211/ 2_/ 2_( _( 1/ 2))nn nkT T h f a h k,式中 2 i n 。

于是,得到辛普生公式2 2( )/3n n n nS T T T。

科特斯求积公式2 2( )/15n n n nC S S S最后,得到龙贝格求积公式2 2( )/63n n n nR C C C利用上述各式计算,直到相邻两次的积分结果之差满足精度要求。

三、实验内容利用复化梯形公式,复化辛普生公式和龙贝格数值积分公式计算221__e _e d 和12041_d_的近似值,要求误差为71_102,将计算结果与精度值比较,并对计算结果进行分析。

四、实验程序#include“stdio.h” #include“math.h”#include“iostream.h” #include“iomanip.h”doublef1(double _) {return __e_p(_); } double f2(double _) {return 4/(1+___); } //.............梯形公式..............................doubleT(double a,double b,int n) {double _[20__00];double h=(b-a)/n;for(int i=0;i<n;i++) {_[i]=a+i_h;}double m=0;for(i=1;i<=n-1;i++) {m=m+f1(_[i]);}return h/2_(f1(a)+2_m+f1(b)); } void teT {int a=1,o=0;double q=T(1,2,a);while(fabs(w-q)>0.00000005){o++;a=a_2;q=T(1,2,a);w=T(1,2,2_a);}printf(“%d”,o);printf(“T=%15.10f”,T(1,2,2_a)); } double T1(double a,double b,int n) {double _[10000];double h=(b-a)/n;for(int i=0;i<n;i++){_[i]=a+i_h;}double m=0;for(i=1;i<=n-1;i++){m=m+f2(_[i]);}return h/2_(f2(a)+2_m+f2(b)); } void teT1 {int b=1,p=0;double d=T1(0,1,2_b);while(fabs(s-d)>0.00000005) {p++;b=b_2;s=T1(0,1,b);d=T1(0,1,2_b);}printf(“\n%d”,p);printf(“T1=%15.10f”,T1(0,1,b)); }//......................辛普生公式........................................double S(double a,double b,int n){double h=(b-a)/n;double s=f1(a)-f1(b);double _;_=a;for(int i=0;i<n;i++){_=_+h/2;s=s+4_f1(_);_=_+h/2;s=s+2_f1(_);}s=s_h/6;return s; } void teS{int c=1,l=0;double g=S(1,2,c);double h=S(1,2,2_c);while(fabs(h-g)>0.00000005){l++;c=c_2;g=S(1,2,c);h=S(1,2,2_c);}printf(“\n%d”,l);printf(“S=%15.10f”,S(1,2,c)); } double S1(double a,double b,int n){double h=(b-a)/n;double s=f2(a)-f2(b);double _;_=a;for(int i=0;i<n;i++){_=_+h/2;s=s+4_f2(_);_=_+h/2;s=s+2_f2(_);}s=s_h/6;return s; } void teS1{int m=1,v=0;double j=S1(0,1,m);double k=S1(0,1,2_m);while(fabs(k-j)>0.00000005){v++;m=m_2;j=S1(0,1,m);k=S1(0,1,2_m);}printf(“\n%d”,v);printf(“S1=%15.10f\n”,S1(0,1,m)); }//.................龙贝格公式...........................voidL(double a,double b){double h=b-a;double t1=(f1(a)+f1(b))_h/2,t2; int k=1;double d=0;double r1=0,r2=1;double c1,c2;double s1=0,_,s2;while(1){if(fabs(r2-r1)<0.00000005) break ;s1=0;_=a+h/2;while(_<b){s1=s1+f1(_);_=_+h;}t2=t1/2+h/2_s1;s2=t2+1/3_(t2-t1);if(k==1){k=k+1;h=h/2;t1=t2;continue;}c2=s2+1/15_(s2-s1);if(k==2){c1=c2;k=k+1;h=h/2;t1=t2;s1=s2;continue;}r1=d;r2=c2+1/63_(c2-c1);if(k==3){d=r2;c1=c2;h=h/2;k=1;t1=t2;s1=s2; continue;}}printf(“L=%15.10f\n”,r2); } void main{ teT;teT1;teS;teS1;L(1,2); } 五、实验结果六、结果分析在对积分区间作同样分割或利用同样个数的函数值的条件下,复化辛普生公式比复化梯形公式的计算精度高。

龙贝格积分算法实验

龙贝格积分算法实验

实验题目2 Romberg 积分法摘要考虑积分()()b aI f f x dx =⎰欲求其近似值,可以采用如下公式: (复化)梯形公式 11[()()]2n ii i hT f x f x-+==+∑2()12b a E h f η-''=-[,]a b η∈ (复化)辛卜生公式 11102[()4()()]6n i i i i hS f x f x f x -++==++∑4(4)()1802b a h E f η-⎛⎫=- ⎪⎝⎭ [,]a b η∈(复化)柯特斯公式 111042[7()32()12()90n i i i i hC f x f x f x -++==+++∑31432()7()]i i f xf x +++6(6)2()()9454b a h E f η-⎛⎫=- ⎪⎝⎭[,]a b η∈这里,梯形公式显得算法简单,具有如下递推关系121021()22n n n i i h T T f x -+==+∑因此,很容易实现从低阶的计算结果推算出高阶的近似值,而只需要花费较少的附加函数计算。

但是,由于梯形公式收敛阶较低,收敛速度缓慢。

所以,如何提高收敛速度,自然是人们极为关心的课题。

为此,记0,k T 为将区间[,]a b 进行2k等份的复化梯形积分结果,1,k T 为将区间[,]a b 进行2k等份的复化辛卜生积分结果,2,k T 为将区间[,]a b 进行2k等份的复化柯特斯积分结果。

根据李查逊(Richardson )外推加速方法,可得到1,11,,0,1,2,40,1,2,41m m k m km k m k T T T m -+-=-⎛⎫=⎪=-⎝⎭可以证明,如果()f x 充分光滑,则有,lim ()m k k T I f →∞= (m 固定),0lim ()m m T I f →∞=这是一个收敛速度更快的一个数值求积公式,我们称为龙贝格积分法。

该方法的计算可按下表进行0,0T 0,1T 0,2T … 0,m T 1,0T 1,1T … 1,1m T - 2,0T … 2,2m T - … … ,0m T很明显,龙贝格计算过程在计算机上实现时,只需开辟一个一维数组,即每次计算的结果,m k T ,可存放在0,k T 位置上,其最终结果,0m T 是存放在0,0T 位置上。

Romberg龙贝格算法实验报告

Romberg龙贝格算法实验报告

Romberg龙贝格算法实验报告课程实验报告课程名称:专业班级: CS1306班学号: Uxx14967 姓名:段沛云指导教师:报告日期:计算机科学与技术学院目录1 实验目的 ........................................................12 实验原理 ........................................................13 算法设计与流程框图 (2)4 源程序 ........................................................ .. 45 程序运行 ........................................................76 结果分析 ........................................................77 实验体会 ........................................................71 实验目的掌握Romberg公式的用法,适用范围及精度,熟悉Romberg算法的流程,并能够设计算法计算积分31得到结果并输出。

1x2 实验原理2.1 取k=0,h=b-a,求T0=数)。

2.2 求梯形值T0(b-a),即按递推公式(4.1)计算T0。

k2h[f(a)+f(b)],令1→k,(k记区间[a,b]的二分次22.3 求加速值,按公式(4.12)逐个求出T表的第k行其余各元素Tj(k-j)(j=1,2,….k)。

2.4 若|Tk+1-Tk|n-111T2n=[Tn+hn∑f(xi+)]22i=01Sn=T2n+(T2n-Tn)31Cn=S2n+(S2n-Sn)151Rn=C2n+(C2n-Cn)633 算法设计与流程框图算法设计:(先假定所求积分二分最大次数次数为20) 3.1 先求T[k][0] 3.2 再由公式T(k)m4m(k+1)1)=mTm-1-mTm(k-1(k=1,2,) 求T[i][j] 4-14-13.3 在求出的同时比较T[k][k]与T[k-1][k-1]的大小,如果二者之差的绝对值小于1e-5,就停止求T[k][k];此时的k就是所求的二分次数,而此时的T[k][k]就是最终的结果 3.4 打印出所有的T[i][j];程序流程图4 源程序#include #include #include #include int main(void) {float f(float(x)) {float y; y=1/x; return y; }floata,b,e,h,s,k,x,T1=0,T2=0,S1=0,S2=0,C1=0,C2=0,R1=0,R2=0; inti=0;printf("请输入积分下限 : "); scanf("%f",&a);printf("\n请输入积分上限 :"); scanf("%f",&b);printf("\n请输入允许误差 :"); scanf("%f",&e); k大学网=1; h=b-a;T1=h*(f(a)+f(b))/2;printf("____________________________________________\n"); printf("计算结果如下 : \n");printf("\nk T2 S2 C2 R2\n");printf("%d %10.7f %10.7f %10.7f %10.7f\n",i,T1,S1,C1,R1); do {x=a+h/2; s=0; while(x{ s=s+f(x); x=x+h; }T2=(T1+s*h)/2; S2=T2+(T2-T1)/3; if(k==1) {T1=T2; S1=S2; h=h/2; k=k+1; }else if(k==2) {C2=S2+(S2-S1)/15; C1=C2; T1=T2; S1=S2; h=h/2; k=k+1; }else if(k==3) {R2=C2+(C2-C1)/63; C2=S2+(S2-S1)/15; C1=C2; T1=T2; S1=S2; h=h/2; k=k+1; } else {C2=S2+(S2-S1)/15;R2=C2+(C2-C1)/63; if(fabs(R2-R1)printf("%d %10.7f %10.7f %10.7f %10.7f\n",i+1,T2,S2,C2,R2); break;} else { R1=R2; C1=C2; T1=T2; S1=S2; h=h/2; k=k+1; } } i++; printf("%d %10.7f %10.7f %10.7f %10.7f\n",i,T2,S2,C2,R2); } while(1); system("pause"); return 0; }5 程序运行6 结果分析如上所示的结果与课本中求得的结果完全一样,表明程序编写正确,且符合要求,事实上,只要再将所求值的精度设置得更小,则所求的结果将更加准确,最终将无限接近于标准值,由上表也可以看出用龙贝格积分法求函数的积分值在精度比较低的情况下就能求到很准确的值!7 实验体会本次实验较为简单,主要时间是耗费在循环判断上面,因为书上已经给了流程图,都是基本的C语言,难度不大。

龙贝格(Romberg)算法的应用实验报告

龙贝格(Romberg)算法的应用实验报告

Lab4 龙贝格(Romberg)算法的应用下面图1中的塑料雨蓬材料是由图2中所示的长方形平板塑料材料压制而成。

图1 图2已知图1的横截面曲线形状满足函数,则给定了雨蓬的长度后,要求需要平板原材料的长度。

函数接口定义:double Integral(double a, double b, double (*f)(double x, double y, double z), double TOL, double l, double t)在接口定义中:a、b分别为定积分的上、下界,f是积分核函数,其中x是积分哑元,y、z是本题目定义的特殊参数,分别对应中的l和t;TOL是要求积分达到的精度;l和t传入裁判输入的参数l和t的值。

另注意:的单位是厘米,输出的长度值要求以米为单位。

裁判程序样例如下:#include<stdio.h>#include<math.h>double f0( double x, double l, double t ){ /* 弧长积分的核函数*/return sqrt(1.0+l*l*t*t*cos(t*x)*cos(t*x));}double Integral(double a, double b, double (*f)(double x, double y, double z), double TOL, double l, double t);int main(){double a=0.0, b, TOL=0.005, l, t;while (scanf("%lf %lf %lf", &l, &b, &t) != EOF)printf("%.2f\n", Integral(a, b, f0, TOL, l, t));return 0;}裁判输入样例:2 100 1标准输出样例:1.68实验报告:1.求解步骤参照书上的龙贝格求积算法2.步骤①利用k=0;h=b-a;T[0][0]=(h/2)*(f(a,l,t)+f(b,l,t));求解T0(0)3.求解T0(0)到T0(k)的值由公式h=b−an 及h=b−a2k可得n=2k其中h为步长,n为二分次数又由递推公式:T2n=12T n+ℎ2∑f(xk+12)n−1k=0得T2k+1=12T2k+b−a2k+1∑f[a+b−a2k+1(2i−1)]2k−1i=1,k=0,1,2,3~其中xk+12= a+ℎ2(2i−1)。

龙贝格数值积分报告(MATLAB)

龙贝格数值积分报告(MATLAB)

目录设计总说明 (1)关键词 (1)绪论 (2)第1章课程设计正文 (3)1.1 需求分析 (3)1.2 界面设计 (3)1.3 功能实现 (4)1.4系统算法和程序代码的实现 (5)第2章总结 (7)参考文献 (8)设计总说明学习了《数值分析》和相关开发软件课程并能够熟练掌握各种算法的原理及其求解方法和特点;1、独立进行面向对象软件的分析、设计及在计算机中进行编写代码和调试工作。

培养自己独立进行面向对象软件的分析、面向对象软件的设计及面向对象软件的实现与测试的能力;2、通过课题的理论设计和在计算机中实验调试代码,加深对数值分析知识的理解,培养软件开发的实践技能,提高分析解决具体问题的能力;3、充分利用面向对象程序设计,用精要的语句设计程序,培养独立创新能力;4、熟练运用MATLAB7开发界面美观、清晰,简单,好学,好用的计算软件;说明书中一般包括任务的提出、方案论证、设计与计算说明、试验调试及结果的分析、结束语等内容。

要求理论依据充分,数据准确,公式推导及计算结果正确。

涉及到计算机软件:学生要独立完成一个软件或较大软件中的一个模块,要有足够的工作量;要写出相关的设计文件;能够进行计算机演示和给出运行结果。

在此软件中,我们运用龙贝格方法进行积分。

此外,只需要在编辑框中输入上下限和含x的被积函数,点击计算按钮,得到计算结果。

关键词:MATLAB 数值分析龙贝格积分绪论数值分析是计算数学的一个主要部分,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现。

数值分析一个很强的特点就是面向计算机,要根据计算机特点提供切实可行的有效算法。

因此,本次课程设计是在学习了《数值分析》和相关开发软件课程之后,为了能掌握数值分析的基本概念,结合实际的操作和设计,巩固课堂教学内容,使自己能掌握数值分析的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数值分析理论,规范、科学地完成一个小型可视化软件的设计与实现,把理论课与实验课所学内容做一综合,通过实际项目的设计、开发,培养学生独立进行计算软件的建模、在计算机中进行计算、设计、通过相关软件开发系统,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。

最小二乘法和Romberg求积分

最小二乘法和Romberg求积分

计算方法实验报告湖北师范学院计算机科学与技术学院一、实验题目最小二乘法和Romberg求积分二、实验内容1、最小二乘法拟合本实验是对于已知的m+1对不带权系数{}mi iw=的离散数据{},mi i ix y=,计00,min()max()i m i ma bi ix y≤≤≤≤==。

在连续的函数空间[]()(),0C a b f a f b⨯<中选定n+1个线性无关的基函数(){}nk kxσ=来构造拟合函数()()nk k kkx a xσσ==∑,求得当系数是最优化模型()()()201min I,,,,mn k i iia a a x y xσσ=⋅⋅⋅=-⎡⎤⎣⎦∑时的解***01,,,na a a⋅⋅⋅。

2、romberg求积分法Romberg算法是利用复合梯形公式,在对积分区间的步长逐次折半的过程中,求得积分I=∫a b f(x)dx的近似值序列{T2k}。

三、法思想描述1、最小二乘法拟合(1)、根据最小二乘法的拟合原理将问题简化为求由待拟合离散数据的正则方程组的求解问题;(2)、输入一散数据{},mi i ix y=,存放于数组[],[]X m Y m中,并给定拟合次数n根据待拟合的次数确定对应的系数矩阵为范德蒙行列式的线性方程组;(3)、由[][][][]TA m n A m n⨯得到正则方程组的系数矩阵[][]F n n,如下式,同时由[][][]TA m n Y m⨯得到值向量[]B n;(4)、用最列主元素法解出正则方程组的根,就得到“二”中描述的系数的最优解。

2、romberg求积分法Romberg算法是区间主次二分的过程中,对梯形值进行加权平均以获得准确程度较高a0a1a2…a n1x0x0 2…x0n1 x1x i n…x i n……………………1 x m x m2…x m n=Y1Y2LLLY m的积分值的一种方法。

对于定积分I= 的复化梯形公式,其余项将积分区间[a,b],逐次折半,假设,以保证复化梯形公式余项系数是非零的,则构成相应的外推法称为Romberg算法:下标m外推得到的第m个算法。

龙贝格积分实验报告

龙贝格积分实验报告

二、Romberg 积分法1.变步长Romberg 积分法的原理复化求积方法对于提高精度是行之有效的方法,但复化公式的一个主要缺点在于要事先估计出部长。

若步长过大,则精度难于保证;若步长过小,则计算量又不会太大。

而用复化公式的截断误差来估计步长,其结果是步长往往过小,而且''()f x 和(4)()f x 在区间[,]a b 上的上界M 的估计是较为困难的。

在实际计算中通常采用变步长的方法,即把步长逐次分半(也就是把步长二等分),直到达到某种精度为止,这种方法就是Romberg 积分法的思想。

在步长的逐步分半过程中,要解决两个问题: 1. 在计算出N T 后,如何计算2N T ,即导出2N T 和N T 之间的递推公式; 2. 在计算出N T 后,如何估计其误差,即算法的终止的准则是什么。

首先推导梯形值的递推公式,在计算N T 时,需要计算1N +个点处的函数值在计算出NT 后,在计算2N T 时,需将每个子区间再做二等分,共新增N 个节点。

为了避免重复计算,计算2N T 时,将已计算的1N +个点的数值保留下来,只计算新增N 个节点处的值。

为此,把2N T 表示成两部分之和,即由此得到梯形值递推公式 因此由复化梯形公式的截断误差有若''()f x 变化不大时,即''''12()()f f ηη≈,则有式(2)表明,用2N T 作为定积分I 的近似值,其误差大致为21()3N N T T -,因此其终止条件为其中ε是预先给定的精度。

2.Romberg 积分公式将上述方法不断推广下去,可以得到一个求积分的序列,而且这个序列很快收敛到所求的定积分。

记(0)N N T T =,将区间N 等分的梯形值。

(1)N N T S =,将区间N 等分的Simpson (2)N N T C =,将区间N 等分的Cotes 。

(3)N N T R =,将区间N 等分的Romberg 。

数值分析龙贝格实验报告

数值分析龙贝格实验报告

实验三 龙贝格方法【实验类型】 验证性【实验学时】 2学时【实验内容】1.理解龙贝格方法的基本思路2.用龙贝格方法设计算法,编程求解一个数值积分的问题。

【实验前的预备知识】1.计算机基础知识2.熟悉编程基本思想3.熟悉常见数学函数;【实验方法或步骤】龙贝格方法的基本思路龙贝格方法是在积分区间逐次二分的过程中,通过对梯形之值进行加速处理,从而获得高精度的积分值。

1. 龙贝格方法的算法步骤1 准备初值()f a 和()f b ,用梯形计算公式计算出积分近似值()()12b a T f a f b -=+⎡⎤⎣⎦ 步骤2 按区间逐次分半计算梯形公式的积分近似值令2i b a h -=,0,1,2,...i =计算12102122n n n i i h T T f x -+=⎛⎫=+ ⎪⎝⎭∑,2i n = 步骤3 按下面的公式积分梯形公式:()223n n n n T T S T -=+辛普生公式:()2215n n n n S S C S -=+龙贝格公式:()2263n n n n C C R C -=+步骤4 精度控制 当2n n R R ε-<,(ε为精度)时,终止计算,并取2n R 为近似值否则将步长折半,转步骤2。

[实验程序]#include<iostream.h>#include<math.h># define Precision 0.00001//积分精度要求# define e 2.71828183#define MAXRepeat 10 //最大允许重复double function(double x)//被积函数{double s;s=2*pow(e,-x)/sqrt(3.1415926);return s;}double Romberg(double a,double b,double f(double x)){int m,n,k;double y[MAXRepeat],h,ep,p,xk,s,q;h=b-a;y[0]=h*(f(a)+f(b))/2.0;//计算T`1`(h)=1/2(b-a)(f(a)+f(b)); m=1;n=1;ep=Precision+1;while((ep>=Precision)&&(m<MAXRepeat)){p=0.0;for(k=0;k<n;k++){xk=a+(k+0.5)*h; // n-1p=p+f(xk); //计算∑f(xk+h/2),T} // k=0p=(y[0]+h*p)/2.0; //T`m`(h/2),变步长梯形求积公式s=1.0;for(k=1;k<=m;k++){s=4.0*s;// pow(4,m)q=(s*p-y[k-1])/(s-1.0);//[pow(4,m)T`m`(h/2)-T`m`(h)]/[pow(4,m)-1 ],2m阶牛顿柯斯特公式,即龙贝格公式y[k-1]=p;p=q;}ep=fabs(q-y[m-1]);//前后两步计算结果比较求精度m=m+1;y[m-1]=q;n=n+n; // 2 4 8 16h=h/2.0;//二倍分割区间}return q;}main(){double a,b,Result;cout<<"请输入积分下限:"<<endl;cin>>a;cout<<"请输入积分上限:"<<endl;cin>>b;Result=Romberg( a, b, function);cout<<"龙贝格积分结果:"<<Result<<endl; return 0;}。

Romberg算法实验

Romberg算法实验

数值计算实验—实验报告3一、实验项目:Romberg 算法 二、实验目的和要求通过本实验可以使学生理解如何在计算机上使用数值方法计算定积分()ba f x dx ⎰的近似值。

三、实验内容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); endT(k+1,1)=(T(k,1)+h*new)/2; for m=1:kT(k+1,m+1)=(4^m*T(k+1,m)-T(k,m))/(4^m-1); enderr=abs(T(k+1,m+1)-T(k,m)); k=k+1; h=h/2; endk,T,m(1)将上述程序录入计算机,并进行调试(2)用调试好的程序计算10sin()/x xdx ⎰的近似值,取精度为eps=10^-8。

步骤一:先编制计算函数值的程序function z=f(x) if(x!=0)z=sin(x)/x; else z=1; end步骤二:执行上述Romberg 算法,输出的T —数表为(参考)(3)用下列方法计算积分2(1(^2)*(cos())^2))^(0.5)b t dx π-⎰的近似值,其中b分别取为0.1,0.3,0.5.0.7,0.9。

(a) Rombergfunction z=f(x)b=0.1;z=sqrt(1-b*b*cos(x)*cos(x));end(b)复合的Simpson公式(n=16)h=(b-a)/16;X0=f(a)+f(b);X1=0;X2=0;for i=1:15x=a+i*h;if(rem(i,2)==0)X2=X2+f(x);elseX1=X1+f(x);endendX=h*(X0+4*X1+2*X2)/3;b=0.1,X= 6.26744776809318b=0.3,X= 6.13933390904750b=0.5,X= 5.86985288646431b=0.7,X= 5.42275185873374b=0.9,X= 4.68936847260762四、实验总结Romberg方法也称为逐次分半加速法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);。

相关文档
最新文档