常微分方程初值问题数值解法

常微分方程初值问题数值解法

朱欲辉

(浙江海洋学院 数理信息学院, 浙江 舟山 316004)

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

[关键词]:常微分方程; 初值问题; 数值方法; 收敛性; 稳定性; 误差估计

Numerical Method for Initial-Value Problems

Zhu 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 equations are often discussed. However, in scientific research, the problems are very complex and the analytic solutions about these problems can’t be expressed explicitly. In this paper, some numerical methods for the initial-value problems are introduced. these methods include Euler method, improved 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]: Ordinary differential equation; Initial-value problem; Numerical method;

Convergence; Stability; Error estimate

1前言

自然界和工程技术中的很多现象, 例如自动控制系统的运行、电力系统的运行、飞行器的运动、化学反应的过程、生态平衡的某些问题等, 都可以抽象成为一个常微分方程初值问题. 其真解通常难以通过解析的方法来获得, 至今有许多类型的微分方程还不能给出解的解析表达式, 一般只能用数值的方法进行计算. 有关这一问题的研究早在十八世纪就已经开始了, 特别是计算机的普遍应用, 许多微分方程问题都获得了数值解, 从而能使人们认识解的种种性质及其数值特征, 为工程技术等实际问题提供了定量的依据.

关于常微分方程初值问题的数值计算方法, 许多学者己经做了大量的工作. 1768年, Euler提出了关于常微分方程初值问题的方法, 1840年, Cauchy第一次对初值问题进行了仔细的分析, 早期的常微分方程数值解的问题来源于天体力学. 在1846年, 当Adams还是一个学生的时候, 和Le Verrier一起根据天王星轨道中出现的己知位置, 预测了它下一次出现的位置. 1883年, Adams提出了Adams一Bashforth和Adams一Moulton方法. Rull(1895年)、Heun(1900年)和Kutta(1901年)提出Runge.Kutta方法.

二十世纪五十年代, Dahlquist建立了常微分方程数值解法的稳定性理论, 线性多步法是常微分方程初值问题的一种数值方法. 由于通常的数值方法, 其绝对稳定区域是有限的, 不适用于求解刚性常微分的初值问题. 刚性微分方程常常出现于航空、航天、热核反应、自动控制、电子网络及化学动力学等一系列与国防和现代化建设密切相关的高科技领域, 具有无容置疑的重要性. 因此, 刚性微分方程的研究工作早在二十世纪五十年代就开始了, 1965年, 在爱丁堡举行的IFIP会议后, 更进一步地认识刚性方程的普遍性和重要性. 自从六十年代初, 许多数值分析家致力于探讨刚性问题的数值方法及其理论, 注意到刚性问题对传统数值积分方法所带来的挑战. 这一时期, 人们的研究主要集中在算法的线性稳定性上, 就是基于试验方程y,??y,(??C)数值解的稳定性研究. 在此领域发表了大量的论文, 取得了许多重要的理论成果. 例如, 1963年, Dahlquist给出A稳定性理论, 1967年, Widlund给出A(?)—稳定性理论, 1969年, Gear将A—稳定性减弱, 给出刚性(Stiff)稳定性理论, 并找到了当k?6的k步k阶的刚性稳定方法, 1969年Dill找到刚性稳定的7阶和8阶以及1970年Jain找到刚性稳定的9阶到11阶, 但可用性没有检验. 这些稳定性理论和概念都是在线性试验方程的框架下推导出的, 从严格的数学意义上来说, 这些理论只适用于常系数线性自治系统. 但从实用的观点来说, 这些理论无疑是合理和必要的, 对刚性问题的算法

设计具有重要的指导意义. 在八十至九十年代, 国内也有一些学者研究线性理论, 主要有匡蛟勋、陈果良、项家祥、李寿佛、黄乘明、李庆扬和费景高等.

线性理论虽然对一般问题具有指导作用, 但其不能作为非线性刚性问题算法的稳定性理论研究基础. 为了将线性理论推广到非线性问题中, 人们开始对非线性模型问题进行研究.但是, 早期文献主要致力于数值方法基于经典Lipschitz条件下的经典收敛理论, 即认为良好的稳定性加上经典相容性和经典相容阶就足以描述方法的整体误差性态. 直到1974 年, Prothero和Robinson首先注意到算法的经典误差估计由于受刚性问题巨大参数的影响而严重失真, 产生阶降低现象, 这时人们认识到经典收敛理论对于非线性刚性问题以及线性模型的不足. 于是, 1975年, Dahlquist和Butcher分别提出了单支方法和线性多步法的G一稳定概念和B稳定概念. 这两个概念填补了非线性稳定性分析理论, 引起了计算数学家们的极大关注, 在上述理论的基础上, 1975年至1979年, Burrage和Butcher提出了AN一稳定性与BN一稳定性概念, 并相应地建立了基本的B一稳定及代数稳定理论. 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)弱代数稳定准则和多步Runge-Kutta法的一系列代数准则. 此外, Dahquist, Butcher和Hairer分别深刻地揭示了单支方法、一般线性方法和Runge.Kutta方法线性与非线性稳定性之间的内在关系. 为了求 解刚性微分方程, 不少文献中构造含有稳定参数的线性多步方法, 利用适当选择稳定参数来扩大方法的稳定区域. 所有改进的思想, 都是通过构造一些特殊的显式或隐式线性多步法, 使其具有增大的稳定域, 或使A(?)一稳定的?角增大. 八十年代, 就成为国内外学者所研究的一个课题, 学者主要有Rodabaugh和Thompson、Feinberg、李旺尧、李寿佛、包雪松、徐洪义、刘发旺、匡蛟勋、项家祥、蒋立新、李庆扬、谢敬东和李林忠等.当前国内外研究刚性问题的一个主要趋势就是在B一理论指导下寻找更为有效的新算法. 另一个发展趋势就是力图突破单边lipschitz常数和内积范数的局限, 建立比B一理论更为普遍的定量分析收敛理论. 近年来, 刚性延迟系统的算法研究成为刚性问题的另一个热点研究领域, 张诚坚将Burrage等人创立的针对刚性常微分系统的B一理论拓展到非线性刚性延迟系统.

常微分方程的数值算法发展到今天己有了线性多步法、龙格一库塔法和在此基础上发展起来的单支方法、分块方法、循环方法、外推法、混合方法、二阶导数法以及各种常用的估校正算法. 其中经常用到的线性多步法公式有Euler公式、Heun公式、中点公式、Milne公式、Adams公式、simpson公式、Hamming公式, Gear方法、Adams预估一校正法和Mile预估一Hamming校正法公式等, 此外还包含许多迄今尚末探明的新公式. Burage曾将线性多步法和Runge—Kutta法比作大海中的两座小岛, 在浩瀚的汪洋之中, 还有许多到现在没有发现的新方法.

本篇文章详细介绍了常微分方程初值问题的一些数值方法, 导出了若干种数值方法, 如Euler法、改进的欧拉法、显式龙格-库塔法、隐式龙格-库塔法以及线性多步法中的Adams显隐式公式和预测校正公式, 并且对其稳定性及收敛性作了理论分析. 最后给出了数值例子, 进行了计算机程序算法的分析与实现, 以计算机的速度优势来弥补计算量大的不足. 从得出的结果对比各种方法的优缺点.

2常微分方程初值问题的数值解法

2.1 数值方法的基本思想

考虑一阶常微分方程初值问题

dx?f(x,y),x?[a,b], dy y(x0)?y0 (2.1)

的数值解法, 其中f是x和y的己知函数, y0是给定的初始值.

对于常微分方程初值问题(2.1)数值解法, 就是要算出精确解y(x)在区间[a,b]上的一系列离散节点a?x0?x1???xn?1?xn?b的函数值y(x0), y(x1), ?,y(xn)的近似值y0, y1, ?, yn.相邻两个节点的间距h?xi?1?xi称为步长, 这时节点也可以表示为

xi?x0?ih(i?1,2,?,n). 数值解法需要把连续性的问题加以离散化, 从而求出离散节

点的数值解.

通常微分方程初值问题(2.1)的数值方法可以分为两类:

联系客服:779662525#qq.com(#替换为@)