在数学上,凡是含有未知函数导数或微分的方程叫做微分方程。若未知函数是一元,则称为常微分方程。
求解微分方程,就是确定满足给定方程的可微函数 。一个微分方程与其初始条件构成的问题叫做初值问题,求解某初值问题就是求方程的特解。大多数情况下,解析解是不容易求得的,这时就需要用到数值解法。常用的求解微分方程的数值解法有欧拉法、向后欧拉法、梯形法、 方法、龙格库塔法等。
2.龙格库塔方法
2.1 龙格库塔法的原理[4]
单步显式的欧拉法是解决常微分方程初值问题的最简单的数值解法,实际上这种方法用均差来近似导数值,得到的精度并不高。
之后,龙格和库塔在欧拉方法的基础上,为了提高计算公式的精度,提出了一种间接地运用Taylor公式的方法,简单来说,就是设法在 区间内多预报几个点的斜率值,将这些斜率值加权平均后,把它作为平均斜率的近似,构造出具有更高精度的计算格式,从而得出较多阶的数值公式,这就是龙格库塔法的设计思想。
2.2 龙格库塔公式的推导[5][6]
在自然科学和经济的许多领域中,常常会遇到初值问题
(1)
这里 充分光滑, 是给定的初始值, 称为初始条件。
Runge发现把Euler方法应用于初值问题时,得到 的逼近程度并不是很高,如果用梯形求积公式近似,得到的数值解精度会更高[7] 。
Kutta进一步发展思想得到方法:我们需要确定常数,源^自#751L文W论/文]网[www.751com.cn , 及 的值,使以下数值解法
(2)
的局部截断误差满足:
首先将 在 处展成幂级数
将
代入(3)式,得
(4)
其中 , , 分别表示相应函数在点 处的函数值。
由上式得
(5)
利用二元函数的泰勒展开式,将函数 在 处展开成
(6)
代入(5)式,得
(7)
在局部截断误差的前提假设 下,有:
(8)
要使局部截断误差 ,当且仅当
不妨取 ,可得二阶Runge-Kutta公式为
二阶Runge-Kutta公式的局部截断误差为
从二阶二段Runge-Kutta公式的推导可以看出,二段方法每一步需要计算两次函数值,而它也只能达到二阶精度。如果我们提高函数的计算次数,就可以得到精度更高的计算公式,高阶的龙格库塔公式的推导与二阶方法的推导完全相同,它的基本思想是通过增加计算 的次数来提高问题的精度。