常微分方程的数值解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n1 n
得
h yn 1 yn f ( xn , yn ) f ( xn 1 , yn 1 ) 2
上式称梯形方法,是一种隐式方法。
隐式方法的计算比显式方法复杂,需要用迭代法 求解才能得出计算结果。 可采用将显式Euler格式与梯形格式结合使用的方 法来避免求解非线性方程。 记
y( xn ) f ( xn , yn )
y( xn1 ) y( xn ) hf ( xn , yn ) y( xn ) yn , y( xn1 ) yn1
则上式可记为
yn1 yn hf ( xn , yn )
此即为求解初值问题的Euler方法,又称显式Euler 方法。
i 1 K1 f ( x n , y n ) i 1 K i f ( xn i h, yn h ij K j ), (i 2,3, , r ) j 1
ci , λi , μij 为待定常数。
二阶Runge-Kutta方法
y n 1 y n hK 2 K1 f ( xn , y n ) h h K 2 f ( xn , y n K1 ) 2 2
yn1 yn hf ( xn , yn )
--预测
再用梯形格式计算:
h yn 1 yn f ( xn , yn ) f ( xn 1 , yn 1 ) 2
上面两式统称预测-校正法, 又称改进的Euler方法。 --校正
8.3 Runge-Kutta方法
Runge-Kutta方法的基本思想: 设法计算 f(x,y) 在某些点上的函数值,然后对这 些函数值作线性组合,构造近似计算公式,再 把近似公式和解的泰勒展开式相比较,使前面 的若干项吻合,从而获得达到一定精度的数值 计算公式 。 r 设 yn1 yn h ci K i
常微分方程的数值解法有单步法和多步法之分:
单步法:在计算yn+1 时只用到前一点yn 的值 ;
多步法:计算yn+1 时不仅利用yn,还要利用yn-1, yn-2,…….,一般k步法要用到 yn, yn-1, yn-2,……., yn-k+1。
8.2 简单的数值方法
一、欧拉(Euler)方法
在x= x0 处,用差商代替导数:
z ( x0 ) y 0 y ( x0 ) y 0
一阶常微分方程组和高阶微分方程的 数值 解法简介
一、一阶常微分方程组的数值解法:
y f ( x, y , z ), y ( x0 ) y0 z g ( x, y , z ), z ( x0 ) z0
采用梯形公式的 预报-校正格式
预报
yn1 yn hf ( xn , yn , zn ) zn1 zn hg ( xn , yn , zn )
考虑一阶常微分方程初值问题
y f ( x, y ) (1) y ( x0 ) y 0
其中,y = y(x) 是未知函数,y(x0) = y0 是初值条 件,而f(x, y) 是给定的二元函数.
由常微分方程理论知,若f(x)在x[a,b]连续且 f 满足对 y 的Lipschitz条件:
h yn 1 yn [ f ( xn , yn , zn ) f ( xn 1 , yn 1 , zn 1 ) 2 h zn 1 zn [ g ( xn , yn , zn ) g ( xn 1 , yn 1 , zn 1 ) 2
校正
一、高阶常微分方程的数值解法:
三阶Runge-Kutta方法
h y n 1 y n 6 ( K1 4 K 2 K 3 ) K1 f ( xn , y n ) K f ( x h , y h K ) n n 1 2 2 2 K f ( x h, y hK 2hK ) n n 1 2 3
常微分方程的数值解
第八章
常微分方程的数值解
引言 简单的数值方法 Runge-Kutta方法 一阶常微分方程组和高阶方程
引言
在高等数学中我们见过以下常微分方程:
y f ( x, y, y) a x b y f ( x, y ) a x b (2) (1) (1) y ( x ) y , y ( x ) y 0 0 0 0 y ( x0 ) y0 y f ( x, y, y) a x b (3) y(a) y0 , y(b) yn
yn1
yn 2 yn h( 2 yn ) xn
数值解和解析解的图示比较如下:
0.8
0.6
0.4
0.2
0 0 0.5 1 1.5 2 2.5 3
O : 数值解;— : 准确解
若直接对y`=f(x,y)在[xn, xn+1]积分,
y( xn1 ) y( xn )
xn1 xn
f ( x, y1 ) f ( x, y2 ) L y1 y2
(其中 L 为 Lipschitz 常数)则初值问题( 1 )存 在唯一的连续解。
求问题(1)的数值解,就是要寻找解函数在一 系列离散节点x1 < x2 <……< xn < xn+1 上的近似 值y1, y 2,…,yn 。 为了计算方便,可取 xn=x0+nh,(n=0,1,2,…), h称为步长。
可化为一阶常微分方程组求解。 例如,二阶常微分方程初值问题
y f ( x, y, y) y ( x0 ) y0 y( x ) y 0 0
引进新的变量,令z=y`,即可将上述二阶方程 化为如下的一阶方程组的初值问题:
z f ( x, y, z ), y z,
y( x1 ) y( x0 ) y( x1 ) y( x0 ) y( x0 ) x1 x0 h
由 y( x0 ) f ( x0 , y0 ), 得
百度文库
y( x0 ) y0
y( x1 ) y0 hf ( x0 , y0 ) y1
同理,在x= xn 处,用差商代替导数: y( xn1 ) y( xn ) y( xn1 ) y( xn ) y( xn ) xn1 xn h 由 得 若记
(1),(2)式称为初值问题,(3)式称为边值问题。 在实际应用中还经常需要求解常微分方程组:
f1 ( x, y1 , y2 ) y1 ( x0 ) y10 y1 (4) f 2 ( x, y1 , y2 ) y2 ( x0 ) y20 y2
本章主要研究问题(1)的数值解法,对(2)~(4)只 作简单介绍。
四阶Runge-Kutta方法
h y n 1 y n 6 ( K 1 2 K 2 2 K 3 K 4 ) K1 f ( xn , y n ) h h K 2 f ( xn , y n K1 ) 2 2 h h K f ( x , y K2 ) n n 3 2 2 K 4 f ( x n h, y n hK3 )
f ( x, y( x))dx
利用数值积分中的左矩形公式:
xn1
xn
f ( x, y( x))dx h f ( xn , y( xn ))
设y(xn)= yn,则得
yn1 yn hf ( xn , yn )
此即为Euler公式。 若用右矩形公式:
xn1
xn
f ( x, y( x))dx h f ( xn1 , y( xn1 ))
得 yn1 yn hf ( xn1 , yn1 )
上式称后退的Euler方法,又称隐式Euler方法。 可用迭代法求解
二、梯形方法 由
y( xn1 ) y( xn )
xn1 xn
f ( x, y( x))dx
利用梯形求积公式: x h x f ( x, y( x))dx 2 f ( xn , y( xn )) f ( xn1 , y( xn1 ))
Euler方法的几何意义: (Euler折线法)
y
P2 P1 P0 Pn Pn+1
y=f(x) x
O
x0 x1
x2
xn
xn+1
例: 用Euler方法求解常微分方程初值问题
y 2 y 2 y x y (0) 0. (0 x3 )
并将数值解和该问题的解析解比较。 x 解析解: y ( x) 2 1 x 解:Euler方法的具体格式:
得
h yn 1 yn f ( xn , yn ) f ( xn 1 , yn 1 ) 2
上式称梯形方法,是一种隐式方法。
隐式方法的计算比显式方法复杂,需要用迭代法 求解才能得出计算结果。 可采用将显式Euler格式与梯形格式结合使用的方 法来避免求解非线性方程。 记
y( xn ) f ( xn , yn )
y( xn1 ) y( xn ) hf ( xn , yn ) y( xn ) yn , y( xn1 ) yn1
则上式可记为
yn1 yn hf ( xn , yn )
此即为求解初值问题的Euler方法,又称显式Euler 方法。
i 1 K1 f ( x n , y n ) i 1 K i f ( xn i h, yn h ij K j ), (i 2,3, , r ) j 1
ci , λi , μij 为待定常数。
二阶Runge-Kutta方法
y n 1 y n hK 2 K1 f ( xn , y n ) h h K 2 f ( xn , y n K1 ) 2 2
yn1 yn hf ( xn , yn )
--预测
再用梯形格式计算:
h yn 1 yn f ( xn , yn ) f ( xn 1 , yn 1 ) 2
上面两式统称预测-校正法, 又称改进的Euler方法。 --校正
8.3 Runge-Kutta方法
Runge-Kutta方法的基本思想: 设法计算 f(x,y) 在某些点上的函数值,然后对这 些函数值作线性组合,构造近似计算公式,再 把近似公式和解的泰勒展开式相比较,使前面 的若干项吻合,从而获得达到一定精度的数值 计算公式 。 r 设 yn1 yn h ci K i
常微分方程的数值解法有单步法和多步法之分:
单步法:在计算yn+1 时只用到前一点yn 的值 ;
多步法:计算yn+1 时不仅利用yn,还要利用yn-1, yn-2,…….,一般k步法要用到 yn, yn-1, yn-2,……., yn-k+1。
8.2 简单的数值方法
一、欧拉(Euler)方法
在x= x0 处,用差商代替导数:
z ( x0 ) y 0 y ( x0 ) y 0
一阶常微分方程组和高阶微分方程的 数值 解法简介
一、一阶常微分方程组的数值解法:
y f ( x, y , z ), y ( x0 ) y0 z g ( x, y , z ), z ( x0 ) z0
采用梯形公式的 预报-校正格式
预报
yn1 yn hf ( xn , yn , zn ) zn1 zn hg ( xn , yn , zn )
考虑一阶常微分方程初值问题
y f ( x, y ) (1) y ( x0 ) y 0
其中,y = y(x) 是未知函数,y(x0) = y0 是初值条 件,而f(x, y) 是给定的二元函数.
由常微分方程理论知,若f(x)在x[a,b]连续且 f 满足对 y 的Lipschitz条件:
h yn 1 yn [ f ( xn , yn , zn ) f ( xn 1 , yn 1 , zn 1 ) 2 h zn 1 zn [ g ( xn , yn , zn ) g ( xn 1 , yn 1 , zn 1 ) 2
校正
一、高阶常微分方程的数值解法:
三阶Runge-Kutta方法
h y n 1 y n 6 ( K1 4 K 2 K 3 ) K1 f ( xn , y n ) K f ( x h , y h K ) n n 1 2 2 2 K f ( x h, y hK 2hK ) n n 1 2 3
常微分方程的数值解
第八章
常微分方程的数值解
引言 简单的数值方法 Runge-Kutta方法 一阶常微分方程组和高阶方程
引言
在高等数学中我们见过以下常微分方程:
y f ( x, y, y) a x b y f ( x, y ) a x b (2) (1) (1) y ( x ) y , y ( x ) y 0 0 0 0 y ( x0 ) y0 y f ( x, y, y) a x b (3) y(a) y0 , y(b) yn
yn1
yn 2 yn h( 2 yn ) xn
数值解和解析解的图示比较如下:
0.8
0.6
0.4
0.2
0 0 0.5 1 1.5 2 2.5 3
O : 数值解;— : 准确解
若直接对y`=f(x,y)在[xn, xn+1]积分,
y( xn1 ) y( xn )
xn1 xn
f ( x, y1 ) f ( x, y2 ) L y1 y2
(其中 L 为 Lipschitz 常数)则初值问题( 1 )存 在唯一的连续解。
求问题(1)的数值解,就是要寻找解函数在一 系列离散节点x1 < x2 <……< xn < xn+1 上的近似 值y1, y 2,…,yn 。 为了计算方便,可取 xn=x0+nh,(n=0,1,2,…), h称为步长。
可化为一阶常微分方程组求解。 例如,二阶常微分方程初值问题
y f ( x, y, y) y ( x0 ) y0 y( x ) y 0 0
引进新的变量,令z=y`,即可将上述二阶方程 化为如下的一阶方程组的初值问题:
z f ( x, y, z ), y z,
y( x1 ) y( x0 ) y( x1 ) y( x0 ) y( x0 ) x1 x0 h
由 y( x0 ) f ( x0 , y0 ), 得
百度文库
y( x0 ) y0
y( x1 ) y0 hf ( x0 , y0 ) y1
同理,在x= xn 处,用差商代替导数: y( xn1 ) y( xn ) y( xn1 ) y( xn ) y( xn ) xn1 xn h 由 得 若记
(1),(2)式称为初值问题,(3)式称为边值问题。 在实际应用中还经常需要求解常微分方程组:
f1 ( x, y1 , y2 ) y1 ( x0 ) y10 y1 (4) f 2 ( x, y1 , y2 ) y2 ( x0 ) y20 y2
本章主要研究问题(1)的数值解法,对(2)~(4)只 作简单介绍。
四阶Runge-Kutta方法
h y n 1 y n 6 ( K 1 2 K 2 2 K 3 K 4 ) K1 f ( xn , y n ) h h K 2 f ( xn , y n K1 ) 2 2 h h K f ( x , y K2 ) n n 3 2 2 K 4 f ( x n h, y n hK3 )
f ( x, y( x))dx
利用数值积分中的左矩形公式:
xn1
xn
f ( x, y( x))dx h f ( xn , y( xn ))
设y(xn)= yn,则得
yn1 yn hf ( xn , yn )
此即为Euler公式。 若用右矩形公式:
xn1
xn
f ( x, y( x))dx h f ( xn1 , y( xn1 ))
得 yn1 yn hf ( xn1 , yn1 )
上式称后退的Euler方法,又称隐式Euler方法。 可用迭代法求解
二、梯形方法 由
y( xn1 ) y( xn )
xn1 xn
f ( x, y( x))dx
利用梯形求积公式: x h x f ( x, y( x))dx 2 f ( xn , y( xn )) f ( xn1 , y( xn1 ))
Euler方法的几何意义: (Euler折线法)
y
P2 P1 P0 Pn Pn+1
y=f(x) x
O
x0 x1
x2
xn
xn+1
例: 用Euler方法求解常微分方程初值问题
y 2 y 2 y x y (0) 0. (0 x3 )
并将数值解和该问题的解析解比较。 x 解析解: y ( x) 2 1 x 解:Euler方法的具体格式: