数值分析与实验复化辛卜生公式龙贝格算法
MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)
佛山科学技术学院实验报告课程名称_______________ 数值分析________________________实验项目_______________ 数值积分____________________专业班级机械工程姓名余红杰学号2111505010 指导教师陈剑成绩日期月日一、实验目的b1、理解如何在计算机上使用数值方法计算定积分 a f ""X的近似值;2、学会复合梯形、复合Simpson和龙贝格求积分公式的编程与应用。
3、探索二重积分.11 f (x, y)dxdy在矩形区域D = {( x, y) | a _ x _ b, c _ y _ d}的数值D积分方法。
二、实验要求(1)按照题目要求完成实验内容;(2)写出相应的Matlab程序;(3)给出实验结果(可以用表格展示实验结果);(4)分析和讨论实验结果并提出可能的优化实验。
(5)写出实验报告。
三、实验步骤1、用不同数值方法计算积xln xdx =-- 0 9(1)取不同的步长h,分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确值比较两公式的精度。
(2)用龙贝格求积计算完成问题(1 )。
2、给出一种求矩形区域上二重积分的复化求积方法,然后计算二重积分..e"y dxdy,其中积分区域D二{0乞x岂1,0岂y乞1}。
1.%lnt_t.m复化梯形:function F = Int_t(x1,x2,n)%复化梯形求积公式% x1,x2为积分起点和中点%分为n个区间,没选用步长可以防止区间数为非整数。
%样点矩阵及其函数值:x = lin space(x1,x2 ,n+1);y = f(x);m = len gth(x);%本题中用Matlab计算端点位置函数值为NaN,故化为零: y(1) = 0;y(m) = 0;%算岀区间长度,步长h:h = (x2 -x1)/n;a = [1 2*o nes(1,m-2) 1];%计算估计的积分值:F = h/2*sum(a.*y);%f.mfun cti on y = f(x)y = sqrt(x).*log(x);%run 11.mclc,clear;%分为10个区间,步长0.1的积分值:F = In t_t(0,1,10);F10 = F%分为100个区间F = In t_t(0,1,100);F100 = F%误差计算W10 = abs((-4/9)-F10);W100 = abs((-4/9)-F100);W = [W10 W100]%复化辛普森:%l nt_s.mfun cti on F = In t_s(x1,x2 ,n)%复化梯形求积公式% x1,x2区间,分为n个区间。
辛普森公式 龙贝格算法
辛普森公式龙贝格算法辛普森公式与龙贝格算法 辛普森公式和龙贝格算法是数值计算中常用的数值积分方法。
它们可以用于计算函数的定积分,通过将复杂的定积分问题转化为更简单的求和问题来求解。
下面将介绍辛普森公式和龙贝格算法的原理和应用。
辛普森公式是一种通过将函数划分为多个小区间,并在每个区间内使用二次多项式逼近函数曲线的方法来求解定积分。
该公式的基本思想是将函数曲线近似看作是由一系列抛物线段组成的,然后通过对这些抛物线段的面积进行求和来获取整个函数曲线下的面积。
辛普森公式的推导基于牛顿-科特斯公式,通过将区间划分为偶数个小区间,并在每个小区间内使用二次多项式逼近函数曲线来计算定积分。
这种方法可以大大提高计算的精确性,尤其在对曲线进行高精度逼近时特别有效。
龙贝格算法是一种迭代方法,通过逐步细化区间格点来逼近定积分的方法。
它的基本思想是将区间进行二等分,然后通过递归地对子区间进行步长缩放和函数值计算,以获得更加精确的数值积分结果。
龙贝格算法的核心是通过不断加密区间格点和调整步长来逐渐提高计算精度,直到满足预设的误差要求。
这种方法在计算复杂函数的定积分时非常有用,它能够自适应地调整计算步长,并在迭代过程中逐渐收敛到期望的结果。
辛普森公式和龙贝格算法在数值计算中广泛应用于求解定积分问题。
它们适用于各种类型的函数,包括连续函数、平滑函数和非平滑函数。
通过适当选择区间划分和迭代次数,可以有效地控制计算误差,并获得满足要求的数值积分结果。
这种方法相对于传统的数值积分方法具有更高的精确性和可靠性,能够满足各种实际应用的计算需求。
总之,辛普森公式和龙贝格算法是数值计算中常用的数值积分方法。
它们通过将复杂的定积分问题转化为更简单的求和问题,并利用适当的逼近和迭代方法来提高计算精度。
这些方法在实际应用中具有很高的灵活性和可靠性,可以应对各种类型的函数和积分问题。
通过合理应用辛普森公式和龙贝格算法,我们能够更准确、更快速地求解定积分,为科学研究和工程计算提供有力的支持。
复化辛普森公式及龙贝格方法求解积分
一、实验目的及题目1. 实验目的:(1) 学习用复化辛普森公式及龙贝格方法求解积分并掌握这种方法。
(2)了解这些辛普森公式及龙贝格方法的概念,参考课本写出用复化辛普森算法以及龙贝格方法计算目标题目的程序,在matlab 中实现,并用matlab 内置的函数计算出结果,并提出存在的问题。
2. 题目:利用复化辛普森公式和龙贝格方法计算下列积分:(1)dx e x ⎰-5.002(2)dx x x ⎰202sin )2sin(cos π二、实验用仪器设备、器材或软件环境计算机、matlab 软件。
三、实验原理、程序框图、程序代码1.实验原理:根据微积分学基本定理,若被积函数f(x)在区间[a,b]上连续,只要能找到f(x)的一个原函数F(x),便可利用牛顿-莱布尼茨公式求得积分值。
但会经常遇到如下问题:找不到用初等函数,找到了原函数,但因表达式过于复杂而不便计算等等。
此时则不能用牛顿-莱布尼茨公式,因此有必要研究如下公式。
1)复化求积公式及原理由于高阶插值的不稳定性,为了提高计算积分的精度,可把积分区间分为若干个小区间,将()I f 写成这些小区间上的积分之和,然后对每一个小区间上的积分应用到辛普森公式,或柯特斯公式,并把每个小区间上的结果累加,所得到的求积公式就称为复化求积公式。
辛普森公式的数值积分公式为:⎰+++-≈ba b f b a f a f a b dx x f )]()2(4)([6)(它的集合意义为用通过三点))(,()),2(,2()),(,(b f b b a f b a a f a =+的抛物线围城的曲边形面积来代替给定函数的积分。
同梯形公式一样,也有复化辛普森公式:)()(),()()]()(4)([6)(010121b f x f a f x f x f x x f h dx x f n n k k k k ba ==++≈∑⎰-=++ 其中 n ab h x x xk k k -=+=++,2121。
龙贝格算法-数值分析-实验报告
3 / 13
一、任务综述于分析
1.1 任务
1、 根据所掌握龙贝格算法,独立编写程序,实现具体问题的求解等; 2、 自己设计一个多项式,根据设定的代数多项式进行测试,调式程序; 3、 对所设计的程序解决实际问题并分析,撰写分析报告
1.2 分析
1、 首先先明确什么是龙贝格算法,了解他的基本原理,画出流程图,编写程序代码。 2、 自己设计一个多项式,对他利用龙贝格算法求出他的积分。并与真实值比较,检测程序是否有错误。 并进一步修改完善程序。可以多试几个多项式,来判断程序的正确性。 3、 任务三实际上是求平面曲线长的问题。利用弧长微分公式可求得结果。
四、测试 ................................................................................................................................................. 8
主要参考资料
《数值分析简明教程》 《数值分析课程设计》
王能超 陈越、童若锋
高等教育出版社 浙江大学出版社
教研室签字: 年 月 日
院签字: 年 月 日
2 / 13
目录
目录 ......................................................................................................................................................... 3 一、任务综述于分析 ............................................................................................................................. 4
数值分析实验复合辛普森公式报告
实验题目:用复合辛普森公式求方程的积学生姓名:***专业:信息与计算科学学号:**********完成日期:2011/11/20西安科技大学计算机科学与技术学院实验题目:利用复合辛普森公式求方程⎰-=109/4ln xdx x 的积学生姓名: 何弯弯 学号: 0908060222 完成日期:2011/10/22 1 实验目的 1、了解复合辛普森公式的方法原理;2、利用复合辛普森公式求方程⎰-=109/4ln xdx x 的积2.1 算法原理原理:将区间[a,b]等分成N 个子区间[x(k),x(k+1)](k=0,1,…..,N -1),h=(b-a )/N ,在每个子区间[x(k),x(k+1)]上使用辛普森公式,可求得结果。
辛普森公式:])(4)(2)()([6/)]()()([6/1115.01015.0∑∑∑=-=+-=+++++=++=n k n k k k n k k k k n x f x f b f a f h x f x f x f h S其中5.0+x x 是[1,+k k x x ]得中点,即2/5.0h x x k k +=+2.2 算法步骤步骤一:输入a,b,h步骤二:代入辛普森公式求的结果2.3 程序流程图3 实验结果分析4实验心得体会通过本次实验我熟悉了用复化辛普森公式求数值积分的全过程,并更加熟悉的掌握了复化辛普生公式以及原理。
使我对数值分析这门课有了进一步的理解,为以后的学习打下了良好的基础。
参考文献[1]龚尚福,贾彭涛,靳玉萍.C/C++语言程序设计.徐州:中国矿业大学出版社,2006[2]李庆阳,王能超,易大义.数值分析(第五版).北京:清华大学出版社,2008附录(源代码)复合辛普森算法代码:#include<iostream.h>#include<math.h>double get(double x){if(x==0) x=0.000000000001;return sqrt(x)*log(x);}double g(double a,double h,double b){int i,n;double sum1,sum2=0,f;n=(int)((b-a)/h);sum1=get(a+h/2);for(i=1;i<=n-1;i++) //求f(x(k))的和{ sum1+=get(a+i*h+h/2);sum2+=get(a+i*h);}f=4*sum1+2*sum2;return f;}void main(){ double a=0,b=1,h;//给定的区间,以及步长int n;while(true){cout<<"请输入要给的步长h(h>0):";cin>>h;if(h==-1)break;double I1,f1,f2,f3;n=(int)((b-a)/h);f1=get(a);cout<<f1<<endl;f2=g(a,h,b);cout<<f2<<endl;f3=get(b);cout<<f3<<endl;I1=h/6*(f1+f2+f3);//复化辛普森公式cout<<"给定步长为h="<<h<<endl;cout<<"复化辛普森公式计算结果:I="<<I1<<endl;cout<<"所分成n个区间,n="<<n<<endl;}}。
河北工业大学数值分析实验三实验四实验报告
数值分析实验报告指导老师:宛艳萍姓名:班级:学号:实验三 复化辛卜生法,龙贝格法1.实验名称:复化辛卜生法,龙贝格法2.实验目的1)通过实际计算体会各种方法的精确度。
2)会编写用复化辛卜生、龙贝格算法求定积分的程序。
3.算法描述1)用复化辛卜生法计算积分 dxx I ⎰+=12)1/(1算法:复化辛卜生公式为S n =h/6∑∑+-=+++)]()2/(4)([11k k kn k x f h x f xf ,计算过程为:1.令,/)(n a b h -= ),2/(1h a f s +=;02=s2.对1,,2,1-=n k计算),2/(11h kh a f s s +++=)(22kh a f s s ++=3.))(24)((6/21b f s s a f h s +++= 。
2)龙贝格算法计算dxxI ⎰+=102)1/(156e ε=-算法)((12/12∑-=++=n k k n n n x f h T T ;/)(n a b h n -= n k h k x )2/1(2/1+=+)(3/122n n n n T T T S -+= )_(15/122n n n n S S S C +=)(63/122n n n n C C C R -+=用事后估计法控制精度2|5e -6n n R R -< 。
4.源程序:1)/* 用复化辛卜生公式求积分 */ #include "stdio.h" float fx(float x){double f;f=1.0/(1.0+x*x); return f; } double fs(int n){double a=0.0,b=1.0,h,s,s1,s2=0; int i;h=(b-a)/n; s1=fx(a+h/2); for(i=1;i<n;i++){s1=s1+fx(a+i*h+h/2); s2=s2+fx(a+i*h);}s=(h/6.0)*(fx(a)+fx(b)+4*s1+2*s2);return s;}void main(){printf("实验三复化辛卜生法计算机112 耿向飞学号:112434\n");printf("s(2)=%lf\ns(4)=%lf\ns(8)= %lf",fs(2),fs(4),fs(8));}2)/* 龙贝格法 */#include "stdio.h"#include "math.h"#define E 2.71828182//被积函数f(x)double fx(double x){double f;f=1/(1+x*x);return f;}//梯形公式求tndouble tx(int n){double s3=0.0,h,t,b=1.0,a=0.0;int i;h=(b-a)/n;for(i=1;i<n;i++)s3=s3+fx(i*h);t=(h/2)*(fx(a)+fx(b)+2*s3);return t;} double s(int n){double s;s=tx(2*n)+(1.0/3.0)*(tx(2*n)-tx(n ));return s;}double c(int n){double c;c=s(2*n)+(1.0/15.0)*(s(2*n)-s(n)) ;return c;}double r(int n){double r;r=c(2*n)+(1.0/63.0)*(c(2*n)-c(n)) ;return r;}void main(){double rr,pp;int n=1;rr=r(n);pp=r(2*n)-r(n);printf("实验三龙贝格法计算机112 耿向飞学号:112434\n");printf("结果为:%.15lf 误差小于等于: %.15lf",rr,pp);}5.运行结果1)复化辛卜生公式2)龙贝格算法6.对算法的理解与分析:复化辛卜生公式和龙贝格算法适用于求数值积分,而且都能提高计算积分的精度龙贝格算法其实是在复化辛卜生公式递推的基础之上生成的一种精度高,而且收敛速度也较快的一种算法。
数值分析63 复化求积公式龙贝格求积公式讲解
将积分区间 [a, b] 划分为2n等分, 即将每一个区间
[xk, xk+1]经过二等分增加了一个分点
x k ?1/2
?
1 2
(
x
k
?
x k?1)
在每个子区间 [xk, xk+1]上的积分用 辛普森公式 , 得
?x k ? 1 xk
f (x)dx ?
h 6
[
f
(
xk
)
?
4
f
(
xk
? 1/2
)
?
f (xk?1)]
?
(b ? a)5 2880n4
f
(4) (? )
?6.3.2 复化辛普森公式
将积分区间 [a, b] 划分为2n等分, 则
? ? ? I ?
b
n?1
f ( x )dx ?
x2k? 2 f ( x )d x
a
k ? 0 x2k
每个子区间 [x2k, x2k+2]上的积分用 辛普森公式 , 得
?x2 k ? 2 x2k
称为复化辛普森公式 . 记
? ? h
n?1
n?1
Sn ?
[f 6
(a) ?
4
k?0
f
( x k ? 1/2 ) ?
2
k ?1
f
(xk ) ?
f (b)]
若 f(x)? C 4[a,b], 其求积余项 为 h ? b ? a
n
Rn ( f ?
b ? a ( h )4 180 2
f (4) (? ) ?
f (b)]
称为复化梯形公式 . 记
? h
n?1
Tn
?
数学实验题目2 Romberg积分法
数学实验题目2 Romberg 积分法摘要考虑积分()()b aI f f x dx =⎰欲求其近似值,可以采用如下公式:(复化)梯形公式 110[()()]2n i i 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 →∞=这是一个收敛速度更快的一个数值求积公式,我们称为龙贝格积分法。
09-1复化辛甫生公式
2013-2014(1)专业课程实践论文题目:复化辛甫生公式牛顿-柯特斯公式是插值型求积公式,而多节点的高次插值有很大的误差,即有龙格现象,因而高阶牛顿-柯特斯公式误差会很大。
其次当8≥n 时,柯特斯系数会有正有负,从而也不能保证求积公式的稳定性。
此外,当区间],[b a 较大时,由误差表达式可以看出精确度较差。
一种实用的做法是将积分区间],[b a 等分成n 个小区间,对每个小区间采用低阶的牛顿-柯特斯公式,再将结果加起来作为积分的近似值,这就是复化牛顿-柯特斯公式。
(1)复化梯形公式将],[b a 区间n 等分,子区间长度na b h -=,于是有复化梯形公式 )],()(2)([2)]()([211110b f x f a f h x f x f h T n k k k k n k n ++=+=∑∑-=+-= 其余项公式为)()(12)](12[2103ηηf a b h f h R k n k T ''--=''-=∑-= 这是因为如果)(x f ''在区间],[b a 上连续,由介值定理存在],[b a ∈η使得)()(10ηηf f n nk k ''=''∑=。
复化辛甫生公式是在复化梯形公式的基础上演变而来的,设子区间1[,]k k x x +的中点为12k x +,复化辛甫生公式为: ))()(2)(4)((6))()(4)((611102112110b f x f x f a f h x f x f x f h S n k k n k k k k k n k n +++=++=∑∑∑-=-=+++-=类似于复化梯形公式余项的推导,可得其余项公式为:],[),()2(180)()4(4b a f h a b R n s ∈--=ηη复化辛甫生公式的算法如下:(1)输入区间端点a ,b 及等分数n/2(n 为偶数),半步长h=(b-a )/n ,(2)置),....,2,1)((n i ih a f f i =+=(3)置.0,1==Q f P ,(4)对2,...3,2-=n j ,置.,1Q f Q P f P j j ⇒+⇒++(5)输出S=6h )](24)([b f Q P a f +++。
数值分析6.3 复化求积公式、龙贝格求积公式讲解
精度不够可将步长逐次分半. 设将区间 [a, b]分为n等
分,共有n+1个分点,如果将求积区间再分一次,则
分点增至2n+1个,我们将二分前后两个积分值联系
起来加以考虑. 注意到每个子区间[xk, xk+1]经过二分
只增加了一个分点
x k 1/ 2
1 ( x k xk 1 ) 2
设hn=(ba)/n, xk=a+khn (k=0,1,,n),在[xk, xk+1]
I f ( x )dx
b a k 0 n 1 xk 1 xk
f ( x )dx
每个子区间[xk, xk+1]上的积分用梯形公式, 得
xk 1 xk
h f ( x )dx [ f ( xk ) f ( xk 1 )] 2
xk 1 xk
I
k 0
6.3 复化求积公式
从求积公式的余项的讨论中我们看到,被积函数
所用的插值多项式次数越高,对函数光滑性的要求也
越高.另一方面,插值节点的增多(n的增大),在使用
牛顿-柯特斯公式时将导致求积系数出现负数(当n≥8
时, 牛顿-柯特斯求积系数会出现负数),即牛顿-柯特
斯公式是不稳定的,不可能通过提高阶的方法来提高 求积精度.
b n 1 xk 1 xk a
I f ( x )dx
k 0
f ( x )dx
h n 1 I [ f ( xk ) 4 f ( xk 1/2 ) f ( xk 1 )] 6 k 0
n 1 n 1 h [ f (a ) 4 f ( xk 1/2 ) 2 f ( xk ) f ( b)] 6 k 0 k 1
数值分析实验报告模板-复化辛普森公式-高斯公式
《数值分析》实验报告姓 名 学 号 班 级 主讲教师指导教师实验日期一、实验名称:利用复化辛普森公式和高斯求积公式方法计算积分二、 实验目的:(1)掌握利用复化辛普森公式和高斯求积公式方法计算积分。
(2)熟悉matlab 的操作。
三、实验内容:1.利用复化辛普森公式计算积分:1、xdx x ln 1⎰2.利用高斯求积公式计算积分:1、xdx x ln 1⎰2、dx四、实验步骤(或记录):1、程序实现(源程序)利用复化辛普森公式计算积分 1.将function y=f(x)y=sqrt(x).*log(x);编入一个m 文件2.将function T_n=F_H_T(a,b,n)h=(b-a)/n; for k=0:nx(k+1)=a+k*h; if x(k+1)==0x(k+1)=10^(-10);endendT_1=h/2*(f(x(1))+f(x(n+1)));for i=2:nF(i)=h*f(x(i));endT_2=sum(F);T_n=T_1+T_2;编入一个m文件3.修改路径,在命令窗口输入S_n=S_P_S(0,1,20)利用高斯求积公式计算积分1、将function s=guassl(a,b,n)h=(b-a)/n;s=0.0;for m=0:(1*n/2-1)s=s+h*(guassf(a+h*((1-1/sqrt(3))+2*m))+guassf(a+h*((1+1/sqrt(3))+2*m))); endsI=int('sin(x)',0,1);c=(I-s)/I;d=vpa(c,10)存入一个m文件2、(1)将function y=guassf(x)y=sqrt(x).*log(x);存入一个m文件(2)将function y=guassf(x)y=sin(x)/(1+x.^2);3、运行结果(1)在命令窗口输入s=guassl(0,1,20)(2)在命令窗口输入s=guassl(0,1,20)4、程序心得:虽然是小小的程序,但也是凝结了自己很大的心血,同时也在这个过程中学到了许多的知识。
数值分析实验(4)
页脚内容1实验四 数值积分与数值微分专业班级:信计131班 姓名:段雨博 学号:2013014907 一、实验目的1、熟悉matlab 编程。
2、学习数值积分程序设计算法。
3、通过上机进一步领悟用复合梯形、复合辛普森公式,以及用龙贝格求积方法计算积分的原理。
二、实验题目 P1371、用不同数值方法计算积分049xdx =-⎰。
(1)取不同的步长h .分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h ,使得精度不能再被改善?(2)用龙贝格求积计算完成问题(1)。
三、实验原理与理论基础1.1复合梯形公式及其复合辛普森求解[]()()()11101()()222n n n k k k k k h h T f x f x f a f x f b --+==⎡⎤=+=++⎢⎥⎣⎦∑∑误差关于h 的函数:()()212n b a R fh f η-''=-页脚内容2复合辛普森公式:()()()()111/201426n n n k k k k h S f a f x f x f b --+==⎡⎤=+++⎢⎥⎣⎦∑∑误差关于h 的函数:()()441802n n b a h R f I S f η-⎛⎫=-=- ⎪⎝⎭1.2龙贝格求积算法:龙贝格求积公式是梯形法的递推化,也称为逐次分半加速法,它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种计算积分的方法,同时它有在不断增加计算量的前提下提高误差的精度的特点。
计算过程如下:(1)取0,k h b a ==-,求:()()()[]()00.,.2hT f a f b k a b =+→⎡⎤⎣⎦令k 1记为区间的二分次数 (2)求梯形值02k b a T -⎛⎫⎪⎝⎭即按递推公式12102122n n n k k h T T f x -+=⎛⎫=+ ⎪⎝⎭∑计算0k T .(3)求加速值,按公式()()()111444141m m k k k mm m m m T T T +--=---逐个求出T 表的地k 行其余各元素()()1,2,,k j j T j k -=(4)若()()001k k T T ε--<(预先给定的精度),则终止计算,并取()()0;1k T I k k ≈+→否则令转(2)继续计算。
MATLAB实现复化梯形公式复化SIMPSON公式以及ROMBERG积分
MATLAB实现复化梯形公式复化SIMPSON公式以及ROMBERG积分复化梯形公式、复化SIMPSON公式和ROMBERG积分是常用的数值积分方法,用于对定积分进行数值近似计算。
下面将介绍MATLAB实现这三种方法的具体步骤。
复化梯形公式使用多个等距的子区间进行近似计算,然后将子区间上的梯形面积求和。
MATLAB代码如下:```matlabh=(b-a)/n;%子区间宽度x=a:h:b;%子区间节点y=f(x);%子区间节点对应的函数值result = h * (sum(y) - (y(1) + y(end)) / 2); % 计算近似积分值end```复化SIMPSON公式同样使用多个等距的子区间进行近似计算,但是每个子区间上使用二次多项式拟合。
MATLAB代码如下:```matlabh=(b-a)/n;%子区间宽度x=a:h:b;%子区间节点y=f(x);%子区间节点对应的函数值result = (h / 3) * (y(1) + y(end) + 4 * sum(y(2:2:end-1)) + 2 * sum(y(3:2:end-2))); % 计算近似积分值end```3. ROMBERG积分(Romberg Integration)ROMBERG积分是一种逐次精化的数值积分方法,通过不断提高梯形法则的阶数进行近似计算。
MATLAB代码如下:```matlabfunction result = romberg_integration(f, a, b, n)R = zeros(n, n); % 创建一个n*n的矩阵用于存储结果h=b-a;%子区间宽度R(1,1)=(h/2)*(f(a)+f(b));%计算初始近似积分值for j = 2:nh=h/2;%缩小子区间宽度sum = 0;for i = 1:2^(j-2)sum = sum + f(a + (2 * i - 1) * h);endR(j, 1) = 0.5 * R(j-1, 1) + (h * sum); % 使用梯形法则计算积分值for k = 2:jR(j, k) = R(j, k-1) + (R(j, k-1) - R(j-1, k-1)) / ((4^k) - 1); % 使用Romberg公式计算积分值endendresult = R(n, n); % 返回最终近似积分值end```以上是MATLAB实现复化梯形公式、复化SIMPSON公式以及ROMBERG积分的代码。
数值分析实验报告2
实验报告一、实验名称复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式及自适应辛普森积分。
二、实验目的及要求1. 掌握复合梯形求积计算积分、复合辛普森求积计算积分、龙贝格求积计算积分和自适应辛普森积分的基本思路和步骤.2. 培养Matlab 编程与上机调试能力. 三、实验环境计算机,MATLAB 软件 四、实验内容1.用不同数值方法计算积分94ln 10-=⎰xdx x 。
(1)取不同的步长h 。
分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确指比较两个公式的精度,是否存在一个最小的h ,使得精度不能再被改善。
(2)用龙贝格求积计算完成问题(1)。
(3)用自适应辛普森积分,使其精度达到10-4。
五、算法描述及实验步骤1.复合梯形公式将区间[a,b]划分为n 等份,分点x k =a+ah,h=(b-a)/h,k=0,1,...,n ,在每个子区间[x k ,x k +1](k=0,1,...,n-1)上采用梯形公式(1.1),得)]()([2)(b f a f ab dx x f ba+-≈⎰(1.1) )]()(2)([2)]()([211110b f x f b f hx f x f h T n k k k n k k n ++=+=∑∑-=+-= (1.2)),(),(12)(''2b a f h a b f R n ∈--=ηη (1.3)其中Tn 称为复合梯形公式,Rn 为复合梯形公式的余项。
2.复合辛普森求积公式将区间[a,b]划分为n 等份,在每个子区间[x k ,x k +1](k=0,1,...,n-1)上采用辛普森公式(1.4),得)]()2(4)([6b f ba f a f ab S +++-=(1.4))]()(2)(4)([6)]()()([611102/112/11b f x f x f b f hx f x f x f h S n k k n k k k k n k k n +++=++=∑∑∑-=-=+++-= (1.5) ),(),()2(180)()4(4b a f h a b f R n ∈-=ηη (1.6)其中Sn 称为复合辛普森求积公式,Rn 为复合辛普森求积公式的余项。
复合辛普森公式计算
复合辛普森公式计算复合辛普森公式是数值分析中用于计算定积分近似值的一种重要方法。
对于咱们从小学到高中的学习阶段来说,可能接触得不多,但在大学的数学课程里,那可是个“常客”。
咱先来说说这个复合辛普森公式到底是咋回事。
简单来讲,它就是把一个积分区间分成好多小段,然后在每个小段上用二次函数去近似原来的函数,最后把这些小段的积分值加起来,就得到了整个区间的近似积分值。
比如说,有个函数 f(x) = x^2 + 3x + 2 ,要计算它在区间 [0, 5] 上的定积分。
咱就可以用复合辛普森公式来搞一搞。
那这个公式到底有啥用呢?我给您讲个事儿。
之前我有个学生,叫小李,特别喜欢钻研数学。
有一次,老师布置了一道用数值方法计算定积分的作业,别的同学都觉得太难,随便糊弄一下就交差了。
可小李不一样,他就盯上了这复合辛普森公式。
他先是认真地把教材翻了好几遍,把公式的原理和推导过程弄得明明白白。
然后呢,就开始动手算那道作业题。
算的过程中,一会儿抓耳挠腮,一会儿又眉开眼笑。
我在旁边观察着,心里挺好奇他到底能不能算出来。
只见他一会儿在纸上写满了密密麻麻的式子,一会儿又擦掉重新来过。
终于,经过几个小时的奋战,他算出了结果,而且和标准答案几乎一模一样!他那兴奋的劲儿啊,就别提了,感觉像是发现了新大陆。
从那以后,小李对数学的兴趣更浓了,成绩也越来越好。
这复合辛普森公式啊,就像是一把神奇的钥匙,能帮助我们打开数学世界里一些复杂问题的大门。
在实际应用中,比如在物理学中计算曲线下的面积,工程学中计算不规则图形的面积等等,都能派上用场。
要想熟练掌握复合辛普森公式,可得下一番功夫。
首先,得把公式记牢,这是基础。
然后,多做几道练习题,找找感觉。
总之,复合辛普森公式虽然有点复杂,但只要咱有耐心,有决心,就一定能把它拿下!希望同学们在学习数学的道路上,遇到像复合辛普森公式这样的难题时,不要害怕,勇敢地去探索,说不定会有意外的收获呢!。
数值分析龙贝格实验报告
实验三 龙贝格方法【实验类型】 验证性【实验学时】 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;}。
MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)
佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 数值积分专业班级 机械工程 姓 名 余红杰 学 号 2111505010 指导教师 陈剑 成 绩 日 期 月 日一、实验目的1、理解如何在计算机上使用数值方法计算定积分⎰badxx f )(的近似值;2、学会复合梯形、复合Simpson 和龙贝格求积分公式的编程与应用。
3、探索二重积分⎰⎰Ddxdy y x f ),(在矩形区域},|),{(d y c b x a y x D ≤≤≤≤=的数值积分方法。
二、实验要求(1) 按照题目要求完成实验内容; (2) 写出相应的Matlab 程序;(3) 给出实验结果(可以用表格展示实验结果); (4) 分析和讨论实验结果并提出可能的优化实验。
(5) 写出实验报告。
三、实验步骤1、用不同数值方法计算积分149xdx =-(1)取不同的步长h ,分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确值比较两公式的精度。
(2)用龙贝格求积计算完成问题(1)。
2、给出一种求矩形区域上二重积分的复化求积方法,然后计算二重积分xyDedxdy -⎰⎰,其中积分区域{01,01}D x y =≤≤≤≤。
1.%Int_t.m 复化梯形:function F = Int_t(x1,x2,n)% 复化梯形求积公式% x1,x2 为积分起点和中点%分为n个区间,没选用步长可以防止区间数为非整数。
%样点矩阵及其函数值:x = linspace(x1,x2,n+1);y = f(x);m = length(x);%本题中用Matlab计算端点位置函数值为NaN,故化为零:y(1) = 0;y(m) = 0;%算出区间长度,步长h:h = (x2 -x1)/n;a = [1 2*ones(1,m-2) 1];%计算估计的积分值:F = h/2*sum(a.*y);%f.mfunction y = f(x)y = sqrt(x).*log(x);%run11.mclc,clear;%分为10个区间,步长0.1的积分值:F = Int_t(0,1,10);F10 = F%分为100个区间F = Int_t(0,1,100);F100 = F%误差计算W10 = abs((-4/9)-F10);W100 = abs((-4/9)-F100);W = [W10 W100]%复化辛普森:%Int_s.mfunction F = Int_s(x1,x2,n)% 复化梯形求积公式% x1,x2 区间,分为n个区间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析与实验课程设计班级:姓名:学号:08级应用数学《数值分析与实验(实践)》任务书一、设计目的通过《数值分析与实验(实践)》实践环节,掌握本门课程的众多数值解法和原理,并通过编写C语言或matlab程序,掌握各种基本算法在计算机中的具体表达方法,并逐一了解它们的优劣、稳定性以及收敛性。
在熟练掌握C语言或matlab语言编程的基础上,编写算法和稳定性均佳、通用性强、可读性好,输入输出方便的程序,以解决实际中的一些科学计算问题。
二、设计教学内容1、数值方法的稳定性;2、利用牛顿法和割线法程序求出非线性方程的解,并比较它们之间的优劣;3、高斯消去法和列主元高斯消去法求解线性方程组;雅克比法和高斯-赛德尔迭代法解方程组;4、利用Lagrange插值多项式求未知点的近似值;5、利用所给数据进行数据的多项式和可转化成多项式形式的函数拟合;6、编写复化辛卜生公式和龙贝格算法,通过实际计算体会各种方法的精确度;7、利用改进Euler方法和四阶Runge-Kutta方法求解初值问题的微分方程组;8、利用幂法求矩阵按模最大的特征值及对应特征向量;(8个中选取1个)三、设计时间2011—2012学年第1学期:第16周共计一周教师签名:2011年12月12日前言数值计算方法是一种利用计算机解决数学问题的数值近似解方法,特别是无法用人工过计算器计算的数学问题。
数值计算方法常用于矩阵高次代数方程矩阵特征值与特征向量的数值解法,插值法,线性方程组迭代法,函数逼近,数值积分与微分,常微分方程初值问题数值解等。
作为数学与计算机之间的一条通道,数值计算的应用范围已十分广泛,作为用计算机解决实际问题的纽带,数值算法在求解线性方程组,曲线拟合、数值积分、数值微分,迭代方法、插值法、拟合法、最小二乘法等应用广泛。
数值计算方法是和计算机紧密相连的,现代计算机的出现为大规模的数值计算创造了条件,集中而系统的研究适用于计算机的数值方法是十分必要的。
数值计算方法是在数值计算实践和理论分析的基础上发展起来的。
通过数值计算方法与实验将有助于我们理解和掌握数值计算方法基本理论和相关软件的掌握,熟练求解一些数学模和运算,并提高我们的编程能力来解决实际问题。
摘要随着计算机的迅速发展和广泛应用,在众多的领域内,人们越来越认识到科学计算是科学研究的新方法,当今理学学生更应具备这方面的知识与能力,计算方法作为科学计算的一门主干课程又是我们的必修课,我们要认真学习,数值计算方法不只注重理论分析还要求实验和实践,这样才能使我们更灵活地掌握数值计算方法,所以我们也要认真做好数值分析与实验实践环节。
复化辛卜生公式可以算是公路线行坐标计算的万能公式,不仅对直线、圆曲线都能用一套公式进行计算,而且它的精度可以人为判断。
对于不易直接用积分公式计算的原函数,通常用复合梯形求积公式或复合抛物线求积公式等方法,但这些方法精度不高,收敛的速度缓慢。
为了提高收敛速度,减少计算量,人们寻求其他方法。
[关键字]:计算方法;复化辛卜生公式;龙贝格算法目录前言 (3)摘要 (4)实验设计内容 (6)一.复化辛普森求积公式求解定积分 (6)1实验目的 (6)2实验内容 (6)3.算法 (6)程序 (6)4运行结果 (7)二、用龙贝格求积公式求解定积分 (7)1实验目的 (7)2 实验内容 (7)算法 (7)程序 (8)3.4运行结果 (8)三、结果分析 (9)四、参考文献 (9)实验设计内容一、 复化辛普森求积公式求解定积分1.实验目的:通过实际计算体会各种方法的精确度;会编写用复化辛卜生求定积分的程序;2.实验内容:用复化辛普森求积公式计算积分⎰-8.002dx e x 的近似值,自己设 置不同精度要求,对结果进行比较分析。
3.算法:将区间[],a b 二等分,用3个插值节点构造抛物线,并以此抛物线为顶的曲边梯形面积近似以曲线()y f x =为顶的曲边梯形面积。
经推导得到()()4()()62b a b a a b f x dx f a f f b -+⎡⎤≈++⎢⎥⎣⎦⎰ () 或001122()()()()ba f x dx A f x A f x A f x ≈++⎰ () 其中026b a A A -==,142()()63A b a b a =-=- 称式()或()为求积公式。
可以证明:若函数()f x 在[],a b 上有连续的4阶导数,Simpson 公式的截断误差为2()()()4()()62b a b a a b R f f x dx f a f f b -+⎡⎤=-++⎢⎥⎣⎦⎰ y=f(x)a b O y xy=L 2(x)2b a +5(4)()()2880b a f η-=- a b η≤≤ () 记a = 0,b = 1,f(x) = x e -,则'()x x e f -=- ''()x x e f -= '''()x x e f -=- (4)()x x e f -=因此,利用Simpson 公式计算得00.51()()4()()6210(4)0.63236b a a b S f f a f f b e e e ----+⎡⎤=++=⎢⎥⎣⎦-++= 由4(4)4()11()()()()()18021802b a b a I f S f f e ηη----=-=- (0,1)η∈ 得截断误差估计为:4111()()()0.000347218022880I f S f -≤-==程序如下:function fsimpson(a,b,n) /*调用matlab 的函数*/h = (b-a)/n; /*定义自变量*/t = h*(f(a)+f(b))/6;for i = 0:(n-1)t = t+h*(4*f(a+(i+1/2)*h)+2*f(a+i*h))/6; /*定义函数*/end /*结束函数*/I = t在Matlab 中输入命令:fsimpson(0,1,1000)则输出结果为: 759262.0=I二、 用龙贝格求积公式求解定积分1.实验目的:通过实际计算体会各种方法的精确度;会编写用复化龙贝格求定积分的程序;2 实验内容:用龙贝格求积公式计算积分⎰-8.002dx e x 的近似值,自己设 置不同精度要求,对结果进行比较分析。
3.算法:(1)置1N =,精度要求ε,1h b a =- (2)计算(0)1T =[]1()()2h f a f b +(3)置2N h =12N h ,并计算(0)(0)22211((21))2N N N N N k T T h f a k h ==++-∑(4)置M N =,2N N = ,1k =(5)计算(1)(1)()2441k k k k M M M k T T T ---=-(6) 若1M =,转(7);否则,置2M M =,1k k =+,转(5) (7) 若()(1)11k k T T ε--,则停止计算(输出()1k T ),否则转(3)如此加工数据的过程叫龙贝格算法,如下图所示:程序如下:function z=romberg(a,b,e) /*调用matlab的函数*/ h=(b-a); /*定义自变量*/f=exp(-x.^2);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))>=ek=k+1;h=h./2;for j2=1:2.^(k-2)ff(1,j2)=f(a+h*(j2-1/2));endfff=sum(ff).*h/2;TT(1,k)=TT(1,k-1)./2+ffffor j1=2:kTT(j1,k-j1+1)=4^(j1-1).*TT(j1-1,k-j1+2)./(4^(j1-1)-1)-TT(j1-1,k-j1+1)/( 4^(j1-1)-1);z=TT(j1,k-j1+1);endend /*结束函数*/ function r=f()r=exp(-x.^2)运算结果>> z=romberg(0,1,10e-2)z =>> vpa(z,7)ans =.>> z=romberg(0,1,10e-5)TT =0 0TT =0 00 0 0 z =>> vpa(z,7)ans =.>> z=romberg(0,1,10e-10)TT =0 0TT =0 00 0 0 TT =0 0百度文库- 让每个人平等地提升自我11110 0 00 0 0 0TT =0 00 0 00 0 0 00 0 0 0 0z =>> vpa(z,7)ans =.三、结果分析龙贝格算法其实是在复化辛卜生公式递推的基础之上生成的一种精度高,而且收敛速度也较快的一种算法。
对于复化辛卜生算法来说,程序比较容易编写,而龙贝格算法,程序中需要注意用龙贝格算法加速收敛的时候如何处理判断以后生成的返回值才能使程序正常运行,龙贝格算法可以达到预期目的,求得所需要的结果。
四、参考文献[1].孙志终吴宏伟闻震初.计算方法与实验.南京:东南大学出版社2005[2].孙志忠. 数值分析全真试题试题解析. 南京:东南大学出版社2004[3]. Sorer K,Bulirsch R. 数值分析引论孙文渝南京:南京大学出版社1995[4] 王能超.数值分析简明教程.北京:高等教育出版社,1984[5] 袁慰平,孙志忠,吴宏伟.计算方法与实习.南京:东南大学出版社,2005。