几种常用数值积分方法的比较 下载本文

学科分类号 110.3420

本 科 毕 业 论 文

题 目 几种常用数值积分方法的比较 姓 名 潘晓祥 学 号 1006020540200 院 (系) 数 学 与 计 算 机 科 学 学 院 专 业 数学与应用数学 年 级 2010 级 指导教师 雍 进 军 职 称 讲 师

二〇一四年五月

贵州师范学院本科毕业论文(设计)诚信声明

本人郑重声明:所呈交的本科毕业论文(设计),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。

本科毕业论文作者签名:

年 月 日

贵州师范学院本科毕业论文(设计)任务书

毕业设计题目 作 者 姓 名 所属学院 指导教师签名 潘晓祥 数学与计算机科学学院 雍进军 讲师 几种常用数值积分方法的比较 学号 专业 职称 1006020540200 数学与应用数学 讲师 年级 班级 2010级 四班 2013年7月10日 主 要 目 标 开题日期 1.了解什么数值积分基本思想和一些常用的数值积分方法; 2.对各种数值积分方法的误差以及代数精度进行分析; 3.对各积分方法进行比较总结出优缺点。 主 要 要 求 通过对几种常用的数值积分方法进行了的分析,并用这几种方法对被积函数是普通函数做了数值积分,并在计算机上进行实验。数值积分是计算方法或数值分析理论中非常重要的内容,数值积分方法也是解决实际计算问题的重要方法,对几种常用数值积分方法的分析很必要。 本文通过对复化求积公式, Newton—Cotes求积公式, Romberg求积公式,高斯型求积公式进行分析讨论并在计算机上积分实验,从代数精度,求积公式误差等角度对这些方法进行分析比较,并总结出每种求积分法的优缺点以及实用性。 主要内容 贵州师范学院本科毕业论文(设计)开题报告书

论 文 题 目 作 者 姓 名 所属学院 指导教师姓名 题目性质 选题的原由: 研究意义: 数值积分是数学上的重要课题之一,是数值分析中的重要内容之一,也是数学的研究重点.并在实际问题及应用中有着广泛的应用.常用于科学与工程的计算中,如涉及到积分方程,工程计算,计算机图形学,金融数学等应用科学领域都有着相当重要的应用,所以研究数值积分问题有很重要的意义. 数值积分是研究如何求出一个积分的数值.这一课题的起源可追溯到古代,其中一个突出的例子是希腊人用内接与外接正多边形推算出圆面积的方法.也正是此法使阿基米德得以求出π值得上界与下界,若干世纪以来,尤其是十六世纪后,已提出了多种数值积分方法,其中有矩形求积法,内插求积法,牛顿科特斯公式,复化求积公式,龙贝格求积公式,高斯型求积公式.但各种方法都有特点,在不同的情况下试用程度不同,我们将着重从求积公式的代数精度和余项等角度对这些方法进行分析比较. 研究动态: 这些年来,有关数值积分的研究已经成为一个很活跃的研究领域,历史上,阿基米德,牛顿,欧拉,高斯,切比雪夫等人都对此有过贡献.研究出各种各样的数值求积公式,但一个好的数值求积公式应该满足:计算简单,误差小,代数精度高.我们将对矩形求积法,内插求积法,牛顿科特斯公式,化求积公式,贝格求积公式,斯型求积公式进行比较.对数值求积公式能有进一步的了解和学习. 主要内容: 1 数值积分方法的基本思想 2 几类常用数值积分方法的基本分析 2.1 Newton—Cotes求积公式 2.2 复化求积公式 2.3 Romberg求积公式 2.4 高斯型求积公式 3 几类数值积分方法的简单比较评述 4 利用MATLAB编程应用对几类求积算法的分析比较 潘晓祥 数学与计算机科学学院 雍进军 几种常用数值积分方法的比较 学号 专业 职称 应用研究 1006020540200 数学与应用数学 讲师 年级 班级 预计字数 日期 2010级 数本(4)班 5000.00字 2013年7月05 日 研究方法: 本论文主要通过对相关文献和书籍的参考,合自己的见解,复化求积公式,Newton—Cotes求积公式,Romberg求积公式,高斯型求积公式进行讨论并进行上机实验,从代数精度,求积公式误差等角度对这些方法进行分析比较. 完成期限和采取的主要措施: 本论文计划用6个月的时间完成,阶段的任务如下: (1)7月份查阅相关书籍和文献; (2)8月份完成开题报告并交老师批阅; (3)9月份完成论文初稿并交老师批阅; (4)10月份完成论文二搞并交老师批阅; (5)11月份完成论文三搞; (6)12月份定稿. 主要措施:考相关书籍和文献,合自己的见解,老师的指导下和同学的帮助下完成 主要参考文献及资料名称: [1] 关治. 陆金甫. 数学分析基础(第二版) [M]. 北京:等教育出版社.2010.7 [2] 胡祖炽. 林源渠. 数值分析 [M] 北京:等教育出版社.1986.3 [3] 薛毅. 数学分析与实验 [M] 北京:业大学出版社 2005.3 [4] 徐士良. 数值分析与算法 [M]. 北京:械工业出版社2007.1 [5] 王开荣. 杨大地. 应用数值分析 [M] 北京:等教育出版社 2010.7 [6] 杨一都. 数值计算方法[M]. 北京:等教育出版社 . 2008.4 [7] 韩明. 王家宝. 李林. 数学实验(MATLAB)版[M]. 上海:济大学出版社 2012.1 [8] 圣宝建. 关于数值积分若干问题的研究[J]. 南京信息工程大学. 2009.05.01. : 42 [9] 刘绪军. 几种求积公式计算精确度的比较[J]. 南京职业技术学院. 2009. [10] 史万明.吴裕树.孙新.数值分析[M]. 北京理工大学出版社.2010.4. 指导教师意见: 签 名: 年 月 日

开 题 报 告 会 纪 要

时间 姓 名 与 会 人 员 雍进军 邓喜才 李晟 龙林林 2013年8月26日 职务(职称) 导师(讲师) 副教授 副教授 组长 姓 名 地点 职务(职称) 宁静楼229教师办公室 姓 名 职务(职称) 会议记录摘要: 指导小组针对课题《二次函数性质的应用》提问了以下问题以及报告人的回答: 雍老师问:选择此题目的目的? 潘晓祥答:随着计算机和计算方法的飞速发展,几乎所有学科都走向定量化和精确化,计算数学中的数值计算方法则是解决“计算”问题的桥梁和工具。 邓老师问:对这个问题进行研究有什么实际的意义? 潘晓祥答:计算方法既有数学类课程中理论上的抽象性和严谨性,又有实用性和实验性的技术特征,计算方法是一门理论性和实践性都很强的学科.在科学研究和工程技术中都要用到各种计算方法.例如,在航天航空、地质勘探、汽车制造、桥梁设计、 天气预报和汉字字样设计中都有计算方法的踪影。 李老师问:对这个问题你有什么自己的看法? 潘晓祥答:随着计算机技术的迅速发展和普及,现在计算方法课程几乎已成为所有理工科学生的必修课程.我们知道,计算能力是计算工具和计算方法的效率的乘积,提高计算方法的效率与提高计算机硬件的效率同样重要.科学计算已用到科学技术和社会生活的各个领域中.所以,研究数值计算方法可以让数学的应用更大更广。 会议主持人签名: 记录人签名: 年 月 日 指导小组意见 学院 负责人签名: 意 见 负责人签名: 年 月 日

年 月 日

贵 州 师 范 学 院

数学与计算机科学 学院指导教师指导本科毕业论文情况登记表

论文(设计) 题 目 学生姓名 所属学院 指导教师姓名 指导时间 潘晓祥 数计学院 雍进军 指导地点 学号 专业 职 称 指 导 内 容 几种常用数值积分方法的比较用 1006020540200 数学与应用数学 讲师 年级 班级 学 历 指导教师签名 2010级 四班 硕士 备 注 面授 电子邮件 电子邮件 2013年06月10日 致远楼416 论文选题,资料准备 2013年06月22日 2013年06月26日 网上 网上 确定毕业论文选题 怎样撰写毕业论文开题报告 2013年06月28日 网上 指导学生撰写开题报告 电子邮件 2013年07月14日 2013年07月17日 2013年08月21日 2013年08月28日 2013年9月09日 2013年11月28日 2013年12月04日 2013年12月08日 2013年12月12日 2013年12月16日 网上 手机 手机 网上 网上 网上 手机 网上 网上 网上 帮助学生查找有关参考文献 如何构思自己的毕业论文 听取学生毕业论文写作进展情况汇报 解答学生在论文写作中遇到的疑惑 帮助学生查找有关参考文献 如何规划自己的论文 怎样写好论文引言 怎样写好论文引言 怎样写论文摘要 怎样选取论文关键词 电子邮件 手机飞信 手机飞信 电子邮件 电子邮件 电子邮件 手机飞信 电子邮件 电子邮件 电子邮件 2013年12月20日 2014年01月05日 网上 手机 怎样编辑论文中的公式 督促学生在寒假中写好论文的初稿 电子邮件 电子邮件 面授 面授 面授 面授 2014年02月27日 宁静楼219 检查学生论文完成情况 2014年03月03日 宁静楼219 对学生的论文初稿提出修改时意见 2014年03月07日 宁静楼219 解答学生在修改时的困惑 2014年03月11日 宁静楼219 指导学生修改论文

贵州师范学院数学与计算机科学学院本科毕业论文(设计)

交叉评阅表

学院(盖章): 学号 1006020540200 姓名 潘晓祥 专业 数学与应用数学 论文(设计)题目 几种常用数值积分方法的比较 班级 四班 评语: 该同学在论文撰写过程中对相关文献阅读范围广泛,方法正确,内容完整,能综合运用所学知识分析和解决实际问题。毕业论文撰写过程中态度端正,勤奋刻苦。论文研究了Newton—Cotes求积公式、复化求积公式、Romberg积分、高斯积分方法,通过算例分析,得出几种常用数值积分方指法是解决实际计算问题的重要方法。 导 论文结构合理,符合逻辑,文章层次分明,语言准确,文字通顺,达到规范性要求,建议作为教学士论文答辩。 师 意 见 成绩: (满分100分) 指导教师(签名): 年 月 日 评语: 该同学具备较好的基础理论与专业知识,学习态度认真,阅读教师指定的参考资料、文献,较好的完成了任务书规定的工作量。 论文研究了Newton—Cotes求积公式、复化求积公式、Romberg积分、高斯积分方法,通过算例分析,得出几种常用数值积分方法是解决实际计算问题的重要方法。 论文结构合理,符合逻辑,文章层次分明,语言准确,文字通顺,达到本科毕业论文相关要求。同意参加答辩。 评阅教师意 见 成绩: (满分100分) 评阅教师(签名): 年 月 日

贵州师范学院本科毕业论文答辩记录表

论文题目 作者姓名 所属学院 指导教师 姓名、职称 几种常用的多项式插值方法 潘晓祥 数计 学号 专业 1006020540200 数学与应用数学 雍进军 讲师 答 辩 会 纪 要 年级 班级 2010级 本科(四)班 时间 姓 名 答辩 小组 成员 崔忠伟 廖玉梅 左羽 2014年 5 月11 日 职务(职称) 教授 副教授 讲师 姓 名 地点 职务(职称) 致远楼406 姓 名 职务(职称) 答辩中提出的主要问题及回答的简要情况记录: 1.自己做的有哪些? 答:第11页至第12页,总结进行比较。 2.程序运行过没有? 答:运行过。 3.20页程序代码中,if后的是什么符号? 答:连接作用的符号。 4.解释一下什么时候用分号,什么时候不用? 答:回答不清。 5.摘要中英文拼写有错 答辩后修改 答辩小组负责人签名:左羽 记录人签名:梅林林 2014年 5 月11 日 答 辩 小 组 意 见 评语: 该生能在规定时间叙述论文的主要内容,对提出的问题一般能回答,无原则错误。答辩小组经过充分讨论,根据该生论文质量和答辩中的表现,同意评定论文成绩为“中等”。 评定成绩:77 负责人(签名):左羽 2014 年 5月11日

目 录

摘 要 ...................................................................... 1 Abstract .................................................................... 2 1 前 言 ................................................................... 3 2 数值积分方法的基本思想 ................................................... 3 3 几类常用数值积分方法的简单分析 .......................................... 5

3.1 Newton—Cotes求积公式 .............................................. 5 3.2 复化求积公式 ........................................................ 6 3.3 Romberg求积公式 ................................................... 7 3.4 高斯型求积公式 ..................................................... 8 4 几类数值积分方法的简单比较评述 ........................................... 9 5 利用MATLAB编程应用对几类求积算法的分析比较 ............................ 10 结束语 ..................................................... 错误!未定义书签。 致 谢 ..................................................................... 14 附 录 ..................................................................... 16

贵州师范学院毕业论文(设计)

摘 要

我们在求函数的积分时,往往因为原函数非常复杂以至于难以求出或用

初等函数表示,这让我们计算起来非常困难,所以我们只能想办法求它的近似值,因此直接借助牛顿--莱布尼兹公式计算定积分的情况是非常少见的。这时候数值积分就是解决这种问题的一种很好很有效的方法。本文从数值积分问题的产生出发,详细介绍了一些数值积分的常用方法(Newton—Cotes求积公式,复化求积公式,Romberg求积公式,高斯型求积公式)并对其进行了简要的分析,在探讨了这些数值积分算法的优缺点的理论之外,我们还将这些数值积分算法在计算机上通过matlab软件编程实现应用,并分别用各自求积公式进行运算,以此来分析比较各种求积公式的代数精度和计算误差。

关键词 :数值积分;求积公式;代数精度

1

贵州师范学院毕业论文(设计)

Abstract

function is very complex that it is difficult to find the elementary functions,

which makes u We in the function for the integration, often because the original s very difficult to calculate, so we can only think of a way to find the approximate value, thus directly with Newton - Leibniz formula calculating definite integral situation is very rare. When numerical integration is to solve this problem in a very effective method. From the numerical integration problem, introduces some methods of numerical integration (Newton - Cotes quadrature formula, composite quadrature formulas, Longbei lattice quadrature formula, Gauss type quadrature formulas) and has carried on brief analysis, discusses the advantages and disadvantages of these numerical integration algorithm theory, we will these numerical integration algorithm in the computer by MATLAB software programming application, and separately with their respective quadrature formula for computing, in order to analyze the algebraic calculation precision and error comparison of various quadrature formulas.

Keywords: Numerical integration; Calculationmeth; numerical analysis

2

贵州师范学院毕业论文(设计)

1 前 言

微积分的发明是世界数学史上一项辉煌的成就。但在实际求积问题的时候,求解积分却有着非常多局限性。比如对于定积分?af(x)dx在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里茨公式I??af(x)dx?F(b)?F(a)可以计算定积分的值,但在很多情况下f(x)的原函数不易求出或非常复杂。被积函数f(x)的原函数很难用初等函数表达出来,例如

f(x)?sinx?x2,e等;有的xbb函数f(x)的原函数F(x)存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式。因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的。另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值。因此,探讨近似计算的数值积分方法是有明显的实际意义的即有必要研究定积分的数值计算方法,以解决定积分的近似计算。而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数f(x)在一些节点上的信息求出定积分的近似值。

在很多实际应用中,只能知道积分函数在某些特定点的取值比如天气测量中的气温、湿度、气压等,医学测量中的血压、浓度等等。通过研究,我们将会更熟练掌握一些数值积分方法去计算一些特定条件的数值计算,以便我们得到自己想要的结果。 2 数值积分方法的基本思想

在数学分析中,计算连续函数f(x)在区间[a,b]上的积分是通过f(x)的原函数F(x),由下列定积分公式

?baf(x)dx?F(b)?F(a)

得到的。但由于大量被积函数的原函数不能用初等函数表示,因此,很难用

3

贵州师范学院毕业论文(设计)

求原函数的公式?af(x)dx?F(b)?F(a)得到积分;有些被积函数f(x)不是明显知道的,例如由数值表给出它的离散值,或者是它被定义为某个微分方程的解,而这个微分方程是不能显示解出的。这说明,按?af(x)dx?F(b)?F(a)公式计算定积分是有很大局限性的。

因而常常采用在电子计算机上很有效的数值积分方法。 我们从定积分的定义

bb?baf(x)dx?(b?a)?C(n,k)f(xk)

k?0bnnf(k?)?xk式的几何意义,??af(x)dx?lim出发。推导出两个简单的数值积分公式。n??k?1就是把整块曲线梯形的面积积分成若干个小曲边梯形面积的和,当无限细分时这个和取极限就是真正曲边梯形面积。去掉取极限这一步,用有限个小曲边梯形面积的和,代替整块的曲边梯形面积,从而求得一个近似值,这就是数值积分的基本思想。根据小区间的不同分割方法和各分点f(ζ)值的不同选择,就得到不同的数值积分公式。

数值求积公式是取?a,b?上若干个点xk处的高度f(xk),通过加权Ak后,再求和

?Af(x)

kkk?0n从而得到积分的近似值。数值求积公式写成一般形式

?baf(x)dx??Akf(xk)

k?0n式中xk称求积节点,Ak称求积系数,也称伴随节点xk的权。当积分区间?a,b?确定后,求积系数Ak仅仅与节点xk的选取有关,而不依赖被积函数f(x)的具体形式。记

R?f???f(x)dx??Akf(xk)

ak?0bn

4

贵州师范学院毕业论文(设计)

把R?f?称为求积公式的截断误差或余项。

数值求积方法的特点是直接利用积分区间?a,b?上一些离散节点的函数值进行线性组合来近似计算定积分的值,从而将定积分的计算归结为函数值的计算,这就避开了牛顿-莱布尼兹公式需要寻求原函数的困难,并为计算机求积分提供了可行性。 3 几类常用数值积分方法的简单分析 3.1 Newton—Cotes求积公式

常用的梯形公式和Simpson公式是低阶的牛顿-柯特斯公式,牛顿-柯特斯

公式是积分区间上等距节点的插值求积公式。插值求积公式在积分区间上,所取节点是等距时称为牛顿-柯特斯公式,即

?baf(x)dx?(b?a)?C(n,k)f(xk)

k?0n其中C(n,k)为Cotes求积公式的系数,是n和k的函数。 当n=1时,为梯形公式:

?baf(x)dx?(b?a)[f(a)?f(b)] 2梯形公式的代数精度为1,有两个积分节点。 当n=2时,为Simpson公式:

?baf(x)dx?(b?a)a?b[f(a)?4f()?f(b)] 62Simpson公式的代数精度为3,有三个积分节点。

由于只增加一个节点,其代数精度增加2,由此可知,Simpson公式比梯形公式代数精度高。

当n=4时,Newton—Cotes求积公式为Cotes公式:

?

baf(x)dx?(b?a)3a?ba?ba?3b[7f(a)?32f()?12f()?32f()?7f(b)] 904245

贵州师范学院毕业论文(设计)

Newton-Cotes公式的代数精度为5,有5个积分节点。

所以对于Newton-Cotes积分公式,n为偶数时的代数精度要比n为奇数时的积分公式效果比较优越。但并不是n的值越大越好,当n过大时(n=8),求积公式的数值稳定性不好。 3.2 复化求积公式

由于Newton-Cotes的节点n越大对应的精度就越高,但是n=8时公式的数值是不稳定的,因此就不能用增加求积节点的方法来提高精度,因此,我们常常将求积区间[a,b]分成若干小区间,然后在每个小区间上采用数值稳定的Cotes公式求小区间上的积分,然后把每个小区间上的结果加起来作为原定积分的近视值,这种方法构造的求积公式就叫做复化求积公式。 常用的复化求积公式有: 复化梯形公式:

n?1b?a11Tn?[f(x0)??f(xi)?f(xn)]

n22i?1变步长梯形公式为:

2n?1T?Mnb?a11 T2n?[f(x0)??f(xi)?f(x2n)]?n2n222i?1b?anMn??f(x2j?1) 2nj?1复化Simpson公式:

Ik?b?a[f(x2(k?1))?4f(x2k?1)?f(x2k)] 2n变步长复化Simpson公式:

S2nnn?1b?a??Ik?[f(x0)?f(x2n)?4?f(x2k?1)?2?f(x2k)]

6nk?1k?1k?1n

6

贵州师范学院毕业论文(设计)

3.3 Romberg求积公式

Romberg积分方法也叫做逐次分半加速法,它是在复化梯形公式误差估计的基础上,应用线性外推的方法构造出的一种加速算法。

将积分区间分成n等分和2n等分时,求得积分近似值Tn和T2n,并没有误差估计式

1311积分近似值T2n的误差大致等于(T2n?Tn),当用(T2n?Tn)对T2n进行修正时,

3311(T2n?Tn)与T2n之和比T2n更接近于真值I,故(T2n?Tn)是对T2n误差的一种补偿,33 I?T2n?(T2n?Tn)

因此可以期望下式是一个更好的结果,即

Tn2?Tn T?T2n?(T2n?Tn)?313431 下面说明T即是分成n等分时Simpson公式的值Sn。将复化梯形公式

n?1h??Tn??f(a)?2?f(xk)?f(b)?

2?k?1?梯形变步长求积公式

1hn?1T2n?Tn??f(x1)

k?22k?02代入上式T表达式得

n?1n?1?h?T??f(a)?4?f(x1)?2?f(xk)?f(b)??Sn

k?6?k?0k?02?这就是说,用梯形法二分前后两个梯形值Tn和T2n作线性外推,结果得到Simpson法的积分值Sn。将误差由o(h2)变为o(h4),从而提高了逼近精度。 再考察Simpson法。其截断误差与h4成正比,因此,若将步长折半,则误差减至

1,即有 16I?S2n1? I?Sn16

7

贵州师范学院毕业论文(设计)

由此得 I?161S2n?Sn 1515不难验证,上式右端的值其实等于Cn,就是说,用Simpson法二分前后的两个积分值Sn与S2n,按上式再作线性外推,结果得到柯特斯法的积分值Cn,即有

Cn?161S2n?Sn 1515这时将误差由o(h4)变为o(h6),逼近精度又一次得以提高。

同样的方法,依据柯特斯法的误差公式,可进一步导出下列龙贝格公式 Rn?641C2n?Cn 6363 Rn逼近积分值的误差为o(h8),这样Romberg公式将误差由o(h6)变为o(h8),逼近精度再次得以提高。Romberg公式有7次代数精度,这表明该公式不是牛顿-柯特斯公式。

在步长二分的过程中运用Sn、Cn、Rn表达式加工三次,就能将粗糙的积分值Tn逐步加工成精度较高的Romberg值Rn,或者说,将收敛缓慢的梯形值序列Tn加工成收敛迅速的Romberg值序列Rn,这种加速方法称Romberg算法。 3.4 高斯型求积公式

前面介绍的n?1个节点的 Newton -Cotes求积公式,其特征是节点是等距的。这种特点使得求积公式便于构造,复化求积公式易于形成。但同时也限制了公式的精度。n是偶数时,代数精度为n?1,n是奇数时,代数精度为n;我们知道n?1个节点的插值型求积公式的代数精确度不低于n。能不能在区间

?a,b?上适当选择个节点x0,x1,x2xn 使插值求积公式的代数精度高于n呢?

答案是肯定的,适当选择节点,可使公式的精度最高达到2n?1,这就是所学的高斯型求积公式。

不失一般性,将求积公式?af(x)dx??Akf(xk)的求积区间?a,b?转换成??1,1?k?0bn的形式。

8

贵州师范学院毕业论文(设计)

对任意求积区间?a,b?作变换

x?b?aa?bt?t 22 可以变换到区间??1,1?上,这时

?baf(x)dx??f(b?aa?bb?aa?bt?)d(t?)a2222b?a1b?aa?b ?f(t?)dt2??122bb?a1?af(t)dt?2??1?(t)dtb其中?(t)?f(b?aa?bt?t)。 22 高斯-勒让德求积公式在这里简称高斯公式,它是在区间??1,1?上进行讨论的。

4 几类数值积分方法的简单比较评述

由于我们在计算实际问题是往往要考虑到代数精度和计算量,所以不同类

型的求积公式有着不同的特点:

Simpson积分方法和梯形积分方法虽然计算简便,但是精度比较差,不理想。但对于光滑性较差的被积函数有时会比高精度的积分方法更为有效。特别是梯形积分方法对被积函数是周期函数的求积效果更为突出。n>7时,Newton—Cotes公式是不稳定的,然而复化梯形公式和复化Simpson公式不仅保留了低阶公式的优点还能够获得比较较高的精度,所以在实际计算中应用得最为广泛。

Romberg积分方法的算法简单,方便编程的实现。收敛速度快、计算精度较高,但是计算量较大。

Gauss积分方法的精度较高,数值稳定、收敛速度较快,但因为其节点不规则,计算比较麻烦。

9

贵州师范学院毕业论文(设计)

5 利用MATLAB编程应用对几类求积算法的分析比较

在简单的认识积分方法比且理论比较之后,则要进行数学实验进行验证,

因此就要通过matlab软件对各种积分方法进行编程并运算,然后对其各种方法的运算结果进行分析比较,掌握和理解各方法的优缺点。 规定各个程序都以I??0

I??sinxdx?0.946083070367183 0x11sinxdx为例子进行运算。原积分的精确值为 x

例 分别用不同的方法计算积分I??sinxdx,并作比较。 0x1 用以上介绍的几类积分方法分别计算积分,得出误差,并进行比较: 1、用Newton-Cotes公式

当n=1时,即用梯形公式,用程序一 (程序见附录) 在MATLAB命令窗口中输入>> NCotes(0,1,1,2) 得

I?0.92703549240395

R?0.01904757796323

当n=2时, 即用Simpson公式,用程序一 (程序见附录) 在MATLAB命令窗口中输入>> NCotes(0,1,2,2)得

I?0.94614588227359 R?0.000062811906407

当n=4时, 即用科特斯公式,用程序一 (程序见附录) 在MATLAB命令窗口中输入>> NCotes(0,1,4,2)得

I?0.94608300406367 R?0.000000066303513

2、用复化梯形公式

令h=1/8=0.125,用程序二 (程序见附录) 在MATLAB命令窗口中输入>> trapr1('f',0,1,8),得

10

贵州师范学院毕业论文(设计)

sinxhdx??f(0)?2?f(h)??0x21?f(7h)??f(1)?=0.9456908635270

R?0.000392206840182

3、用复化 Simpson 公式

令h=1/8=0.125,用程序三 (程序见附录) 在MATLAB命令窗口中输入>> simpr1('f',0,1,8),得

?1sinx0xdx?h3?f(0)?4?f(h)??f(7h)??2?f(2h)??f(6h)??f(1)?=0.94608308538495 R?0.000000015017767

4、用Romberg公式

用程序四 (程序见附录) 在MATLAB命令窗口中输入>> romber('f',0,1,5,0.5*(10^(-8))),得?1sinx0xdx?0.94608307036718 R?0.000000000000002

5、用高斯-勒让德求积公式 令x?(t?1)/2,I??1sin(t?1)/2?1t?1dt

(1) 用2个节点的Gauss公式

I?0.94604115827633

(2) 用3个节点的Gauss公式,用程序五 (程序见附录) 在MATLAB命令窗口中输入>> GuassLegendre (0,1,2,2),得

I?0.946083134078473 R?0.000000063711290

算法比较:

1.原积分的精确值为:

I??1sinx0xdx?0.946083070367183 2.由例题的各种求积算法可知:

11

贵州师范学院毕业论文(设计)

(1)对Newton-cotes公式,当n=1时只有1位有效数字,当n=2时有3位有效数字,当n=4时有7位有效数字。

(4)用复化梯形公式有2位有效数字,对复化Simpson公式有7位有效数字。 (5)用复化梯形公式,对积分区间[0,1]二分11次用了2049个函数值,才可以得7位有效数字。

(6)用Romberg公式对区间[0,1]二分3次用了9个函数值,就可以得到7位有效数字;二分4次用了14个函数值,却可以得到14位有效数字。 (7)用高斯-勒让德求积公式仅仅用了3个函数值,就能得到比较精确的6位有效数字。

12

贵州师范学院毕业论文(设计)

结束语

本文主要研究了常用的几类数值积分的求积算法并通过例题计算积分进行分析比较。

Newton-Cotes积分方法是一种非常普遍的积分方法,然而梯形积分方法的误差最大,近似效果最差,Simpson积分方法的精度比梯形积分方法高了一个数量级;Cotes积分方法精度比Simpson积分方法高两个数量级。则Cotes代数精度比较高。由此可知一般情况下,积分公式代数精度越高,计算精度也越高。但是高阶的Cotes积分方法收敛性没有保证,因此实际应用中很少用。

复化梯形积分方法比梯形积分方法精度高,同样的,复化Simpson积分方法比Simpson积分方法精度高,高了差不多7个数量级,所以复化积分方法比较优越。

Romberg积分方法收敛速度快、计算精度较高,但是计算量较大。 Gauss积分方法精度高、数值稳定、收敛速度较快,但是计算麻烦。 经研究可以知道Newton-Cotes方法的代数精度越高,数值积分的效果越好、越精确。当积分区间比较大的时候,积分数值不稳定,这个时候可以利用复化积分方法效果会更好;Romberg积分方法可以利用变步长复化积分公式得到更为精确的数值结果,是比较好的积分方法。高斯求积方法精确度高,收敛性快,比其他积分方法优越。具有很广泛的运用。

13

贵州师范学院毕业论文(设计)

参考文献

[1] 关治. 陆金甫. 数学分析基础(第二版) [M]. 北京:等教育出版社.2010.7

[2] 胡祖炽. 林源渠. 数值分析 [M] 北京:等教育出版社.1986.3 [3] 薛毅. 数学分析与实验 [M] 北京:业大学出版社 2005.3 [4] 徐士良. 数值分析与算法 [M]. 北京:械工业出版社2007.1 [5] 王开荣. 杨大地. 应用数值分析 [M] 北京:等教育出版社 2010.7 [6] 杨一都. 数值计算方法[M]. 北京:等教育出版社 . 2008.4

[7] 韩明. 王家宝. 李林. 数学实验(MATLAB)版[M]. 上海:济大学出版社 2012.1

[8] 圣宝建. 关于数值积分若干问题的研究[J]. 南京信息工程大学. 2009.05.01. : 42

[9] 刘绪军. 几种求积公式计算精确度的比较[J]. 南京职业技术学院.2009. [10] 史万明.吴裕树.孙新.数值分析[M]. 北京理工大学出版社.2010.4.

致 谢

14

贵州师范学院毕业论文(设计)

行文至此,我的这篇论文已接近尾声;岁月如梭,我四年的大学时光也即将敲响结束的钟声。离别在即,站在人生的又一个转折点上,心中难免思绪万千,一种感恩之情油然而生。

首先感谢贵州师范学院四年来对我的培养,是博学的老师们教会了我学习的方法、锻炼了我思考的能力、指明了我未来奋斗的方向,从而使我进一步明确了人生的目标。

其次,我要感谢我的指导老师—雍进军老师,他的严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他的循循善诱的教导和不拘一格的思路给予我无尽的启迪。在撰写整个毕业论文的过程当中,他为我们考虑到了每一个细节,从开题报告到毕业论文的拟定修改上,雍老师更是不厌其烦的为我们做好每一步的细心指导。对此,我表示衷心地感谢。没有雍老师,我的论文也不可能这么顺利的完成。同时,我也要感谢每一位给过我帮助的老师和同学,在我撰写论文的过程当中同样给了我大量有益的建议,在此一并向他们表示真诚的感谢,感谢他们对我的支持和帮助。最后感谢这篇论文所涉及到的各位学者,本文引用了数位学者的研究文献,如果没有各位学者的研究成果带给我的的帮助和启发,我将很难完成本篇论文的写作。

由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评指正。最后,衷心感谢评阅论文及参加答辩的各位老师!

15

贵州师范学院毕业论文(设计)

附 录

1 Newton—Cotes求积公式的MATLAB实现 先用M文件定义一个名为f1.m的函数: % i是要调用第几个被积函数g(i),x是自变量 function f=f1(i,x) g(1)=sqrt(x); if x==0 g(2)=1; else

g(2)=sin(x)/x; end

g(3)=4/(1+x^2); f=g(i); 程序一:

function [C,g]=NCotes(a,b,n,m)

% a,b分别为积分的上下限; % n是子区间的个数;

% m是调用上面第几个被积函数;

% 当n=1时计算梯形公式;当n=2时计算辛浦生公式,以此类推; i=n; h=(b-a)/i; z=0;

16

贵州师范学院毕业论文(设计)

for j=0:i

x(j+1)=a+j*h; s=1; if j==0 s=s; else for k=1:j s=s*k; end end r=1; if i-j==0 r=r; else

for k=1:(i-j) r=r*k; end end

if mod((i-j),2)==1 q=-(i*s*r); else q=i*s*r; end

17

贵州师范学院毕业论文(设计)

y=1; for k=0:i if k~=j

y=y*(sym('t')-k); end end l=int(y,0,i); C(j+1)=l/q;

z=z+C(j+1)*f1(m,x(j+1)); end

g=(b-a)*z

1)当输入a?0,b?1,n?1,m?2时,即在MATLAB命令窗口输入 >> NCotes(0,1,1,2)即可得用梯形公式的积分值和相应科特斯系数如图1.1

2)当输入a?0,b?1,n?2,m?2时,即在MATLAB命令窗口输入 >> NCotes(0,1,2,2)即可得用辛浦生公式的积分值和相应科特斯系数 如图1.2

3)当输入a?0,b?1,n?4,m?2时,即在MATLAB命令窗口输入 >> NCotes(0,1,4,2)即可得用科特斯公式的积分值和相应科特斯系数 如图1.3

18

贵州师范学院毕业论文(设计)

图 1.1

图 1.2

19

贵州师范学院毕业论文(设计)

图1.3

2 复化梯形求积公式的MATLAB实现

通过f(x)的n?1个等步长节点逼近积分

其中,xk?a?kh,x0?a, 程序二:

function s=trapr1(f,a,b,n) % f是被积函数;

% a,b分别为积分的上下限; % n是子区间的个数; % s是梯形总面积;

20

贵州师范学院毕业论文(设计)

h=(b-a)/n; s=0; for k=1:(n-1) x=a+h*k; s=s+feval('f',x); end format long

s=h*(feval('f',a)+feval('f',b))/2+h*s; 先用M文件定义一个名为f.m的函数:

function y=f(x) if x==0 y=1;

else

y=sin(x)/x;

end

若取子区间的个数

在MATLAB命令窗口中输入

>> trapr1('f',0,1,8) 回车得到 如图2.1

21

贵州师范学院毕业论文(设计)

图2.1

3 复化Simpson求积公式的MATLAB实现 程序三:

function s=simpr1(f,a,b,n) % f是被积函数;

% a,b分别为积分的上下限; % n是子区间的个数;

% s是梯形总面积,即所求积分数值; h=(b-a)/(2*n); s1=0; s2=0; for k=1:n

x=a+h*(2*k-1); s1=s1+feval('f',x);

end

22

贵州师范学院毕业论文(设计)

for k=1:(n-1) x=a+h*2*k; s2=s2+feval('f',x);

end

s=h*(feval('f',a)+feval('f',b)+4*s1+2*s2)/3; 先用M文件定义一个名为f.m的函数:

function y=f(x) if x==0 y=1;

else

y=sin(x)/x;

end 若取子区间个数

在MATLAB命令窗口中输入

>> simpr1('f',0,1,8) 回车得到 如图3.1

图3.1

23

贵州师范学院毕业论文(设计)

4 龙贝格积分方法的MATLAB实现 构造数表来逼近积分?af(x)dx?R(J,J)

其中。R(J,J)表示数表的最后一行,最后一列的值。 程序四:

function [R,quad,err,h]=romber(f,a,b,n,delta) % f是被积函数

% a,b分别是积分的上下限 % n+1是T数表的列数 % delta是允许误差 % R是T数表 % quad是所求积分值 M=1; h=b-a; err=1 J=0; R=zeros(4,4);

R(1,1)=h*(feval('f',a)+feval('f',b))/2 while ((err>delta)&(J

b24

贵州师范学院毕业论文(设计)

for p=1:M

x=a+h*(2*p-1); s=s+feval('f',x); end

R(J+1,1)=R(J,1)/2+h*s; M=2*M; for K=1:J

R(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K))/(4^K-1); end

err=abs(R(J,J)-R(J+1,K+1));

end

quad=R(J+1,J+1)

先用M文件定义一个名为f.m的函数:

function y=f(x) if x==0 y=1;

else

y=sin(x)/x;

end

在MATLAB命令窗口中输入

>> romber('f',0,1,5,0.5*(10^(-8))) 回车得到 如图4.1

25

贵州师范学院毕业论文(设计)

图4.1

5 高斯-勒让德求积公式的MATLAB实现 程序五:

function [A,x]=Guass1(N) i=N+1;

f=((sym('t'))^2-1)^i; f=diff(f,i); t=solve(f); for j=1:i for k=1:i

X(j,k)=t(k)^(j-1); end

if mod(j,2)==0 B(j)=0;

26

贵州师范学院毕业论文(设计)

else B(j)=2/j; end end X=inv(X); for j=1:i A(j)=0; x(j)=0; for k=1:i

A(j)=A(j)+X(j,k)*B(k); x(j)=x(j)+t(j); end x(j)=x(j)/k; end

function g= GuassLegendre (a,b,n,m)

% a,b分别是积分的上下限; % n+1为节点个数;

% m是调用f1.m中第几个被积函数; [A,x]=Guass1(n); g=0; for i=1:n+1

y(i)=(b-a)/2*x(i)+(a+b)/2; f(i)=f1(m,y(i));

27

贵州师范学院毕业论文(设计)

g=g+(b-a)/2*f(i)*A(i); end

用M文件分别把上面两个自定义函数定义为名为Guass1.m函数和GuassLegendre.m函数

用M文件定义一个名为f1.m的函数function f=f1(i,x) g(1)=sqrt(x); if x==0 g(2)=1; else

g(2)=sin(x)/x; end

g(3)=4/(1+x^2); f=g(i);

在MATLAB命令窗口中输入

>> GuassLegendre (0,1,2,2) >> GuassLegendre (0,1,3,2) 回车得到 如图5.1

28

贵州师范学院毕业论文(设计)

图5.1

29