变步长的龙格库塔法

合集下载

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 )

变步长的龙格库塔法

变步长的龙格库塔法

yn1
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
K
i
f ( xn ai h, yn h bij K j )
j 1
(i 2, 3
选择步长时要考虑两个问题: 1.如何衡量和检验计算结果的精度? 2.如何根据所获得的精度处理步长?
HW: p.201 #6-8
结束语
谢谢大家聆听!!!
17
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 )
7
O(h6 )
n8
O(hn2 )
由于龙格-库塔法的导出基于泰勒展开,故精度主要受
解函数的光滑性影响。对于光滑性不太好的解,最好 采用低阶算法而将步长h 取小。
➢ 变步长的Runge—Kutta Method
§2 Runge-Kutta Method
R n 1chp 1y(p 1) xn
Q: 由局部截断误差可以看出,步长 h 越小,局部截断 误差越小;但步长减小,在一定求解范围(区间)内 要完成的步数就增加了,步数增加会引起计算量增大, 导致舍入误差积累。因此要选取适当的步长。

《龙格-库塔方法》课件

《龙格-库塔方法》课件
优点
适用于求解一般和刚性常微分方程,并且具有较好的稳定性和收敛性。
龙格-库塔方法的原理
1
基本思路
通过将微分方程转化为差分方程,使用逼近公式计算数值解。
2
推导过程
使用泰勒级数展开和积分逼近,推导出不同阶次的龙格-库塔方法公式。
龙格-库塔方法的算法流程
1
步骤分解
包括选择步长、计算斜率、更新数值、迭代等一系列操作。
《龙格-库塔方法》PPT课 件
欢迎大家来到本次的PPT课件《龙格-库塔方法》。在本课程中,我们将一起 探索这一数值计算方法的原理、算法流程、应用领域以及注意事项。
什么是龙格-库塔方法?法。
特点
通过多步骤迭代计算,可以得到精确性较高的数值解。
2
具体实现过程
将算法流程转化为编程语言中的相应代码实现。
图解龙格-库塔方法
龙格-库塔方法示意图
图中展示了使用龙格-库塔方法进行迭代计算的示意 图。
对比其他数值方法的表现
通过与其他数值方法的比较,可以更好地理解龙格库塔方法的优势。
龙格-库塔方法的应用领域
常见应用范围
广泛应用于科学研究、工程计算、物理模拟等领域。
实际计算案例
通过实际案例,展示龙格-库塔方法在解决实际问题中的应用。
注意事项
1 龙格-库塔方法的收敛性和稳定性
在使用龙格-库塔方法时,需要注意数值解的收敛性和算法的稳定性。
2 常见误差和偏差的处理方法
介绍常见的误差和偏差来源,并提供相应的处理方法。
总结
龙格-库塔方法的优势和不足
总结龙格-库塔方法的优点和局限性,指出其适 用性和改进空间。
对未来数值计算的展望
展望未来龙格-库塔方法在数值计算领域的发展 和应用前景。

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
常用的经典四阶龙格 库塔方法:

第二节 龙格-库塔方法汇总.ppt

第二节 龙格-库塔方法汇总.ppt

ki f ( xn aih, yn h bijk j );i 1, ..., N
.精品课件.j 1
11
(1)一级二阶的隐式中点方法:
yn1 yn hk1
k1
f ( xn
h, 2
yn
hk1 ) 2
(2)二级四阶的隐式R-K方法:
yn1
yn
h(k1 k2 ) 2
k1
1 f [xn ( 2
第二节 龙格-库塔法
基本思想:利用 f ( x, y) 在某些特殊点上的函数值的 线性组合来构造高阶单步法的平均斜率。
什么叫平均斜率?
对差商 y( xi1) y( xi ) 应用微分中值定理,有,
h
y( xi1) y( xi ) hy( xi h) 利用微分方程 y f ( x, y),有
y( xn1 )
y(h) n1
Ch5
Step2:取
h 为步长,再从 2
x n 出发,经过两步计算得到
y( xn1)
y(h2) n1
2C( h)5 2
.精品课件.
13
y( xn1)
y(h/ 2) n1
y( xn1)
y(h) n1
1 16

|
y(h/ 2) n1
y(h) n1
|
16( y( xn1)
y( xi1) y( xi ) hf ( xi h, y( xi h))
这里的 f ( xi h, y( xi h)) 称为平均斜率。
.精品课件.
1
可将改进的欧拉格式改写成
yi 1
1 2
( K1
K2 ),
K1 yi hf ( xi , yi ),

变步长 ode23tb 算法

变步长 ode23tb 算法

变步长ode23tb算法是一种用于解非刚性常微分方程初值问题的数值算法。

该算法由MathWorks公司的工程师开发,其特点是能够自适应调整步长以提高求解精度和效率。

ode23tb算法是ode23算法的改进版本,通过引入更高阶的解析技术和自适应的步长控制,使得求解过程更加可靠和高效。

二、算法原理ode23tb算法基于龙格-库塔(Runge-Kutta)方法,通过描述性的一阶创建步骤和更高阶的增补步骤来近似解微分方程。

算法会根据当前的解的精度和误差情况,自适应地调整步长以确保求解的精度和效率。

ode23tb算法还引入了自动时步的策略,以处理不同变化速度的微分方程。

三、算法特点1. 自适应调整步长:ode23tb算法能够根据当前解的情况实时调整步长,避免不必要的计算和提高求解效率。

2. 高阶解析技术:通过引入更高阶的解析技术,ode23tb算法能够更准确地近似微分方程的解,在不增加过多计算成本的情况下提高求解精度。

3. 自动时步策略:算法能够根据微分方程的变化速度自动调整时步,适应不同变化速度的微分方程的求解。

作为一种高效可靠的数值求解算法,ode23tb算法在科学计算、工程领域和其他需要求解微分方程的问题中得到了广泛的应用。

例如在控制系统的建模和仿真中,ode23tb算法能够准确地求解系统的状态方程,为系统性能分析提供有力的支持。

在生物医学领域,ode23tb算法被用于建立生物模型和仿真生物系统的动态行为。

ode23tb算法还被应用于气象学、天文学、材料科学等领域,为复杂的微分方程问题提供了强大的求解能力。

五、算法发展随着科学技术的发展和对求解微分方程精度和效率要求的不断提高,ode23tb算法也在不断地进行改进和优化。

未来的发展方向主要包括进一步提高算法的自适应调整能力,完善算法的并行计算和局部精度控制,以满足各种复杂微分方程求解问题的需求。

六、总结ode23tb算法作为一种自适应调整步长的高效数值求解算法,在科学计算和工程实践中发挥着重要作用。

(完整版)第二节龙格-库塔方法

(完整版)第二节龙格-库塔方法
en1 en h[( xn , y( xn ), h) ( xn , yn , h)] Tn1
因为单步法是 p阶的:h0 , 0 h h0 满足| Tn1 | Chp1
| en1 || en | hL | en | Ch p1 | en |
其中 1 hL, Ch p1
en O(hp )
即取
K * 1K1 2 K2 yi1 yi h(1K1 2 K2 )
其中1 和 2 是待定常数。若取 K1 f ( xi , yi ) ,则
问题在于如何确定 xi p 处的斜率 K2 和常数 1 和 2 。
仿照改进的欧拉方法,用欧拉方法预测 y( xi p ) 的值,
yi p yi phK1
k2
f ( xn
h 2
,
yn
h 2 k1)
hh k3 f ( xn 2 , yn 2 k2 )
k4 f ( xn h, yn hk3 )
例2:用经典的龙格-库塔方法
求解下列初值问题 h 0.1
dy 。 dx
y
2x y
x (0,1)
解:经典的四阶龙格-库塔公式: y(0) 1
E(h) 1 h
绝对稳定域: 1 h 1
当 R 时, 1 h 1 2 h 0
绝对稳定区间:(2, 0)
❖经典的R-K公式:yn1
yn
h 6
(k1
2k2
2k3
k4 )
k1 f ( xn , yn ) yn
k2
f
(
yn1 yn hf ( xn , yn )
n1 yn1 yn1
n1 n h[ f ( xn , yn ) f ( xn , yn )] [1 hf y ( xn , )]n

数值解常微分方程的方法和技巧

数值解常微分方程的方法和技巧

数值解常微分方程的方法和技巧在科学和工程领域,我们经常遇到一些复杂的常微分方程(Ordinary Differential Equations, ODEs),这些方程往往很难用解析方法得到精确解。

而数值解常微分方程的方法和技巧提供了一种有效的途径来近似求解这些方程。

本文将介绍一些常用的数值解ODEs的方法和技巧。

一、欧拉方法(Euler Method)欧拉方法是最简单的数值解ODEs的方法,它利用初始条件和微分方程的导数来计算下一个点的近似值。

具体来说,假设我们要求解的ODE为dy/dx = f(x, y),其中f(x, y)是已知函数,初始条件为x0 = x(0),y0 = y(0)。

欧拉方法的迭代公式为:y[i+1] = y[i] + h * f(x[i], y[i])其中,h是步长,x[i]表示第i个点的x坐标,y[i]表示对应的y坐标。

二、龙格-库塔方法(Runge-Kutta Method)龙格-库塔方法是一族常用的数值解ODEs方法,其基本思想是通过计算不同阶数的导数来提高求解的精度。

最常用的龙格-库塔方法是四阶龙格-库塔方法,也称为RK4方法。

它的迭代公式如下:k1 = h * f(x[i], y[i])k2 = h * f(x[i] + h/2, y[i] + k1/2)k3 = h * f(x[i] + h/2, y[i] + k2/2)k4 = h * f(x[i] + h, y[i] + k3)y[i+1] = y[i] + 1/6 * (k1 + 2*k2 + 2*k3 + k4)其中,k1、k2、k3、k4是中间变量,h是步长。

三、改进的欧拉方法(Improved Euler Method)改进的欧拉方法是对欧拉方法的改进,它通过使用导数的平均值来提高求解的精度。

其迭代公式为:k1 = h * f(x[i], y[i])k2 = h * f(x[i] + h, y[i] + k1)y[i+1] = y[i] + 1/2 * (k1 + k2)其中,k1、k2是中间变量,h是步长。

龙格库塔积分算法

龙格库塔积分算法

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

这些技术由数学家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是未知的,采用一种叫预报法的方法来求解。

龙格库塔法的基本思想

龙格库塔法的基本思想

龙格库塔法的基本思想
龙格库塔法,又称拉格朗日-龙格-库塔(Rallgendre-Kutta)法,是由德国数学家拉格朗日于1867年和德国数学家库塔于1901年分别提出的数值解法,是一种用于解决初值问题的数值分析方法,是飞行器运动动力学中用于近似解微分方程的方法之一。

龙格库塔法的基本思想是:将积分分成多个小步,将每一步步长求解结果串联起来,从而求出整个时间轴上每一个点的解。

为了满足既定的精度要求,需要不断减小步长,从而增加划分的步数。

如果步长继续减小,微分方程求解速度会变慢很多,故使用龙格库塔方法可较快求解方程。

龙格库塔法的实际应用中,通常是把初值问题用一系列积分步骤替代,每个积分步骤用四阶龙格库塔公式来模拟,每一步的计算结果都有效,最后得到的结果都是基于此,因此更加稳定。

此外,每个积分步骤可以由四步单步计算得出,因此实现和追踪也很容易。

总而言之,龙格库塔法比其他方法计算更快、更准确,可以用于解决复杂的初值问题,近年来大受工业界的欢迎,形成了一种重要的数值解法。

变步长四阶龙格库塔法原理

变步长四阶龙格库塔法原理

具体地说,将区分以下两种情况处理:
4
1. 对于给定的精度 ,如果 ,反复将步长折半 进行计算,直至 为止.
h ) 2 n 1 (
这时取最终得到的 y
作为结果;
2. 如果 ,反复将步长加倍,直到 为止, 这时再将步长折半一次,就得到所要的结果. 这种通过加倍或折半处理步长的方法称为变步长方法.
n 1
2
因此有
y ( xn 1 ) y
h ) 2 n 1 (
h 2c , 2
5
(3.15)
比较(3.14)式和(3.15)式我们看到,步长折半后, 1 误差大约减少到 , 16
3
即有
y ( xn 1 ) y y ( xn 1 ) y
h ) 2 n 1 (h) n 1 (
表面上看,为了选择步长,每一步的计算量增加了,
但总体考虑往往是合算的.
事后估计式
y ( xn 1 ) y
h ) 2 n 1 ( ( ) 1 ( 2 [ yn 1 ynh ) ]. 1 15 h
这样,可以通过检查步长,折半前后两次计算结果的偏差
y
h ) 2 n 1 ( ( ynh ) 1
来判定所选的步长是否合适.
1
2° 如何依据所获得的精度处理步长? 考察经典的四阶龙格-库塔公式
h yn 1 yn 6 ( K1 2 K 2 2 K 3 K 4 ), K1 f ( xn , yn ), h h K 2 f ( xn , yn K1 ), 2 2 K f ( x h , y h K ), n n 2 3 2 2 K 4 f ( xn h, yn hK 3 ).

第3章03龙格-库塔方法

第3章03龙格-库塔方法
提供 y(xn p ) 的预报值 yn p ,有 yn p yn phk1 ,因此 k2 f (xn p , yn p ) f (xn ph, yn phk1)
这样有计算公式:
yn1 yn h[(1 )k1 k2 )
k1 f (xn , yn ), k2 f (xn ph, yn phk1)
y(h) n1
1 16
y( xn1)
(h)
y2 n1
1 15
(h)
y2 n1
y(h) n1
误差事后估计
可以通过检查步长折半前后两次计算结果的偏差
y y ( h ) 2
(h)
n1
n1
来判断所选取的步长是否合适.
1) 对于给定的精度ε,如果δ> ε,则反复将步长折半 进行计算,直到δ< ε为止,这时取步长折半后的 新值作为结果;
k4
k3 f ( xn 2h, yn 21hk1 22hk2 ) f ( xn 3h, yn 31hk1 32hk2 33hk3)
四阶龙格-库塔公式每步要四次计算函数值,具有四阶精 度,局部截断误差是O(h5) .
四阶龙格-库塔格式
下列经典格式是其中常用的一种:
yn1 k2
yk
1.000000 1.005000 1.019025 1.041218 1.070800 1.107076 1.149404 1.197210 1.249975 1.307228 1.368514
y( xk ) yk
0.0 1.6×10-4 2.9×10-4 4.0×10-4 4.8×10-4 5.5×10-4 5.9×10-4 6.2×10-4 6.5×10-4 6.6×10-4 6.6×10-4
调用 2 次函数。有 2 阶精度。

数值分析9-3(龙格-库塔方法)

数值分析9-3(龙格-库塔方法)
语言实现龙格-库塔方法
总结词
除了Python和MATLAB,还有许多其他编 程语言可以用于实现龙格-库塔方法。
详细描述
例如C、Java和R等编程语言也提供了相应 的数值计算库或框架,可以实现龙格-库塔 方法。使用这些语言实现龙格-库塔方法需 要一定的编程基础和对相应语言的数值计算 库的了解。
龙格-库塔方法可以用于求解偏微分方程的数值解,通过将偏微分方程转化为常微分方程组,利用龙格 -库塔方法进行迭代求解,能够得到较为精确的结果。
积分方程的数值解
积分方程是描述函数与积分之间的关 系的数学模型,常见于物理、工程等 领域。
VS
龙格-库塔方法也可以用于求解积分 方程的数值解,通过将积分方程转化 为常微分方程组,利用龙格-库塔方 法进行迭代求解,能够得到较为精确 的结果。
重要性及应用领域
龙格-库塔方法是数值分析中非常重要的内容, 它为解决常微分方程提供了一种有效的数值方 法。
在科学、工程和经济学等领域中,许多问题都 可以转化为求解常微分方程的问题,因此龙格库塔方法具有广泛的应用价值。
例如,在物理学、化学、生物学、金融学等领 域中,龙格-库塔方法被广泛应用于模拟和预测 各种动态系统的行为。
数值分析9-3:龙格-库塔方法
目录
• 引言 • 龙格-库塔方法概述 • 龙格-库塔方法在数值分析中的应用 • 龙格-库塔方法的实现与编程 • 龙格-库塔方法的改进与优化 • 结论与展望
01 引言
主题简介
龙格-库塔方法是一种用于求解常微 分方程的数值方法。
它通过构造一个离散化的时间序列来 逼近微分方程的解,并利用已知的离 散点来计算新的离散点,逐步逼近微 分方程的真实解。
02 龙格-库塔方法概述
定义与原理

4.2 龙格库塔法

4.2 龙格库塔法

重复积分过程,直到相邻两次的积分值R2n 与Rn 满足 下列关系:
| R2n Rn | | R2n | 1
R2 n Rn | | R2 n
其中 为允许的误差限。
| R2n | 1
例1:利用龙贝格法计算单摆的振荡周期 T l /2 d T 4 1 g 0 2 0 [1 sin ( )sin 2 ]2 2 g 9.8m/s2 , 其中 l 5m , 0 20/ , 105 program main external f call romb(0.,1.5708,1e-5,r2,f) write(*,"(3x,'B=',e12.6)") r2 End function f(x) f=4*sqrt(5/9.8)/(1-sin(10/3.14159)**2*sin(x)**2)**(1/2) end
subroutine romb(a,b,ep,r2,f) h=b-a t1=h/2.*(f(a)+f(b)) n=1 5 s=0.0 do k=0,n-1 s=s+f(a+(k+0.5)*h) end do t2=t1/2.+h/2.*s s2=t2+(t2-t1)/3. if(n/=1)goto 20 15 n=n+n h=h/2 t1=t2 s1=s2 goto 5 20 c2=s2+(s2-s1)/15. if(n/=2)goto 40
共有 n 1个分点 xk a kh, h b a , k 0,1,2,, n 用Tn 表示简单梯形法所求得的积分值。 1、考察一个子段 [ xk , xk 1 ], 其中点为 xk 1
2
n
1 ( xk xk 1 ), 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

31
hK
1
32
hK )
2
... ... K
m
f ( x h, y
i m
m1
hK
1
m2
hK ...
2
m m 1
hK
m 1
)
其中i ( i = 1, …, m ),i ( i = 2, …, m ) 和 ij ( i = 2, …, m; j = 1, …, i1 ) 均为待定系数,确 定这些系数的步骤与前面相似。
5 (h / 2) n 1
h y ( xn 1 ) y 2c , 2 (h / 2) y ( xn 1 ) yn 1 1 由上两式 . (h) y ( xn 1 ) yn 1 16
(h / 2) y ( xn 1 ) yn 1
1 (h / 2) ( h) [ yn yn 1 1 ]. 15
一般地,RK方法设近似公式为
p yn 1 yn h ci K i i 1 K1 f ( xn , yn ) i 1 K i f ( xn ai h, yn h bij K j ) (i 2, 3 , p) j 1 确定原则是使近似公式在( xn , yn )处的Taylor展开式与
HW: p.201 #6-8
变步长的龙格—库塔方法
以经典四阶龙格—库塔公式为例。从节点xn出发,以h为
(h) 步长求一近似值yn 1 , (h) 5 y ( xn 1 ) yn 1 ch ,
将步长折半,即取 值y
(h / 2) n 1
h 为步长从xn 跨两步到xn 1,求一近似 2
5
h , 每跨一步的截断误差是c ,因此有 2
2 1 2 2 2

来自hK1 1 hK 2 1


2 2 2 2
hK )
3
hK )
2
§2 Runge-Kutta Method
注:
龙格-库塔法的主要运算在于计算 Ki 的值,即计算 f 的
值。Butcher 于1965年给出了计算量与可达到的最高精 度阶数的关系:
Gill公式:4阶经典龙格-库塔公式的一种改进
yi 1 yi h 6 K1 2 2 K 2 2 2 K 3 K 4 K1 K2 K3 K4 f ( xi , yi ) h f ( xi h , y i 2 2 K1 ) f ( xi h 2 , yi f ( xi h , yi
公 式
Euler公式 改进Euler公式 yn 1 yn hK1 K1 f ( xn , yn ) 1 1 y y h ( K K2 ) n 1 n 1 2 2 K f (x , y ) 1 n n K 2 f ( xn h, yn hK1 )
( 2 )如果Δ<ε,反复将步长加倍,直到Δ>ε
为止,并以上一次步长的计算结果作为 y i 1 。
这种通过步长加倍或折半来处理步长的方法称为
变步长法。表面上看,为了选择步长,每一步都要 反复判断Δ,增加了计算工作量,但在方程的解y(x)
变化剧烈的情况下,总的计算工作量得到减少,结
果还是合算的。
高阶Runge—Kutta Method
§2 Runge-Kutta Method
最常用为四级4阶经典龙格-库塔法 /* Classical Runge-Kutta Method */ : h
y i 1 yi 6 ( K 1 2 K 2 2 K 3 K 4 ) f ( xi , yi ) h f ( xi h , y K1 ) i 2 2 f ( xi h , yi h K2 ) 2 2 f ( x i h, yi hK 3 ) K1 K2 K3 K4
每步须算Ki 的个数
2
3
4
5
6
7
O(h6 )
n8
O(hn2 )
4 可达到的最高精度 O(h2 ) O(h3 ) O(h4 ) O(h ) O(h5 )
由于龙格-库塔法的导出基于泰勒展开,故精度主要受
解函数的光滑性影响。对于光滑性不太好的解,最好 采用低阶算法而将步长h 取小。
变步长的Runge—Kutta Method
y ( x )在xn处的Taylor展开式的前面项尽可能多地重合。
7.4.6 变步长的龙格-库塔法
在微分方程的数值解中,选择适当的步长是非常 重要的。单从每一步看,步长越小,截断误差就越 小;但随着步长的缩小,在一定的求解区间内所要 完成的步数就增加了。这样会引起计算量的增大, 并且会引起舍入误差的大量积累与传播。因此微分 方程数值解法也有选择步长的问题。 以经典的四阶龙格-库塔法(7.20)为例。从节点 (h) xi出发,先以h为步长求出一个近似值,记为 yi 1 , 由于局部截断误差为 O(h 5 ) ,故有
y( xi 1 ) y
( h) i 1
ch
5
当h值不大时,式中的系数c可近似地看作为常数。
然后将步长折半,即以为 步长,从节点xi出发,跨 h ( ) 两步到节点xi+1,再求得一个近似值 yi 21 ,每跨一步的 h ,因此有 截断误差是 c
5
h 2
2
y ( xi 1 ) y ( x
h) yi( 1)
这表明以 y 作为 y( xi 1 ) 的近似值,其误差可用步 h 长折半前后两次计算结果的偏差 ( ) 来判断所选步长是否适当
(h) 2 yi y 1 i 1
当要求的数值精度为ε时:
(1)如果Δ>ε,反复将步长折半进行计算,直
y i 1 至Δ<ε为止,并取其最后一次步长的计算结果作为
§2 Runge-Kutta Method
Rn1 ch p1 y( p1) xn
Q: 由局部截断误差可以看出,步长 h 越小,局部截断 误差越小;但步长减小,在一定求解范围(区间)内 要完成的步数就增加了,步数增加会引起计算量增大, 导致舍入误差积累。因此要选取适当的步长。 选择步长时要考虑两个问题: 1.如何衡量和检验计算结果的精度? 2.如何根据所获得的精度处理步长?
y
i 1
§2 Runge-Kutta Method
y h [ K K ... K ]
i 1 1 2 2 m m i i
K f (x , y )
1
K f ( x h, y
2 i 2 i
21
hK )
1
K f ( x h, y
3 i 3 i
h ) 2 i 1 (
这样
由此可得
2 y ( x i 1 ) y i 1 1 (h) 16 y ( x i 1 ) y i 1
h ) 2c 2 h ( )
5
y( xi 1 ) y
h ( ) 2 i 1
h ( ) 2 i 1
1 (y 15
h ( ) 2 i 1
相关文档
最新文档