常微分方程的数值解法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
所谓数值解法,就是寻求 y(xn ) 在一系列离散点
x1
x2
…
xn
xn
…
1
上的近似值 y1, y2,,yn , yn1,。求解过程是按递推公式顺着节点
依次一步步地向后推进,即由已知 y0 , y1,…,的y求n 出 . yn+1
简单数值计算方法
7.2.1 欧拉法
Euler公式的推导方法很多,下面介绍一种较为简单的推导方法
ห้องสมุดไป่ตู้
在式(7.5)中用差商 y(xn1) y(xn代) 替导数 y(xn,1)可得
h
y(xn1) h
y(xn )
f
(xn1,
y( xn 1))
用 yn 代替 y(xn,) 用 y n代1 替 y(xn,1)上式可写成
yn1 yn hf (xn1, yn1)
式(7.6)称为隐式Euler公式,也称为后退的Euler公式。
本章主要讨论常微分方程初值问题
dy
dx
f
(x, y)
(a x b)
(7.1)
y(a) y0
的数值解法,要求函数 f (x, y)对 y满足Lipschitz条件,即存在常数 >L0,
引言
使对y1,
问题的解
是y2存在R有且唯f 一(x的,y1
)
f ( x, y2 )
L
y1 从y2而常微分方程初值
1.040818
0.4
1.056100
1.070320
0.5
1.090490
1.106531
7.2.2 隐式Euler公式
隐式Euler公式除了可以用上一小节中的方法来推导外,亦可以用差商近似
导数的方法来推导。
在 xn1点处列出式(7.1)中的常微分方程,得
y( xn1) f (xn1, y( xn1))
解得
yn1
1
1
h
(
yn
hxn1
h)
1 1.1
(
yn
0.1xn
0.11)
y1
1 1.1
(
y0
0.1xn
0.11)
1.009091
当n=0时
其余计算结果见表7-2。由表7-2可以看出,隐式Euler公式并未提高
7.2.2 隐式Euler公式
表 7-2 欧拉公式、隐式 Euler 公式与精确解计算结果
1.120922
1.106531
隐式Euler公式一般采用迭代法求解。首先用Euler公式提供迭代初值,然后
迭代计算:
y(0) n1
yn
hf
(
y(k 1) n1
yn
hf
xn , ( xn
yn ) , y(k)
1 n1
)
(k 0,1, 2,)
(7.7)
7.2.3 梯形公式
为了构造精度更高的迭代公式,对式(7.3)中的积分运算应用梯形求积公
例1 用Euler公式计算下列初值问题(取步长h=0.1):
y y x 1 (0 x 0.5)
y(0)
1
解:Euler公式的计算格式为
yn1 yn hf (xn , yn ) yn +0.(1 -yn xn +1) 0.9 yn 0.1xn 0.1
由 y(0) 1进行递推计算得:
y
(0)
1
7.2.3 梯形公式
解:梯形公式的计算格式为
yn1
2
1
h
[(2
h)
yn
h( xn
xn
h)
2h]
1 2.1
(1.9
yn
0.2 xn
0.21)
当n=0时,
y1
1 (1.9 2.1
0.21)
1.004762
其余计算结果见表7-3。由表7-3可以看出,相对于Euler公式和隐式Euler公式, 梯形公式提高了计算精度。
y(0.1) y1 0.91 0.1 0 0.1 1
y(0.2) y2 0.91 0.1 0.1 0.1 1.01 y(0.3) y3 0.91.01 0.1 0.2 0.1 1.09…
(n 0,1,…, 4)
7.2.1 欧拉法
具体计算结果见表7-1。同时,表7-1亦列出精确解 在节点 处的函数值。由表7-1
第七章 常微分方程的数值解法
7.1 引言 7.2 简单数值计算方法 7.3 龙格-库塔方法 7.4 线性多步法 7.5 一阶方程组与高阶方程
引言
微分方程指含有未知函数及其导数的方程,其中未知函数是一元函数的微 分方程称为常微分方程
常微分方程的应用范围经过不断发展已应用到物理、化学、天文、生物、 控制等各个领域
式,亦可以将Euler公式和隐式Euler公式进行算数平均,均可得如下递推
公式:
yn1
yn
h[ 2
f
( xn ,
yn )
f
(xn1,
yn1)]
式(7.8)称为梯形公式。
(n 0,1, 2,(…7).8)
例7.3 用梯形公式(7.8)计算下列初值问题(取步长h=0.1):
y y x 1 (0 x 0.5)
将式(5.1)在区间 xn , xn+1上 积分,得
y( xn1 ) y(xn )
xn1 f ( x, y( x))dx
xn
(7.2)
如果积分区间足够小,可认为被积函数在该区间上近似等于一常数,即 f (x, y(x))
取该区间的下限函数值 f (x, y(x)) f (xn, y(xn,))可得
(7.5) (7.6)
7.2.2 隐式Euler公式
例7.2用隐式Euler公式(7.6)计算下列初值问题(取步长h=0.1):
y y x 1 (0 x 0.5)
y(0)
1
解:隐式Euler公式的计算格式为常常微分方程的数值解法
微分方程yn的1数值y解n 法 h( yn1 xn1 1)
y(xn1) y(xn ) hf (xn , y(xn ))
(7.3)
用 yn 代替 ,得到下列递推公式
yn1 yn hf (xn , yn ) (n 0,1, 2,…)
(7.4)
由 y(x0 )=y0依次递推得到 y1, y2 ,…, yn ,…式(7.4)称为Euler公式。
7.2.1 欧拉法
xn
Euler公式yn
隐式Euler公式yn
精确解y(xn )
0
1
1
1
0.1
1.000000
1.009091
1.004837
0.2
1.010000
1.026446
1.019731
0.3
1.029000
1.051315
1.040818
0.4
1.056100
1.083014
1.070320
0.5
1.090490
可以看出,随着 的增大,Euler公式计算的近似值的误差在不断增大,由此可见
,Euler公式的精度很差。
表 7-1 Euler 公式和精确解的计算结果
xn
Euler 公式 yn
精确解 y(xn )
0
1
1
0.1
1.000000
1.004837
0.2
1.010000
1.019731
0.3
1.029000