常微分方程初值问题数值解法.22页_第1页
常微分方程初值问题数值解法.22页_第2页
常微分方程初值问题数值解法.22页_第3页
常微分方程初值问题数值解法.22页_第4页
常微分方程初值问题数值解法.22页_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、常微分方程初值问题数值解法朱欲辉(浙江海洋学院 数理信息学院, 浙江 舟山 316004)摘要:在常微分方程的课程中讨论的都是对一些典型方程求解析解的方法. 然而在生产实际和科学研究中所遇到的问题往往很复杂, 在很多情况下都不可能给出解的解析表达式. 本篇文章详细介绍了常微分方程初值问题的一些数值方法, 导出了若干种数值方法, 如Euler法、改进的Euler法、RungeKutta法以及线性多步法中的Adams显隐式公式和预测校正公式, 并且对其稳定性及收敛性作了理论分析. 最后给出了数值例子, 分别用不同的方法计算出近似解, 从得出的结果对比各种方法的优缺点. 关键词:常微分方程; 初值问

2、题; 数值方法; 收敛性; 稳定性; 误差估计Numerical Method for Initial-Value ProblemsZhu Yuhui(School of Mathematics, Physics, and Information Science, Zhejiang Ocean University, Zhoushan, Zhejiang 316004)Abstract: In the course about ordinary differential equations, the methods for analytic solutions of some typical

3、equations are often discussed. However, in scientific research, the problems are very complex and the analytic solutions about these problems cant be expressed explicitly. In this paper, some numerical methods for the initial-value problems are introduced. these methods include Euler method, improve

4、d Euler method, Runge-Kutta method and some linear multistep method (e.g. Adams formula and predicted-corrected formula). The stability and convergence about the methods are presented. Some numerical examples are give to demonstrate the effectiveness and accuracy of theoretical analysis. Keywords: O

5、rdinary differential equation; Initial-value problem; Numerical method; Convergence; Stability; Error estimate1前言自然界和工程技术中的很多现象, 例如自动控制系统的运行、电力系统的运行、飞行器的运动、化学反应的过程、生态平衡的某些问题等, 都可以抽象成为一个常微分方程初值问题. 其真解通常难以通过解析的方法来获得, 至今有许多类型的微分方程还不能给出解的解析表达式, 一般只能用数值的方法进行计算. 有关这一问题的研究早在十八世纪就已经开始了, 特别是计算机的普遍应用, 许多微分方程问

6、题都获得了数值解, 从而能使人们认识解的种种性质及其数值特征, 为工程技术等实际问题提供了定量的依据.关于常微分方程初值问题的数值计算方法, 许多学者己经做了大量的工作. 1768年, Euler提出了关于常微分方程初值问题的方法, 1840年, Cauchy第一次对初值问题进行了仔细的分析, 早期的常微分方程数值解的问题来源于天体力学. 在1846年, 当Adams还是一个学生的时候, 和Le Verrier一起根据天王星轨道中出现的己知位置, 预测了它下一次出现的位置. 1883年, Adams提出了Adams一Bashforth和Adams一Moulton方法. Rull(1895年)、

7、Heun(1900年)和Kutta(1901年)提出Runge.Kutta方法.二十世纪五十年代, Dahlquist建立了常微分方程数值解法的稳定性理论, 线性多步法是常微分方程初值问题的一种数值方法. 由于通常的数值方法, 其绝对稳定区域是有限的, 不适用于求解刚性常微分的初值问题. 刚性微分方程常常出现于航空、航天、热核反应、自动控制、电子网络及化学动力学等一系列与国防和现代化建设密切相关的高科技领域, 具有无容置疑的重要性. 因此, 刚性微分方程的研究工作早在二十世纪五十年代就开始了, 1965年, 在爱丁堡举行的IFIP会议后, 更进一步地认识刚性方程的普遍性和重要性. 自从六十年代

8、初, 许多数值分析家致力于探讨刚性问题的数值方法及其理论, 注意到刚性问题对传统数值积分方法所带来的挑战. 这一时期, 人们的研究主要集中在算法的线性稳定性上, 就是基于试验方程数值解的稳定性研究. 在此领域发表了大量的论文, 取得了许多重要的理论成果. 例如, 1963年, Dahlquist给出A稳定性理论, 1967年, Widlund给出稳定性理论, 1969年, Gear将稳定性减弱, 给出刚性(Stiff)稳定性理论, 并找到了当的k步k阶的刚性稳定方法, 1969年Dill找到刚性稳定的7阶和8阶以及1970年Jain找到刚性稳定的9阶到11阶, 但可用性没有检验. 这些稳定性理

9、论和概念都是在线性试验方程的框架下推导出的, 从严格的数学意义上来说, 这些理论只适用于常系数线性自治系统. 但从实用的观点来说, 这些理论无疑是合理和必要的, 对刚性问题的算法设计具有重要的指导意义. 在八十至九十年代, 国内也有一些学者研究线性理论, 主要有匡蛟勋、陈果良、项家祥、李寿佛、黄乘明、李庆扬和费景高等.线性理论虽然对一般问题具有指导作用, 但其不能作为非线性刚性问题算法的稳定性理论研究基础. 为了将线性理论推广到非线性问题中, 人们开始对非线性模型问题进行研究.但是, 早期文献主要致力于数值方法基于经典Lipschitz条件下的经典收敛理论, 即认为良好的稳定性加上经典相容性和

10、经典相容阶就足以描述方法的整体误差性态. 直到1974 年, Prothero和Robinson首先注意到算法的经典误差估计由于受刚性问题巨大参数的影响而严重失真, 产生阶降低现象, 这时人们认识到经典收敛理论对于非线性刚性问题以及线性模型的不足. 于是, 1975年, Dahlquist和Butcher分别提出了单支方法和线性多步法的G一稳定概念和B稳定概念. 这两个概念填补了非线性稳定性分析理论, 引起了计算数学家们的极大关注, 在上述理论的基础上, 1975年至1979年, Burrage和Butcher提出了AN一稳定性与BN一稳定性概念, 并相应地建立了基本的B一稳定及代数稳定理论.

11、 1981至1985年, Frank, schneid和ueberhuber建立Runge一kutta方法的B一收敛理论. B稳定与B一收敛理论统称B一理论, 它是常微分方程数值解法研究领域的巨大成就之一, 是刚性问题算法理论的突破性进展, 标志着刚性问题研究从线性向非线性情形深入发展. 国内也有众多学者致力于B一理论的研究, 如李寿佛、曹学年等. 1989年, 李寿佛将Dahlquist的G一稳定概念推广到更一般的(C,P,Q)代数稳定, 克服了G稳定的线性多步法不能超过二阶的限制. 对于一般线性方法, 李寿佛建立了一般线性方法的(K,P,Q)稳定性理论及(K,P,Q)弱代数稳定准则和多步R

12、unge-Kutta法的一系列代数准则. 此外, Dahquist, Butcher和Hairer分别深刻地揭示了单支方法、一般线性方法和Runge.Kutta方法线性与非线性稳定性之间的内在关系. 为了求 解刚性微分方程, 不少文献中构造含有稳定参数的线性多步方法, 利用适当选择稳定参数来扩大方法的稳定区域. 所有改进的思想, 都是通过构造一些特殊的显式或隐式线性多步法, 使其具有增大的稳定域, 或使一稳定的角增大. 八十年代, 就成为国内外学者所研究的一个课题, 学者主要有Rodabaugh和Thompson、Feinberg、李旺尧、李寿佛、包雪松、徐洪义、刘发旺、匡蛟勋、项家祥、蒋立新

13、、李庆扬、谢敬东和李林忠等.当前国内外研究刚性问题的一个主要趋势就是在B一理论指导下寻找更为有效的新算法. 另一个发展趋势就是力图突破单边lipschitz常数和内积范数的局限, 建立比B一理论更为普遍的定量分析收敛理论. 近年来, 刚性延迟系统的算法研究成为刚性问题的另一个热点研究领域, 张诚坚将Burrage等人创立的针对刚性常微分系统的B一理论拓展到非线性刚性延迟系统.常微分方程的数值算法发展到今天己有了线性多步法、龙格一库塔法和在此基础上发展起来的单支方法、分块方法、循环方法、外推法、混合方法、二阶导数法以及各种常用的估校正算法. 其中经常用到的线性多步法公式有Euler公式、Heun

14、公式、中点公式、Milne公式、Adams公式、simpson公式、Hamming公式, Gear方法、Adams预估一校正法和Mile预估一Hamming校正法公式等, 此外还包含许多迄今尚末探明的新公式. Burage曾将线性多步法和RungeKutta法比作大海中的两座小岛, 在浩瀚的汪洋之中, 还有许多到现在没有发现的新方法.本篇文章详细介绍了常微分方程初值问题的一些数值方法, 导出了若干种数值方法, 如Euler法、改进的欧拉法、显式龙格-库塔法、隐式龙格-库塔法以及线性多步法中的Adams显隐式公式和预测校正公式, 并且对其稳定性及收敛性作了理论分析. 最后给出了数值例子, 进行了

15、计算机程序算法的分析与实现, 以计算机的速度优势来弥补计算量大的不足. 从得出的结果对比各种方法的优缺点. 2常微分方程初值问题的数值解法2.1 数值方法的基本思想考虑一阶常微分方程初值问题 (2.1)的数值解法, 其中是和的己知函数, 是给定的初始值.对于常微分方程初值问题(2.1)数值解法, 就是要算出精确解在区间上的一系列离散节点的函数值, , 的近似值, , , .相邻两个节点的间距称为步长, 这时节点也可以表示为. 数值解法需要把连续性的问题加以离散化, 从而求出离散节点的数值解.通常微分方程初值问题(2.1)的数值方法可以分为两类:(1) 单步法-计算在处的值仅取决于处的应变量及其

16、导数值.(2) 多步法-计算在处的值需要应变量及其导数在之前的多个网个节点出的值.2.2 Euler方法2.2.1 Euler公式若将函数在点处的导数用两点式代替, 即,再用近似地代替, 则初值问题(2.1)变为 (2.2)(2.2)式就是著名的欧拉(Euler)公式.2.2.2 梯形公式欧拉法形式简单精度低, 为了提高精度, 对方程的两端在区间上积分得 (2.3)改用梯形方法计算其积分项, 即代入式(2.3), 并用近似代替式中即可得到梯形公式 (2.4)由于数值积分的梯形公式比矩形公式精度高, 所以梯形公式(2.4)比欧拉公式(2.2)的精度高一个数值方法.式(2.4)的右端含有未知的,

17、它是关于的函数方程, 这类方法称为隐式方法.2.2.3 改进的欧拉公式梯形公式实际计算时要进行多次迭代, 因而计算量较大. 在实用上, 对于梯形公式(2.4)只迭代一次, 即先用欧拉公式算出的预估值, 再用梯形公式(2.4)进行一次迭代得到校正值, 即 (2.5)2.2.4 欧拉法的局部截断误差衡量求解公式好坏的一个主要标准是求解公式的精度, 因此引入局部截断误差和阶数概念.定义2.1 在准确的前提下, 即时, 用数值方法计算的误差, 称为该数值方法计算时的局部截断误差.对于欧拉公式, 假定, 则有而将真解在处按二阶泰勒展开式有因此有定义2.2 若数值方法的局部截断误差为, 则称这种数值方法的

18、阶数是P. 步长(h<1)越小, P越高, 则局部截断误差越小, 计算精度越高.2.3 RungeKutta方法2.3.1 RungeKutta方法的基本思想欧拉公式可改写成则的表达式与的泰勒展开式的前两项完全相同, 即局部截断误差为.改进的欧拉公式又可改写成.上述两组公式在形式上有一个共同点: 都是用在某些点上值的线形组合得出的近似值, 而且增加计算的次数, 可提高截断误差的阶. 如欧拉公式, 每步计算一次的值, 为一阶方法. 改进的欧拉公式需计算两次的值, 它是二阶方法. 它的局部截断误差为.于是可考虑用函数在若干点上的函数值的线形组合来构造近似公式, 构造时要求近似公式在处的泰勒展

19、开式与解在处的泰勒展开式的前面几项重合, 从而使近似公式达到所需要的阶数. 既避免求偏导, 又提高了计算方法精度的阶数. 或者说, 在这一步内多预报几个点的斜率值, 然后将其加权平均作为平均斜率. 则可构造出更高精度的计算格式, 这就是RungeKutta方法的基本思想.2.3.2 RungeKutta方法的构造一般地, RungeKutta方法设近似公式为 (下面的公式修改了) 其中, , 都是参数, 确定它们的原则是使近似公式在处的泰勒展开式与在处的泰勒展开式的前面的项尽可能多的重合, 这样就使近似公式有尽可能高的精度. 以此我们可以通过一个复杂的计算过程得出常用的的三阶和四阶RungeK

20、utta公式和 (2.6)式(2.6)称为经典RungeKutta方法.2.4 线性多步法在逐步推进的求解过程中, 计算之前事实上已经求出了一系列的近似值, , , . 如果充分利用前面多步的信息来预测, 则可期望获得较高的精度, 这就是构造多步法的基本思想.线性k步方法的一般公式为 (2.7)其中, 均为与n无关的常数, . 当时为显格式; 当时为隐格式. 特别当时为Euler公式;当时为梯形公式.定义 2.3 称为k步公式(2.7)在处的局部截断误差. 当时称式(2.7)是p阶的.应用方程可知局部截断误差也可写成为定义2.4 如果线性k步方法(2.7)至少是1阶的, 则称是相容的; 如果线

21、性k步法(2.7)是p阶的, 则称是p阶相容的.2.4.1 Adams外插法将微分方程的两端从到进行积分, 得到 (2.8)我们用插值多项式代替右端的被积函数.Adams外插法选取k个点作为插值基点构造的k-1阶多项式Adams外插法的计算公式为其中满足如下代数递推式:,根据此递推公式, 可逐个的计算, 表2.1给出了的部分数值:表2.1j01234511/25/123/8251/72095/2882.4.2 Adams内插法根据插值理论知道, 插值节点的选择直接影响着插值公式的精度, 同样次数的内插公式的精度要比外插公式的高.仍假定已按某种方法求得问题(2.1)的解在处的数值, 并选取插值节

22、点, p是正整数, 用Lagrange型插值多项式构造可以导出解初值问题(2.1)的Adams内插公式: (2.9)当时上式就退化为内插公式.内插公式(2.9)除了包含在处的已知值外, 还包含了在点, 处的未知值.因此内插公式(2.9)只给出了未知量的关系式, 实际计算时仍需要解联立方程组. 的内插公式是最适用的, 采用Newton向后插值公式得到Adams内插公式其中系数定义为其中满足如下代数递推式:根据此递推公式, 可逐个的计算, 表2.2给出了的部分数值:表2.2j0123451-1/2-1/12-1/24-19/720-3/1602.5 算法的收敛性和稳定性2.5.1 相容性初值问题(

23、2.1):的显式单步法的一般形式为, (2.10)其中, . 这样我们用差分方程初值问题(2.10)的解作为问题(2.1)的解在处的近似值, 即.因此, 只有在问题(2.1)的解使得逼近时, 才有可能使(2.10)的解逼近于问题(2.1)的解. 从而, 我们期望对任一固定的 都有假设增量函数关于h连续, 则有定义 2.5 若关系式成立, 则称单步法(2.10)与微分方程初值问题(2.1)相容.容易验证, Euler法与改进Euler法均满足相容性条件. 事实上, 对Euler法, 增量函数为自然满足相容性条件, 改进Euler法的增量函数为因为, 从而有所以Euler法与改进Euler法均与初

24、值问题(2.1)相容. 一般的, 如果显示单步法有p阶精度, 则其局部误差为上式两端同除以h, 得令, 如果, 则有即所以的显示单步法均与初值问题(2.1)相容.由此各阶RK方法与初值问题(2.1)相容.2.5.2 收敛性定义2.6 一种数值方法称为是收敛的, 如果对于任意初值及任意 都有 其中为初值问题(2.1)的准确解.按定义, 数值方法的收敛性需根据该方法的整体截断误差来判定. 已知Euler方法的整体截断误差有估计式当, , 故Euler方法收敛.定理 2.1 设显式单步法具有p阶精度, 其增量函数关于y满足Lipschitz条件, 问题(2.1)是精确的, 既, 则显式单步法的整体截

25、断误差为.定理 2.2设增量函数在区域S上连续, 且关于y满足Lipschitz条件时, 则显式单步法收敛的充分必要条件是相容性条件成立, 即.2.5.3 稳定性定义 2.7 如果存在正常数及C, 使得对任意的初始出发值, 单步法(2.10)的相应精确解, 对所有的, 恒有, 则称单步法是稳定的.定理2.3若对于, 以及一切实数y, 关于y满足Lipschitz条件, 则单步法(2.7)是稳定的.定义 2.8对给定的微分方程和给定的步长h, 如果由单步法计算时有大小为的误差, 即计算得出, 而引起其后之值的变化小于, 则说该单步法是绝对稳定的.一般只限于典型微分方程考虑数值方法的绝对稳定性,

26、其中为复常数(我们仅限于为实数的情形). 若对于所有的, 单步法都绝对稳定, 则称为绝对稳定区间.根据以上定义我们可以得出Euler方法的绝对稳定区间为(-2,0), 梯形公式的绝对稳定区间为, RungeKutta的绝对稳定区间为(-2.78,0).3 实例分析例3.1分别用Euler法、改进Euler法、RungeKutta解初值问题的数值解, 取h=0.1, N=10, 并与真实解作出比较.由于该简单方程可以用数学方法求得其精确描述式, 所以可以据此检验近似数值解同真实解的误差情况. 对于其他一些结构复杂的常微分方程的数值解实现方法也是一样的.(1)使用欧拉算法进行一般求解经过欧拉算法程

27、序计算得出在各点处的近似数值解及各自同精确解的误差, 如下表3.1表3.1各分点(数值解)(精确解)(误差)0.11.0000000.9900990.0099010.20.9800000.9615380.0184620.30.9415840.9174310.0241530.40.8883890.8620690.0263200.50.8252500.8000000.0252500.60.7571470.7352940.0218520.70.6883540.6711410.0172130.80.6220180.6097560.0122620.90.5601130.5524860.0076261.0

28、0.5036420.5000000.0036421.10.4529110.4524890.0004221.20.4077830.4098360.002053从实验结果看误差已经不算太小, 况且这还仅仅是一个用于实验的比较简单的常微分方程, 对于实际工程中应用的结构复杂的方程其求解结果的误差要远比此大得多, 由于还存在着局部截断误差和整体截断误差, 因此可采取一定措施来抑制减少误差, 尽量使结果精确.(2)使用改进欧拉算法进行一般求解经过改进欧拉算法程序计算得出在各点处的近似数值解及各自同精确解的误差, 如下表3.2表3.2各分点(数值解)(精确解)(误差)0.10.9900000.990099

29、0.0000990.20.9613660.9615380.0001730.30.9172460.9174310.0001850.40.8619540.8620690.0001150.50.8000340.8000000.0000340.60.7355270.7352940.0002330.70.6715870.6711410.0004460.80.6103990.6097560.0006430.90.5532890.5524860.0008031.00.5009190.5000000.0009191.10.4534790.4524890.0009901.20.4108590.4098360.0

30、01023可以看出, 这种经过改进的欧拉算法所存在的误差已大为减少, 误差的减少主要是由于先利用了欧拉公式对的值进行了预估, 然后又利用梯形公式对预估值作了校正, 从而在预估校正的过程中减少了误差. 此算法有一定的优点, 在一些实际而且简单的工程计算中可以直接单独应用.(3)使用经典RungeKutta法进行一般求解经过经典RungeKutta法程序计算得出在各点处的近似数值解及各自同精确解的误差, 如下表3.3表3.3各分点(数值解)(精确解)(误差)0.10.9900990.9900990.0000000.20.9615380.9615380.0000000.30.9174310.9174

31、310.0000010.40.8620680.8620690.0000010.50.7999990.8000000.0000010.60.7352940.7352940.0000010.70.6711410.6711410.0000000.80.6097560.6097560.0000000.90.5524870.5524860.0000001.00.5000010.5000000.0000011.10.4524890.4524890.0000011.20.4098370.4098360.000001从表3.3记录的程序运行结果来看, 所计算出来的常微分方程的数值解是非常精确的, 用浮点数进行

32、运算时由近似所引入的误差几乎不会对计算结果产生影响, 这样高的精度是很令人满意的. 无论是从计算速度上还是从计算精度要求上, 都能很好地满足工程计算的需要.例3.2分别用Euler法、改进Euler法、RungeKutta解初值问题的数值解, 取等分数分别为N=12, 24, 36, ,120, 分别计算出与真实解的最大误差.(1) 使用欧拉算法进行一般求解经过计算我们可以得出初值问题在取不通步长时, 数值解与真实解的最大误差如表3.4表3.4N(等分数)最大误差N(等分数)最大误差120.026320720.004052240.012547840.003465360.008233960.00

33、3027480.0061261080.002687600.0048781200.002416从表3.4记录的程序运行结果来看当等分数N变大时, 它的误差正在减小, 根据定义2.6我们可以证得该方法是收敛的.(2)使用改进欧拉算法进行一般求解经过计算我们可以得出初值问题在取不通步长时, 数值解与真实解的最大误差如表3.5表3.5N(等分数)最大误差N(等分数)最大误差120.001023720.000028240.000255840.000021360.000113960.000016480.0000631080.000013600.0000411200.000010从表3.5记录的程序运行结果

34、来看当等分数N变大时, 它的误差正在减小, 根据定义2.6我们可以证得该方法是收敛的.(3)使用经典RungeKutta法进行一般求解经过计算我们可以得出初值问题在取不通步长时, 数值解与真实解的最大误差如表3.6表3.6N(等分数)最大误差N(等分数)最大误差120.000001720.000000240.000000840.000000360.000000960.000000480.0000001080.000000600.0000001200.000000从表3.6记录的程序运行结果来看当等分数N变大时, 它的误差正在减小, 根据定义2.6我们可以证得该方法是收敛的.(4)收敛速度对比为对比以上三种方法的收敛速度, 我们计算出了它们的误差精度达到的最小等分数N如下表3.7表3.7方法N(最小等分数)误差精度Euler法2900改进Euler法40RungeKutta法5从表3.7记录的程序运行结果来看RungeKutta法的收敛速度最快, 改进Euler法其次, 而Euler法最差. 由此看来RungeKutta法是他们当中最理想的数值解法.小结针对工程计算中遇到的常微分方程初值问题的求解, 根据实际情况引如了计算机作为辅助计算工具, 并根据高等数学的有关知识将欧拉公式、改进的欧拉公式、经典龙格库塔方法等融入到计算机程序算法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论