常微分方程初值问题的数值解法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 .68
§2 龙格 - 库塔法 /* Runge-Kutta Method */
建立高精度的单步递推格式。
单步递推法的基本思想是从 ( xi , yi ) 点出发,以某一斜 率沿直线达到 ( xi+1 , yi+1 ) 点。欧拉法及其各种变形所 能达到的最高精度为2阶。
考察改进的欧拉法,可以将其改写为:
欧拉法例题
在区间[0,1]上取步长h=0.2求解如下的常微分方程:
y ' y 2 x
y
y ( 0 ) 1
解:按照欧拉法的计算公式,分别得到如下的函数值:
y(0) 1 y (0 .2 ) 1 0 .2 * (1 2 * 0 ) 1 .20
1 y (0 .4 ) 1 .20 0 .2 * (1 .20 2 * 0 .2 ) 1 .37
常微分方程初值问题的数值解法
预备知识
一阶常微分方程初值问题指的数值解法:
在指定的区间[a,b]中的点列 xk=x0+k*h (k=0,1,…,n) 的近似值yk。即求解 函数y(x) 一 欧拉法 二 龙格库塔法(R-K) 多步法代表是Adams法
§1 欧拉法
1)欧拉法 根据导数的定义离散化之后,有:
1 .20 y (0 .6 ) 1 .37 0 .2 * (1 .37 2 * 0 .4 ) 1 .53
1 .37 y (0 .8 ) 1 .53 0 .2 * (1 .53 2 * 0 .6 ) 1 .68
1 .53 y (1 .0 ) 1 .68 0 .2 * (1 .68 2 * 0 .8 ) 1 .83
系数,确定这些系数的
步骤与前面相似。
Km
f
(xi
m
h,
y
m1
hK1
m2
hK2
... m
m1 hKm1 )
➢ 最常用为四级4阶经典龙格-库塔法 /* Classical Runge-Kutta Method */ :
yi1
yi
h 6
(K1
2K2
2K3
K4 )
K1 f (xi, yi )
K2
f (xi
yi1
yi
h12
K1
1 2
K2
K1 f (xi , yi )
K2 f (xi h, yi hK1)
斜率 一定取K1 K2 的平均值吗?
步长一定是一个h 吗?
将改进欧拉法推广为:
§2 Runge-Kutta Method
yi1 yi h[1 K1 2 K2 ]
K1 f ( xi, yi )
K2 f ( xi ph, yi phKy1)(x) d f (x, y)
首先希望能确定系数 1、2、p,使得d到x 的算法格式有2阶
精度,即在 yi y(xi) 的前提假设下,fx使(x,得y) Step 1: 将 K2R 在i ( xy i(,x yii )1 点) 作y iT 1 ay loO r ( 展h 3 开fx)(x, y)
要求 R iy(x i 1)yi 1 O (h 3),则必须有:
121, 2p1 2
这里有 3 个未知 数, 2 个方程。
存在无穷多个解。所有满足上式的格式统称为2阶龙格 - 库 塔格式。注意到,p1, 1 就2是改12进的欧拉法。
Q: 为获得更高的精度,应该如何进一步推广?
§2 Runge-Kutta Method
f y ( x, f y ( x,
y) y)
dy dx f (x,
y)
K 2 f(x i p,y h i p1 h ) K
f(x i,y i) px h (x i,y fi) p1 h fy (x K i,y i) O (h 2 )
y (x i) py h (x i) O (h 2 )
Step 2: 将 K2 代入第1式,得到 y i 1 y i h1 y ( x i) 2 [ y ( x i) p y ( h x i) O ( h 2 )] y i (1 2 ) h y ( x i) 2 p 2 y h ( x i) O ( h 3 )
y'(x)y(xh)y(x) h
代入常微分方程,并构造迭代系列得: y yk ( x10 ) yky 0hf(xk,yk) ,k0,1,...
2)隐式欧拉法
y'(x)y(x)y(xh) h
代入常微分方程,并构造迭代系列得: y yk ( x10 ) yky 0hf(xk,yk1) ,k0,1,...
yi1 yi h[1 K1 2 K2 ...m Km]
K1 f (xi , yi )
K2 f (xi 2 h, yi 21hK1)
K3
f
(xi
3
h,
yi
31
hK1
32
hK2
)
......
其中i ( i = 1, …, m ),i ( i = 2, …, m ) 和 ij ( i = 2, …, m; j = 1, …, i1 ) 均为待定
隐式欧拉法的求解: 利用迭代的思路进行.
y i1 y i h f ( xi, y i1 ) 变换 为
y ( k 1 ) i1
yi
h
fwk.baidu.com
(
xi,
y
(k ) i1
)
令 K 1 f ( xi, y i1)
y i1 y i h K 1
K
的
1
计
算
使
用
迭
代
法
.
中点欧拉法、改进的欧拉法
3)中点欧拉法
§2 Runge-Kutta Method
Step 3: 将 yi+1 与 y( xi+1 ) 在 xi 点的泰勒展开作比较
y i 1 y i ( 1 2 ) h y ( x i ) 2 p 2 y ( x h i ) O ( h 3 )
y (x i 1 ) y (x i) h y (x i) h 2 2y (x i) O (h 3 )
y'(xk)y(xk1)2hy(xk1)
代入常微分方程,并构造迭代系列得: y yk ( x10 ) yky0 12hf(xk,yk) ,k0,1,...
4)改进的欧拉法
y ( x0 ) y0
yi1
yi
h 2
(K1
K2)
其 中,
, k 0,1,...
K
2
K1 f (xi
f (xi , yi ) h, yi hK1)
h2,
yi
h 2
K1)
K3
f (xi
h2,
yi
h 2
K2 )
K4 f (xi h, yi hK3)
R-K例题
用R-K法求解方程的解(在区间[0,1],h=0.2) y'y2x ,y(0)1 y
§2 龙格 - 库塔法 /* Runge-Kutta Method */
建立高精度的单步递推格式。
单步递推法的基本思想是从 ( xi , yi ) 点出发,以某一斜 率沿直线达到 ( xi+1 , yi+1 ) 点。欧拉法及其各种变形所 能达到的最高精度为2阶。
考察改进的欧拉法,可以将其改写为:
欧拉法例题
在区间[0,1]上取步长h=0.2求解如下的常微分方程:
y ' y 2 x
y
y ( 0 ) 1
解:按照欧拉法的计算公式,分别得到如下的函数值:
y(0) 1 y (0 .2 ) 1 0 .2 * (1 2 * 0 ) 1 .20
1 y (0 .4 ) 1 .20 0 .2 * (1 .20 2 * 0 .2 ) 1 .37
常微分方程初值问题的数值解法
预备知识
一阶常微分方程初值问题指的数值解法:
在指定的区间[a,b]中的点列 xk=x0+k*h (k=0,1,…,n) 的近似值yk。即求解 函数y(x) 一 欧拉法 二 龙格库塔法(R-K) 多步法代表是Adams法
§1 欧拉法
1)欧拉法 根据导数的定义离散化之后,有:
1 .20 y (0 .6 ) 1 .37 0 .2 * (1 .37 2 * 0 .4 ) 1 .53
1 .37 y (0 .8 ) 1 .53 0 .2 * (1 .53 2 * 0 .6 ) 1 .68
1 .53 y (1 .0 ) 1 .68 0 .2 * (1 .68 2 * 0 .8 ) 1 .83
系数,确定这些系数的
步骤与前面相似。
Km
f
(xi
m
h,
y
m1
hK1
m2
hK2
... m
m1 hKm1 )
➢ 最常用为四级4阶经典龙格-库塔法 /* Classical Runge-Kutta Method */ :
yi1
yi
h 6
(K1
2K2
2K3
K4 )
K1 f (xi, yi )
K2
f (xi
yi1
yi
h12
K1
1 2
K2
K1 f (xi , yi )
K2 f (xi h, yi hK1)
斜率 一定取K1 K2 的平均值吗?
步长一定是一个h 吗?
将改进欧拉法推广为:
§2 Runge-Kutta Method
yi1 yi h[1 K1 2 K2 ]
K1 f ( xi, yi )
K2 f ( xi ph, yi phKy1)(x) d f (x, y)
首先希望能确定系数 1、2、p,使得d到x 的算法格式有2阶
精度,即在 yi y(xi) 的前提假设下,fx使(x,得y) Step 1: 将 K2R 在i ( xy i(,x yii )1 点) 作y iT 1 ay loO r ( 展h 3 开fx)(x, y)
要求 R iy(x i 1)yi 1 O (h 3),则必须有:
121, 2p1 2
这里有 3 个未知 数, 2 个方程。
存在无穷多个解。所有满足上式的格式统称为2阶龙格 - 库 塔格式。注意到,p1, 1 就2是改12进的欧拉法。
Q: 为获得更高的精度,应该如何进一步推广?
§2 Runge-Kutta Method
f y ( x, f y ( x,
y) y)
dy dx f (x,
y)
K 2 f(x i p,y h i p1 h ) K
f(x i,y i) px h (x i,y fi) p1 h fy (x K i,y i) O (h 2 )
y (x i) py h (x i) O (h 2 )
Step 2: 将 K2 代入第1式,得到 y i 1 y i h1 y ( x i) 2 [ y ( x i) p y ( h x i) O ( h 2 )] y i (1 2 ) h y ( x i) 2 p 2 y h ( x i) O ( h 3 )
y'(x)y(xh)y(x) h
代入常微分方程,并构造迭代系列得: y yk ( x10 ) yky 0hf(xk,yk) ,k0,1,...
2)隐式欧拉法
y'(x)y(x)y(xh) h
代入常微分方程,并构造迭代系列得: y yk ( x10 ) yky 0hf(xk,yk1) ,k0,1,...
yi1 yi h[1 K1 2 K2 ...m Km]
K1 f (xi , yi )
K2 f (xi 2 h, yi 21hK1)
K3
f
(xi
3
h,
yi
31
hK1
32
hK2
)
......
其中i ( i = 1, …, m ),i ( i = 2, …, m ) 和 ij ( i = 2, …, m; j = 1, …, i1 ) 均为待定
隐式欧拉法的求解: 利用迭代的思路进行.
y i1 y i h f ( xi, y i1 ) 变换 为
y ( k 1 ) i1
yi
h
fwk.baidu.com
(
xi,
y
(k ) i1
)
令 K 1 f ( xi, y i1)
y i1 y i h K 1
K
的
1
计
算
使
用
迭
代
法
.
中点欧拉法、改进的欧拉法
3)中点欧拉法
§2 Runge-Kutta Method
Step 3: 将 yi+1 与 y( xi+1 ) 在 xi 点的泰勒展开作比较
y i 1 y i ( 1 2 ) h y ( x i ) 2 p 2 y ( x h i ) O ( h 3 )
y (x i 1 ) y (x i) h y (x i) h 2 2y (x i) O (h 3 )
y'(xk)y(xk1)2hy(xk1)
代入常微分方程,并构造迭代系列得: y yk ( x10 ) yky0 12hf(xk,yk) ,k0,1,...
4)改进的欧拉法
y ( x0 ) y0
yi1
yi
h 2
(K1
K2)
其 中,
, k 0,1,...
K
2
K1 f (xi
f (xi , yi ) h, yi hK1)
h2,
yi
h 2
K1)
K3
f (xi
h2,
yi
h 2
K2 )
K4 f (xi h, yi hK3)
R-K例题
用R-K法求解方程的解(在区间[0,1],h=0.2) y'y2x ,y(0)1 y