变步长的龙格库塔法

合集下载

龙格库塔积分算法

龙格库塔积分算法

龙格库塔法龙格库塔法是常用于模拟常微分方程的解的重要的一类隐式或显式迭代法。

这些技术由数学家C. Runge和M.W. Kutta于1900年左右发明。

由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。

龙格库塔法是一种在工程上应用广泛的高精度单步算法,可以应用在物理、工程、控制、动力学中,如模糊控制、弹道分析以及分析光纤特性等,在系统仿真中得到广泛应用。

龙格库塔法源自于相应的泰勒级数方法,在每一插值节点用泰勒级数展开,其截断误差阶数也是,根据可省略更高阶的导数计算, 这种方法可构造任意阶数的龙格库塔法。

其中4 阶龙格库塔法是最常用的一种方法。

因为它相当精确、稳定、容易编程。

在计算中一般不必使用高阶方法, 因为附加的计算误差可由增加精度来弥补。

如果需要较高的精度, 可采取减小步长的方法即可。

4 阶龙格库塔法的精度类似4 阶泰勒级数法的精度。

1、初值问题对于一阶常微分方程的初值问题根据常微分方程的理论可知,此初值问题的解在区间[a,b]上存在,且唯一。

2、离散化取步长h=(b-a)/n,将区间[a , b]分成n个子区间:a=<=b在其中任意两点的曲线段上,根据积分中值定理,一段光滑曲线上至少有一点,它的斜率与整段曲线的平均斜率相同,得=y’() (0<<1)其中,=可以将上式改写成y()=y()+h*K (2.1)其中K为平均斜率,K=f()公式(2.1)表明,如果能够确定平均斜率K,就可以根据(2.1)式得到y()的值。

欧拉法和龙格库塔法就是用不同方法确定不同精度的平均斜率K,从而求得y()的近似值。

3、Euler法欧拉法虽然精度低,但它是最简单的一种显式单步法,也是龙格库塔法的基础。

首先,令、为y() 及y()的近似值,并且令平均斜率K=f(),即以点的斜率作为平均斜率K,便得到欧拉公式=+h* f() (3.1)4、改进的欧拉法此种方法是取、两点的斜率的平均值作为平均斜率K,即K= ,其中、均为y()以及y()的近似值,就得到改进后的欧拉公式(4.1)其中、分别为、两点的斜率值,即= ,=在上面的(4.1)式中,k2是未知的,采用一种叫预报法的方法来求解。

82第二节 龙格—库塔法

82第二节 龙格—库塔法
h k y x n O hk 1 k! 2
k
(1)
h h k 若令 yn1 y xn hy xn y xn y xn (2) 2! k! 则 y xn1 yn1 O hk 1
y0 k1 2 k2 hf x0 h 2, y0 k1 2
y0 k3
k4 hf x0 h, y0 k3
y0 k2 2 k3 hf x0 h 2, y0 k2 2
k
x1 x0 h y1 y0 k
数学学院 信息与计算科学系
0.1832292
0.1584376
数学学院 信息与计算科学系
接上图
0.4 0.5 0.5 0.6 0.6 1.341667 1.416026 1.412676 1.482627 1.483281 0.0745394 0.0710094 0.0708400 0.0673253
0.1416245
数学学院 信息与计算科学系
数学学院 信息与计算科学系
由表8-4可见,虽然四阶龙格-库塔方法每步要 计算四次 f 的值,但以h=0.2为步长ቤተ መጻሕፍቲ ባይዱ计算结果就
有5 位有效数字,而欧拉法与预估计-校正方法以
h=0.1为步长的计算结果才具有2 位与3 位有效数字.
如果步长 h 也取0.2,则结果的精度会更低.

即公式(2)为k 阶方法.
数学学院 信息与计算科学系
二、龙格-库塔方法(R-K方法)
R-K方法不是通过求导数的方法构造近似公式, 而是通过计算不同点上的函数值, 并对这些函数值作 线性组合, 构造近似公式, 再把近似公式与解的泰勒 展开式进行比较, 使前面的若干项相同 , 从而使近似 公式达到一定的阶数.

第三部分龙格-库塔方法

第三部分龙格-库塔方法

内江师范学院数学与信息科学学院 吴开腾 制作
于是有
其中
y ( xn +1 ) − y ( xn ) = y '(ξ ), ξ ∈ ( xn , xn +1 ) h y ( xn +1 ) = y ( xn ) + hf (ξ , y (ξ ))
k * = f (ξ , y (ξ )) 称作区间 [ xn , xn +1 ] 上的平均斜率。 上的平均斜率 平均斜率。 问题:计算近似值y ( xn +1 ) 的关键是如何选择算法确定平均斜率 k *
(15)
f ( xn +1 , yn + h ( − k1 + 2 k 2 ))
内江师范学院数学与信息科学学院 吴开腾 制作
注释1 可以用Taylor展示证明格式(14) 注释1:可以用Taylor展示证明格式(14)具有三阶精 展示证明格式
度,并且还可以用类似的方法得到四阶及其以上的更高 阶精度的Runge-Kutta格式 阶精度的Runge-Kutta格式。 Runge 格式。
内江师范学院数学与信息科学学院 吴开腾 制作
h yn + ( k1 + 2 k 2 + 2 k3 +k 4) 6 f ( xn , y n ) h f ( x 1 , yn + k1 ) n+ 2 2 h f ( x 1 , yn + k 2 ) n+ 2 2 f ( xn +1 , yn + hk3 ) (16)
四阶龙格- 四阶龙格-库塔格式计算结果
xn
0.1 0.2 0.3 0.4 0.5
yn
欧拉格式计算结果 xn yn y ( xn )

Runge-Kutta算法

Runge-Kutta算法

Yn 1 Yn h(c1 K1 c2 K 2 c3 K 3 ) K F (t , Y ) 1 n n K 2 F (t n 2 h, Yn 21hK1 ) K 3 F (t n 3 h, Yn 31hK1 32 hK2 )

y (0) 1.
步长都取为 h 0.1 分别用以下两种系数:
1 1. a , 改进的Euler 法: 2 1 c1 c2 , 2 21 1. 2 积分公式: yn 1 y 0.1 y
n 2 n
yn 0.1 y

2 2 n
2
1 2. a , 3 2 1 3 c1 , c2 , 2 21 . 3 3 2 积分公式:
2 2 yn 1 yn 0.1 2 yn yn 3 0.1 yn 2


3
2
结果及比较
三阶显式Runge-Kutta方法
在推导二阶显式方法的过程中,注意到局部截断误差表达式中h3项 包含了以下表达式: Yn Ftt(t n ,Yn ) 2 FtY (t n ,Yn )Fn FYY (t n ,Yn )Fn2 FY(t n ,Yn )Ft n ,Yn ) FY(t n ,Yn )Fn (t 因此若要在局部截断误差中消去h3项,必须增加包含了以上各项的 多个方程,同时我们注意到r=2时,只有c1,2 , 1 , 21 等四个待定系数, 少于方程的数目,所以这样的系数不存在。故: r=2时Runge-Kutta 方法只能是二阶的。要得到三阶的方法,则必须有r=3。
类似前面的推导,可以导出更高阶的Runge Kutta公式. 关于Runge Kutta方法,有以下几点需要特别指出:

龙格-库塔方法-文档资料

龙格-库塔方法-文档资料
3
c3a 2b32
c3a3 1
6
; 2
O (h4)
常见的2种三阶方法:
库塔三阶方法
h yn1yn6(k14k2k3)
k1
f(xn,yn);
k2
hh f(xn2,yn2k1)
k 3 f(x n h ,y n h k 1 2 h k 2 ) •5
四级方法:N = 4
局部截断误差 O ( h 5 )
可见误差随着 x n 的增加呈指数函数递减
当 f y 0 时,微分方程是不稳定的; 而 f y 0 时,微分方程是稳定的。
上面讨论的稳定性,与数值方法和方程中 f 有关
•21
实验方程: y y C ,R e () 0
D e f 3 对单步法 yn 1ynh(xn,yn,h )应用实验方程,
e n 1 e n h [ ( x n ,y ( x n ) , h ) ( x n ,y n , h ) ] T n 1
•15
因为单步法是 p 阶的:h0,0hh0满足|Tn1|Chp1
|e n 1| |e n| h L |e n| C h p 1|en |
其中 1hL,C hp1
•18
三、绝对稳定性 /*Absolute Stibility*/ 计算过程中产生的舍入误差对计算结果的影响
首先以Euler公式为例,来讨论一下舍入误差的传播:
yn1ynhf(xn,yn)
设实际计算得到的点 x n 的近似函数值为 yn yn n,
其中 y n 为精确值, n 为误差
yn1ynhf(xn,yn)
通过适当选取参数 1,2和 p 的值,使得公式具有 2阶精度!!
•3
由泰勒公式展开,要使公式具有 2 阶精度,只需

龙格库塔法介绍

龙格库塔法介绍

h 0.005稳定.
2) 改进欧拉法(预测 — 校正,即二阶R K法):

yn
1

yn

h
k1 2

k2 2
,

k1

f (xn, yn ) yn,
k2 f (xn h, yn hk1) ( yn hyn ),
即yn1 故

yn
当初值准确即e0 0时,整体误差为en O(h p ).
证明
考察单步法的收敛性归结为验证增量函数(x, y,h)是否
满足Lipschitz条件.
欧拉法 : (x, y,h) f (x, y),L L.
改进的欧拉法:
yn1

yn

h[ 2
f
(xn, yn )
f
( xn 1,
xn
f
( x,
y ( x))dx

r
h ci
i 1
f
( xn

ih,
y ( xn

ih)).

yn1 yn h(xn, yn, h),
(3.4)
其中
r
(xn, yn, h) ciki ,
(3.5)
i 1
k1 f (xn, yn ),
欧拉法r 1, p 1.改进 欧拉法r 2, p 2.
k1)
k3)
k3 f (xn h, yn hk1 2hk2 )
称为库塔三阶方法.
阶数p和段数r(计算函数值次数)的关系
r12 p1 2
3 4 5 6 7 r≥8 3 4 4 5 6 r-2
常用的经典四阶龙格 库塔方法:

变步长四阶龙格库塔方法在水文水力计算中的应用

变步长四阶龙格库塔方法在水文水力计算中的应用

变步长四阶龙格库塔方法在水文水力计算中的应用
梁建;李宝春;祁涛;卢俊
【期刊名称】《水资源与水工程学报》
【年(卷),期】2015(0)3
【摘要】将变步长四阶龙格库塔方法用于水库调洪演算与水面线的计算中。

变步长龙格库塔方法,可以有效地避免峰值的错过。

以安徽省小水库除险加固工程为例,对该水库采用传统试算方法和变步长龙格库塔方法进行调洪演算和水库溢洪道水面线计算,分别得到了下泄洪水过程线、水位变化过程曲线和溢洪道水面线。

结果表明:本方法易于程序设计,精度满足工程要求,可以用于水文水力计算中微分方程的求解。

【总页数】5页(P161-164)
【关键词】水库调洪;水面线计算;水文水力计算;变步长龙格库塔
【作者】梁建;李宝春;祁涛;卢俊
【作者单位】安徽省.水利部淮委水利科学研究院
【正文语种】中文
【中图分类】TV131
【相关文献】
1.变步长龙格库塔方法在安徽中小水库调洪中的应用 [J], 梁建;祁涛;卢俊
2.四阶龙格—库塔法在电机数字仿真中的适用范围与最佳步长的确定 [J], 邬学义
3.四阶龙格-库塔方法的程序设计与应用 [J], 罗丽珍; 吴庆军
4.四阶龙格库塔法在高士沟水库调洪计算中的应用 [J], 陈猛
5.溢洪道泄槽水面线计算的四阶龙格—库塔方法 [J], 范如琴
因版权原因,仅展示原文概要,查看原文内容请购买。

第二节 龙格-库塔方法

第二节 龙格-库塔方法

h( k1 + k2 ) yn +1 = yn + 2 hk1 1 1 3 3 k1 = f [ xn + ( + )h, yn + )hk2 ] +( + 2 6 4 4 6 hk2 1 3 1 3 k2 = f [ xn + ( − )h, yn + ( − )hk1 + ] 2 6 4 6 4
1 库塔三阶方法 库塔三阶方法
h h k1 = f ( xn , yn ); k2 = f ( xn + , yn + k1 ) 2 2
h yn +1 = yn + ( k1 + 4k2 + k3 ) 6
k3 = f ( xn + h, yn − hk1 + 2hk2 )
四级方法: 四级方法:N = 4 常见的2种四阶方法: 常见的 种四阶方法: 种四阶方法 经典龙格 库塔方法 龙格1经典龙格-库塔方法
1 中点法(修正的Euler法) 取 c1 = 0, c2 = 1, a2 = 1 中点法(修正的 法 2 h h
y n +1 = y n + hf ( x n +
常见的3种二级方法: 常见的 种二级方法: 种二级方法
二阶龙格库塔方法 2 二阶龙格库塔方法
h yn +1 = yn + [ f ( xn , yn ) + f ( xn + h, yn + hf ( xn , yn ))] 2
1 取 c1 = c2 = , a2 = 1 2
2
, yn +
2
f ( x n , y n ))
类似于N 的推导方法, 的推导方法 三级方法: 三级方法:N = 3 类似于 = 2的推导方法,可得到 1 c1 + c 2 + c 3 = 1; c 2 a 2 + c 3 a 3 = ; 2 O ( h4 ) 1 1 2 2 c 2 a 2 + c 3 a 3 = ; c 3 a 2 b32 = 6 3 常见的2种三阶方法: 常见的 种三阶方法: 种三阶方法
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变步长的龙格—库塔方法
以经典四阶龙格—库塔公式为例。从节点xn出发,以h为
步长求一近似值yn(h1) ,
y( xn1 )
y(h) n 1
ch5 ,
将步长折半,即取
h 2
为步长从xn
跨两步到xn
,求一近似
1
值y ( h/2) n 1
,
每跨一步的截断误差是c
h 2
5
,因此有
y( xn1 )
y ( h/2) n 1
2c
h 2
5
,
由上两式
y( xn1 )
y ( h/2) n 1
1.
y( xn1 )
y(h) n 1
16
y( xn1 )
y ( h/2) n 1
1 15
[
y ( h/2) n 1
y(h) n 1
].
公式
Euler公式 改进Euler公式
yn1 K1
yn f ( xn ,
hK1 yn )
完成的步数就增加了。这样会引起计算量的增大,
并且会引起舍入误差的大量积累与传播。因此微分
方程数值解法也有选择步长的问题。
以经典的四阶龙格-库塔法(7.20)为例。从节点
xi出发,先以h为步长求出一个近似值,记为
y (h) i 1

由于局部截断误差为 O(h5 ) ,故有
y( xi1 )
y (h) i 1
Q: 由局部截断误差可以看出,步长 h 越小,局部截断 误差越小;但步长减小,在一定求解范围(区间)内 要完成的步数就增加了,步数增加会引起计算量增大, 导致舍入误差积累。因此要选取适当的步长。
选择步长时要考虑两个问题: 1.如何衡量和检验计算结果的精度? 2.如何根据所获得的精度处理步长?
HW: p.201 #6-8
(1)如果Δ>ε,反复将步长折半进行计算,直
至Δ<ε为止,并取其最后一次步长的计算结果作为y i 1
(2)如果Δ<ε,反复将步长加倍,直到Δ>ε
为止,并以上一次步长的计算结果yi作1 为

这种通过步长加倍或折半来处理步长的方法称为
变步长法。表面上看,为了选择步长,每一步都要
反复判断Δ,增加了计算工作量,但在方程的解y(x)
j 1
(i 2, 3L , p)
确定原则是使近似公式在( xn , yn )处的Taylor展开式与
y( x)在xn处的Taylor展开式的前面项尽可能多地重合。
7.4.6 变步长的龙格-库塔法
在微分方程的数值解中,选择适当的步长是非常
重要的。单从每一步看,步长越小,截断误差就越
小;但随着步长的缩小,在一定的求解区间内所要
7
O(h6 )
n8
O(hn2 )
由于龙格-库塔法的导出基于泰勒展开,故精度主要受
解函数的光滑性影响。对于光滑性不太好的解,最好 采用低阶算法而将步长h 取小。
➢ 变步长的Runge—Kutta Method
§2 Runge-Kutta Method
Rn1 ch p1 y( p1) xn
§2 Runge-Kutta Method
➢ 最常用为四级4阶经典龙格-库塔法 /* Classical Runge-Kutta
Method */ :
yi 1
yi
h 6
(K1
2K2
2K3
K4)
K1 f ( xi, yi )
K2
f
( xi
h2 ,
yi
h 2
K1)
K3
f
( xi
h2 ,
yi
h 2
K2)
K4 f ( xi h, yi hK3 )
➢ Gill公式:4阶经典龙格-库塔公式的一种改进
yi1
yi
h 6
K1
2
2 K2 2
2 K3 K4
K1 f (xi , yi )K2f( xih 2
,
yi
h 2
K1)
K3
f
( xi
h 2
,
yi
2 1 2
hK1
1
2 2
hK2 )
yn
1
yn
h( 1 2
K1
1 2
K2 )
K1
f ( xn , yn )
K2 f ( xn h, yn hK1 )
一般地,RK方法设近似公式为
p
yn1 yn h ci Ki
K1
i 1
f ( xn , yn )
i 1
Ki
f ( xn ai h, yn h bij K j )
1
y( x i1 )
y (h) i 1
16
由此可得
y(xi1 )
(h)
y2 i 1
1 15
(
(h)
y2 i 1
y
(h) i 1
)
h
这表明以
()
y2 i 1
作为
y(xi1) 的近似值,其误差可用步
长折半前后两次计算结果的偏差
来判断所选步长是否适当
y y ( h ) 2 i 1
(h) i 1
当要求的数值精度为ε时:
i
21
1
K f ( x h, y hK hK )
3
i
3
i
31
1
32
2
... ...
K f ( x h, y hK hK ... hK )
m
i
m
m1
1
m2
2
m m 1
m 1
其中i ( i = 1, …, m ),i ( i = 2, …, m ) 和 ij
( i = 2, …, m; j = 1, …, i1 ) 均为待定系数,确 定这些系数的步骤与前面相似。
变化剧烈的情况下,总的计算工作量得到减少,结
果还是合算的。
➢ 高阶Runge—Kutta Method
§2 Runge-Kutta Method
y y h[ K K ... K ]
i 1
i
11
22
mm
K f(x , y )
1
ii
K f ( x h, y hK )
2
i
2
K4
f (xi h ,
yi
2 2
hK2
1
2 2
hK3 )
§2 Runge-Kutta Method
注:
龙格-库塔法的主要运算在于计算 Ki 的值,即计算 f 的
值。Butcher 于1965年给出了计算量与可达到的最高精 度阶数的关系:
每步须算Ki 的个数 2 3
4
5
6
可达到的最高精度 O(h2 ) O(h3 ) O(h4 ) O(h4 ) O(h5 )
ch5
当h值不大时,式中的系数c可近似地看作为常数。
然后将步长折半,即以为 h 2
步长,从节点xi出发,跨
两步到节点xi+1,再求得一个近似值
h ()
y2 i 1
,每跨一步的
截断误差是 c h 5 ,因此有
2
y( xi1 )
h
()
y(
xi
2 1
)
h
2c
h 5 2
()
这样
y( x i1 )
y2 i 1
相关文档
最新文档