第八章常微分方程的数值解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

yn1
yn
h( yn xn
2yn2 )
取h=0.2, xn=nh,(n=0,1,2…,15), f(x,y)=y/x – 2y2 计算中取f(0,0)=1. 计算结果如下:
xn
y(xn)
yn
0.0
0
0
yn-y(xn) 0
0.2
0.1923 0.2000 0.0077
0.4
0.3448 0.3840 0.0392
第八章 常微分方程的数值解
第八章 常微分方程的数值解
引言 简单的数值方法
欧拉方法 梯形方法
8.1 引言
在高等数学中我们见过以下常微分方程:
y f (x, y) a x b
(1)
y(a)
y0
y f (x, y, y) a x b
(2)y(a) y0 , y(a)
y f (x, y, y) a x b
由表中数据可以看到,微分方程初值问题的数值解和解
析解的误差一般在小数点后第二位或第三位小数上,这
说明Euler方法的精度是比较差的。
数值解和解析解的图示比较如下:
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]积分,
yn1
h
f
( xn1 ,
y(k) n1
)
f (xn1, yn1)
hL
y(k) n1
yn1
故当hL<1时,迭代法收敛。
二、梯形方法

y(xn1) y(xn )
xn1 f (x, y(x))dx
xn
利用梯形求积公式:
xn1 f (x, y(x))dx h
xn
2
f (xn , y(xn )) f (xn1, y(xn1))
y(x0 )
y(x1) x1
y(x0 ) x0
y(x1) h
y(x0 )
由 y(x0 ) f (x0, y0 ), y(x0 ) y0
得 y(x1) y0 hf (x0, y0 ) y1
同理,在x= xn 处,用差商代替导数:
y(xn )
y(xn1) y(xn ) xn1 xn
h
f
( xn1 ,
y ( xn1 ))
得 yn1 yn hf (xn1, yn1)
上式称后退的Euler方法,又称隐式Euler方法。 可用迭代法求解:
初值:
y(0) n1
yn
hf
(xn ,
yn )
迭代:
y (k 1) n1
yn
hf
( xn 1 ,
y(k) n1
)
k=0,1,……

y(k 1) n1
y(xn1) h
y(xn )
由 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 方法。
0.6
0.4412 0.5170 0.0758
0.8
0.4878 0.5824 0.0946
1.0
0.5000 0.5924 0.0924
1.2
0.4918 0.5705 0.0787
1.4
0.4730 0.5354 0.0624
xn
y(xn)
yn
yn-y(xn)
1.6
0.4494 0.4972 0.0478
1.8
0.4245 0.4605 0.0359
2.0
0.4000 0.4268 0.0268
2.2
0.3767 0.3966 0.0199
2.4
0.3550 0.3698 0.0147
2.6
0.3351 0.3459 0.0108
2.8
0.3167 0.3246 0.0079
3.0
0.3000 0.3057 0.0057
常微分方程的数值解法有单步法和多步法之分:
单步法:在计算yn+1 时只用到前一点yn 的值 ; 多步法:计算yn+1 时不仅利用yn,还要利用yn-1,
yn-2,…….,一般k步法要用到 yn, yn-1, yn-2,……., yn-k+1。
8.2 简单的数值方法
一、欧拉(Euler)方法
在x= x0 处,用差商代替导数:
Euler方法的几何意义: (Euler折线法)
y
P2 P1 P0
Pn Pn+1
y=y(x)
O
x0 x1 x2
x
xn xn+1
例: 用Euler方法求解常微分方程初值问题
y y 2 y 2 x y(0) 0.
(0x3 )
并将数值解和该问题的解析解比较。
解析解:
y(
x)
1
x x
2
解:Euler方法的具体格式:
h 2
f
( xn1 ,
y(k) n1
)
f
( xn1 ,
yn 1 )
hL 2
y(k) n1
yn1
故当hL/2<1时,迭代法收敛。
由以上分析可以看出,隐式方法的计算比显式方 法复杂,需要用迭代法求解非线性方程才能得出 计算结果。
y(xn1) y(xn )
xn1 f (x, y(x))dx
xn
利用数值积分中的左矩形公式:
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
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称为步长。

yn1
yn
h 2
f (xn , yn ) f (xn1, yn1)
上式称梯形方法,是一种隐式方法。
用迭代法求解:
初值:
y(0) Baidu Nhomakorabea1
yn
hf
(xn ,
yn )
迭代:
y(k 1) n1
yn
h 2
f
(xn ,
yn )
f
( xn1 ,
y(k) n1
)
k=0,1,……

y(k 1) n1
yn1
(3)
y(a)
y0
,
y(b)
yn
(1),(2)式称为初值问题,(3)式称为边值问题。
考虑一阶常微分方程初值问题
y f (x, y)
(1)
y(
x0
)
y0
其中,y = y(x) 是未知函数,y(x0) = y0 是初值条 件,而f(x, y) 是给定的二元函数.
由常微分方程理论知,若f(x)在x[a,b]连续且 f 满足对 y 的Lipschitz条件:
相关文档
最新文档