当前位置:文档之家› 导数的数值计算方法[文献综述]

导数的数值计算方法[文献综述]

毕业论文文献综述信息与计算科学导数的数值计算方法一、 前言部分导数概念的产生有着直觉的起源,与曲线的切线和运动质点的速度有密切的关系.导数用于描述函数变化率,刻画函数的因变量随自变量变化的快慢程度.比如说,物理上考虑功随时间的变化率(称为功率),化学上考虑反应物的量对时间的变化率(称为反应速度),经济学上考虑生产某种产品的成本随产量的变化率(称为边际成本)等等,这些变化率在数学上都可用导数表示.导数由于其应用的广泛性,为我们解决所学过的有关函数问题提供了一般性的方法,导数是研究函数的切线、单调性、极值与最值等问题的有力工具;运用它可以简捷地解决一些实际问题,导数的概念是用来研究函数在一点及其附近的局部性质的精确工具,而对于函数在某点附近的性质还可以应用另一种方法来研究,就是通过最为简单的线性函数来逼近,这就是微分的方法.微分学是数学分析的重要组成部分,微分中值定理作为微分学的核心,是沟通导数和函数值之间的桥梁, Rolle 中值定理, Lagrange 中值定理, Cauchy 中值定理, Taylor 公式是微分学的基本定理, 统称为微分学的中值定理,这四个定理作为微分学的基本定理,是研究函数形态的有力工具]1[.在微分学中,函数的导数是通过极限定义的,但当函数用表格给出时,就不可用定义来求其导数,只能用近似方法求数值导数]2[.最简单的数值微分公式是用差商近似地代替微商,常见的有[3].()()()'f x h f x f x h+-≈,()()()'f x f x h f x h--≈,()()()'2f x h f x h f x h+--≈.需要注意的是微分是非常敏感的问题,数据的微小扰动会使结果产生很大的变化]4[.二、主题部分数学中研究导数,微分及其应用的部分称为微分学,定积分及其应用的部分称为积分学.微分学与积分学统称为微积分学.微积分学是高等数学最基本,最重要的组成部分,是现代数学许多分支的基础,是人类认识客观世界,探索宇宙奥秘乃至人类自身的典型数学模型之一. 恩格斯(1820-1895)曾指出:“在一切理论成就中,未必再有什么像17世纪下半叶微积分的发明那样被看作人类精神的最高胜利了”. 微积分的发展历史曲折跌宕,撼人心灵,是培养人们正确世界观,科学方法论和对人们进行文化熏陶的极好素材.积分的雏形可追溯到古希腊和我国魏晋时期,但微分概念直至16世纪才应运萌生,从15世纪初文艺复兴时期起,欧洲的工业,农业,航海事业与商贾贸易得到大规模的发展,形成了一个新的经济时代.而十六世纪的欧洲,正处在资本主义萌芽时期,生产力得到了很大的发展.生产实践的发展对自然科学提出了新的课题,迫切要求力学,天文学等基础科学的发展,而这些学科都是深刻依赖于数学的,因而也推动了数学的发展.在各类学科对数学提出的种种要求中,下列三类问题导致了微分学的产生: (1) 求变速运动的瞬时速度; (2) 求曲线上一点处的切线; (3) 求最大值和最小值.这三类实际问题的现实原型在数学上都可归结为函数相对于自变量变化而变化的快慢程度,即所谓函数的变化率问题.导数的思想最初是由法国数学家费马(Fermat)为研究极值问题而引入的,但与导数概念直接相联系的是以下两个问题:已知运动规律求速度和已知曲线求它的切线.这是由英国数学家牛顿(Newton)和德国数学家莱布尼茨(Leibniz)分别在研究力学和几何学过程中建立起来的]5[.下面我们就来研究几种推导数值微分公式的常用方法. (一)利用差商表求导数[67],最简单的数值微分公式是用向前差商近似代替导数: ()()()000'f x h f x f x h+-≈. (1.1)类似地,也可用向后差商近似代替导数()()()000'f x f x h f x h--≈. (1.2)或用中心差商近似代替导数()()()000'2f x h f x h f x h+--≈. (1.3)数值微分示意图在几何图形上,这3种差商分别表示弦AB ,AC 和BC 的斜率.将这3条弦同过A 点的切线AT 相比较,从上图可以看出,一般地说以BC 的斜率更接近于切线AT 的斜率()0'f x ,因此就精确度而言,以式(1.3)更为可取.称 ()()()002f x h f x h D h h+--= (1.4)为求()0'f x 的中点公式.现在来考察用式(1.4)代替()0'f x 所产生的截断误差.首先分别将()0f x h ±在0x 处作Taylor 展开,有()()()()()()()2344000000''''''2!3!4!h h h f x h f x hf x f x f x f x ±=±+±+±()()5505!h f x +L . 然后代入中点公式(1.4),得()()()()()245000''''3!5!h h D h f x f x f x =+++L .所以截断误差()()()()()245000''''3!5!h h f x D h f x f x -=--+L (1.5)由此可以得到:从截断误差的角度来看,步长h 越小,计算结果越准确.但从计算角度看,h 越小,()0f x h +与()0f x h -越接近,直接相减会造成有效数字的严重损失,因此从舍入误差的角度看步长h 不宜去的太小.怎样选取合适的步长呢?可采用二分步长及误差事后估计法,即比较二分前后所得值()D h 与2h D ⎛⎫⎪⎝⎭,若()2h D h D ε⎛⎫-< ⎪⎝⎭,则2h 为所需的合适的步长且()0'2h D f x ⎛⎫≈⎪⎝⎭. (二)插值型求导公式 对于列表函数()y f x =x0x 1x … n xy0y 1y…n y应用插值原理,可以建立插值多项式()n p x 作为()f x 的近似.由于多项式的求导比较容易,因此可以取()'n p x 的值作为()'f x 的近似值,这样建立的数值公式()()''n f x p x ≈ (2.1)统称为插值型求导公式[8,9].()'n p x 的截断误差可由()n p x 的截断误差求导数得到.因为()()()()()()111!n n n f f x p x W x n ξ++-=+式中,[],a b ξ∈且依赖于x ;()()10nn j j W x x x +==∏-.于是()'n p x 的截断误差为()()()()()()()()()()1111'''1!1!n n n n n f W x df x p x W x f n n dxξξ++++-=+++.(2.2)由于ξ是x 的位置函数,因此求()()1n d f dxξ+较麻烦,一般都限定求某个节点k x 上的导数值,此时(2.2)右端的第2项由于()10n k W x +=而变为零,这时()'n p x 的截断误差为 ()()()()()()11'''1!n k n k n k f f x p x W x n ξ++-=+ . (2.3)由于以上的原因,以下仅考察节点处的导数值,为简化讨论,假定所给节点是等距的]11,10[.1.一阶两点公式()1n =()()()()01011011''',,2hf x y y f x x h ξξ=--∈, ()()()()11022011''',,2hf x y y f x x h ξξ=-+∈.2.一阶三点公式()2n =()()()()2001211021'34''',,23h f x y y y f x x h ξξ=-+-+∈.()()()()210222021'''',,26h f x y y f x x h ξξ=-+-∈.()()()()2201233021'43''',,23h f x y y y f x x h ξξ=-++∈.利用插值多项式()n p x 作为()f x 的近似函数,还可建立高阶导数数值微分公式()()()()k k n f x p x ≈ ()1,2,...k =我们对它不作深入讨论,但要指出的是,尽管()n p x 与()f x 的值相差不多,其各阶导数的值()()k np x 与真值()()k f x 仍然可能差别很大,因此要注意误差分析]12[.数值微分的插值型公式,应用难度在于步长h 的选取.h 过大,截断误差变大;h 过小,舍入误差变大.因此,在实际计算时,恰当地选取步长h 是关键]13[.(三)理查森外推法[14]理查森外推法是科学计算领域提高算法精度的重要方法,广泛应用于数值积分,有限元和偏微分方程数值解等领域[15]. 理查森外推法是一种对低阶收敛方法进行适当的组合,从而产生较高阶收敛精度的一种方法.首先先引进数值微分公式: ()()()1'2f x f x h f x h h≈+--⎡⎤⎣⎦. (3.1) 它由泰勒定理的两种情况导出:()()()()()231''''''23!h h f x h f x hf x f x f ξ+=+++ ,(3.2)()()()()()232''''''23!h h f x h f x hf x f x f ξ-=-+- . (3.3)我们现在就引入理查森外推的过程,并介绍如何利用它来巧妙地改进数值公式的精度.把(3.2)式和(3.3)式扩展到具有高阶项.假设()f x 用它的泰勒级数表示为()()()01!k k k f x h h f x k ∞=+=∑, (3.4)()()()()011!kk k k f x h h f x k ∞=-=∑- . (3.5) 如果第一个等式减去第二个等式,则消去了所有k 是偶数的项,得()()()()()()535222''''3!5!f x h f x h hf x h f x h f x +--=+++L . 重新整理得()()()1'2f x f x h f x h h=+--⎡⎤⎣⎦ ()()()()()()3572461113!5!7!h f x h f x h f x ⎡⎤-+++⎢⎥⎣⎦L. 这个等式具有形式()246246L h a h a h a h ϕ=++++L (3.6)其中L 表示()'f x ,()h ϕ表示数值微分公式(3.1);即()()()12h f x h f x h h ϕ=+--⎡⎤⎣⎦. 其中x 是指定的数值,下面设计的数值过程用于估计L .对于0h >,可计算函数ϕ的值,但不能计算0h =,级数的项2424a h a h ++L 给出了误差.假设20a ≠,可以看出当h 充分小时,第一阶22a h 大于其他项.因此要设法消去这一占优项22a h .我们的分析仅仅是建立在(3.6)式地基础上,并且它可应用于其他数值过程.用2h 替换(3.6)式中的h 得到()24624621664L h a h a h a h ϕ=++++L . (3.7)(3.6)式减去4倍的(3.7)式,可消去误差级数中的第一项22a h .结果如下:()246246L h a h a h a h ϕ=++++L ,()()()2462464646442416342341516L h a h a h a h L h h a h a h ϕϕϕ=++++=----LL.因此我们有()()464641251633L h h a h a h ϕϕ=----L . (3.8)式(3.8)表达了理查森外推的第一步.它表明()h ϕ和()2h ϕ的一个简单组合提供了一个计算L 的方法.还有一种情况,对(3.6)式所完成的过程现在可以用于(3.8)式(做适当地修改).相应的做法如下:在(3.8)式中令()()()41233h h h ψϕϕ=-.则()4646L h b h b h ψ=+++L , ()464621664L h b h b h ψ=+++L .此时()4646L h b h b h ψ=+++L , ()()()4646661616241516234L h b h b h L h h b h ψψψ=+++=---LL. 因而,我们有()()661612201515L h h b h ψψ=---L . (3.9) 再一次重复这个过程,在(3.9)式中令()()()16121515h h h θψψ=-. 使得()6868L h c h c h θ=+++L .用上述相同的方法可得()()88641232526363L h h c h θθ=---L . 事实上,可执行任意多步来得到不断增加精确度的公式.下面是完整的算法,即允许执行M 步的理查森外推算法:1. 选取一个方便的h 值(例如1h =)并且计算1M +个数()(),02n D n h ϕ= ()0n M ≤≤2. 用下列公式计算()()()41,,11,14141k k k D n k D n k D n k =------(3.10) 这里1,2,,,,1,,k M n k k M ==+L L . (四)将微分问题转化为积分问题]3[微分是积分的逆运算,因此可借助于数值微分来计算数值积分. 设f 是一个充分光滑的函数,其导数为ϕ.由积分定义有()()xxf x f x t dt ϕ∧∧⎛⎫=+ ⎪⎝⎭⎰ . (4.1) 其中x ∧为任意指定的数.设()00,1,i x x ih i n =+=L 为一组等距节点,并设()k k y f x =.在公式(4.1)中取11,,k k x x x x ∧-+==于是式(4.1)变为()()()1111k k x k k x f x f x t dt ϕ+-+-=+⎰()1,2,,1k n =-L (4.2)对上式右端的积分采用不同的求积公式就得到不同的数值微分公式. (1)对积分采用中点公式()()()()11322''24k k x k k x h t dt h x ϕϕϕξ+-=+⎰,从而得到中点微分公式()()()()()211''''26k k k k k f x f x h f x x f h ϕξ+--==-, (4.3) 其中()111,2,,1k k k x x k n ξ-+≤≤=-L .(2)如果对式(4.2)中的积分采用辛普森求积公式,则有()()()()()()1155114390k k x k k k k x h h t dt x x x f ϕϕϕϕξ+--+=++-⎡⎤⎣⎦⎰ (4.4) 其中1k k k x x ξ-≤≤.如果记k ϕ为()'k f x 的近似值,且在上式中略去高阶项,那么从式(4.2)可得到辛普森数值微分公式()111134k k k k k y y hϕϕϕ+--+-++=()1,2,,1k n =-L 三、总结部分本文首先介绍了导数产生的背景及发展历程和方向,让大家对导数有了初步认识.总体来说,导数主要用于描述函数变化率,刻画函数的因变量随自变量变化的快慢程度.因此被广泛地应用于物理化学以及经济各个领域中.然后本文着重讲了几种推导数值微分公式的常用几种方法,如差商法,插值多项式求导法,理查森外推法,以及将微分问题转化为积分问题.还归纳总结了常用的数值微分公式,如中点公式,两点公式和三点公式等.此外,因为微分是非常敏感的问题,数据的微小扰动会使结果产生很大的变化,所以本文对于步长的选取以及截断误差的分析也进行了进一步的说明.随着导数的被广泛应用,对于导数精确度的提高也不容忽视.在将来的日子里除了继续不断寻求更简便的方法推导数值微分公式外,对于误差分析的研究也将越来越被重视.四、参考文献[1]石文.微分中值定理的应用实例[J].高等函授学报(自然科学版).2009,22(6):54-58.[2]Jeffery J.Leader. Numerical Analysis and Scientific Computation[M].影印版.北京:清华大学出版社,2008.5:328.[3]现代应用数学手册编委会.现代应用数学手册——计算与数值分析卷[M].北京:清华大学出版社,2005:245-246.[4]Michael T.Heath. Scientific Computing: An Introductory Survey[M].第2版影印版.北京:清华大学出版社,2001.10:365.[5]华东师范大学数学系编.数学分析.上册[M].第3版.北京:高等教育出版社,2001.6:87-101.[6]Curtis F.Gerald,Patrick O.Wheatley著,吕淑娟译.应用数值分析[M].北京:机械工业出版社,2006.8:212-213.[7]方春华.双曲线方程的组合差商算法研究[J].湖南理工学院学报(自然科学版).2008.12,21(4):7-10.[8]孙志忠,吴宏伟,袁慰平,闻震初.计算方法与实习[M].南京:东南大学出版社,2005.7(2009.2重印):93-153.[9]蒋长锦.科学计算和C程序集[M].合肥:中国科学技术大学出版社,1998.9:257-260.[10]周小清,邬云雯,戴薇,黄国盛.数值求导算法研究[J].吉首大学学报(自然科学报).2001.3,22(1):64-65.[11]封建湖,车刚明,聂玉峰.数学分析原理[M].北京:科学出版社,2001.9:128.[12]孙志忠,袁慰平,闻震初.数值分析[M].南京:东南大学出版社,2002.1:226.[13]李桂成.计算方法[M].北京:电子工业出版社,2005.10:172-186.[14]David Kincaid,Ward Cheney著,王国荣,俞耀明,徐兆亮译.数值分析[M].第3版.北京:机械工业出版社,2005.9:376-380.[15]杨小远,周渝志,林柏洪.N阶导数值计算的外推算法研究[J].河南科学.2010,28(7):762-766.。

相关主题