数值分析_数值计算小论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Runge-Kutta 法的历史发展与应用
摘要Runge-Kutta 法是极其重要的常微分方程数值解法,本文仅就其起源及发展脉络加以简要研究。对Runge 、Heun 以及Kutta 等人的贡献做出适当评述,指出Runge-Kutta 方法起源于Euler 折线法。同时对Runge-Kutta 法的应用做简要研究。
关键词 Euler 折线法 标准四阶Runge-Kutta 法 应用
一、发展历史[1]
1.1 Euler 折线法
在微分方程研究之初,瑞士数学家L.Euler(1707.4—1783.9)做出了开创性的工作。他和其他一些数学家在解决力学、物理学问题的过程中创立了微分方程这门学科。在常微分方程方面,Euler 在1743年发表的论文中,用代换kx y e =给出了任意阶常系数线性微分方程的古典解法,最早引入了“通解”和“特解”的概念。
1768年,Euler 在其有关月球运行理论的著作中,创立了广泛用于求初值问题
00
(,), (1.1)() (1.2)y f x y x x X y x a '=<≤⎧⎨=⎩ 的数值解的方法,次年又把它推广到二阶方程。欧拉的想法如下:我们选择0h >,然后在00x x x h ≤≤+情况下用解函数的切线
0000()()(,)l x y x x f x y =+-
代替解函数。这样对于点
10x x h =+
就得到
1000(,)y y hf x y =+。
在11(,)x y 重复如上的程序再次计算新的方向就会得到所谓的递推公式:
11, (,),m m m m m m x x h y y hf x y ++=+=+
这就是Euler 方法。通过连接所有这些切线得到的函数被称为Euler 折线。如果我们令0h →, 这些折线就会越来越接近解函数。
Euler 折线法是最早出现的,虽然它亦是常微分方程初值问题的最简单的数值解法, 但它的一些特性和研究方法对于更复杂的方法却具有普遍意义。几十年后,法国数学家A .L .Cauchy(1789.8—1857.5)在历史上首次研究了常微分方程的局部性态。对于给定的初值问题(1.1)和(1.1),在(,)f x y 连续可微的假设下, 他用类似于欧拉折线的方法构造逼近解, 利用微分中值定理估计逼近解之间差的上界,严格证明了以0x 为中心的一个小区间上逼近解收敛, 其极限函数即为所提问题的解。同时Cauchy 指出,这种方法也适用于常微分方程组,所以欧拉方法有时又称Euler-Cauchy 折线法。
2.2 Runge-Kutta 方法
德国数学家 C.D.T.Runge(1856—1927)是数值方法发展史上具有里程碑作用的人物。1895年,他在Hanover 发表了关于微分方程数值解法的经典论文《常微分方程数值解法》, 此文成为常微分方程Runge-Kutta 方法的发端。此后,Runge 结合教学活动积极投身于发展一般的数值分析特别是各种实际应用中的Runge-Kutta 方法(严格来说,此方法在Kutta 做出工作后才能称作Runge-Kutta 方法)。
Runge 伟大创造的思想是什么呢?他的灵感来自于初值问题(1.1)和(1.2)与积分问题
0000()()()x h
x y x h y x f x dx f y ++=+
⎰(此时与无关)
(1.3) 之间的对比,显然,等式(1,3)右侧数值积分的精确度决定0()y x h +的精确度,Runge 发现, Euler 方法采用的是左矩形公式
000()()x h
x f x dx hf x +≈⎰,
即用高为0()f x 宽为h 的矩形代替数值积分, 而这个公式的精确度并不高。因此他说:最好通过插入上述Euler 步骤的结果来代替未出现的y 值, 把精度更高的中点法则和梯形法则拓展到微分方程。
10000011:(,(,))22
M y y hf x h y hf x y ==+++, 1000000011:((,)(,(,)))22T y y h f x y f x h y hf x y ==++++。 其中M 和T 分别表示用中点法和梯形法算得的数值积分。与他的后继者一样,Runge 用Taylor 展开式表明上述两方法的局部误差是,方法的阶为2。不过他的梦想却是使用具有更高精度的Simpson 法则。但是众所周知,()/3R M T M =+-的微小变化往往易产生假象,令人误以为可以获得更高的阶。Taylor 级数展开表明,如果f 依赖于y ,事实上这个表达形式只是2 阶的。接着Runge 发现,通过重复使用Euler 步骤对梯形法则做些许调整,会使形式()/3R M T M =+-'成为3 阶方法。Runge 还把他的方法及方法的展开式拓展到微分方程组。
1900 年,Runge 的同胞K .Heun 评论说,Runge 获得的上述方法是归纳性的而且是令人费解的,他提出采用“更具一般性”的Gauss 方法。于是一般的Gauss 求积公式
1001()s
i i i y y h b f x c h ==++∑,
被扩充为
100202021303032(,),
(,),(,),
k f x y k f x c h y c hk k f x c h y c hk ==++=++ 101s
i i i y y h b k ==+∑ (1.4)
把(1.4)式的右端进行二元Taylor 展开后与()y x h +的Taylor 展开式的对应项的系数比较,适当选取参数使方法具有尽可能高的精度。
Runge 的另一个同胞W.M.Kutta(1867—1944),1894到1909年在Munich 做助教,在那里受到Runge 文章的吸引并在Heun 论文的激励下发表了他的研究结果。他认为,为什么不让已经求得的导数值全部进入到新的求值点的计算中呢?