第六章常微分方程
h2
利用插值公式的方法:
n
f (n1) ( )
f (x) lk (x) f (xk )
k 0
(n 1)!
wn1 ( x)
n
f ( xk ) lk ( xk ) f ( xk )
k 0
f (n1) ( )
(n 1)!
wn1
(
xk
)
xk = x0 + kh (k=0,1,2)
l0 ( x)
1 2h2
(x
x1 )(x
x2 )
l1( x)
1 h2
(x
x0 )(x
x2 )
l2 ( x)
1 2h2
(x
x0 )(x
x1 )
l0
(
x)
2x
( x1 2h2
x2
)
l1 (
x)
2
x
( x0 h2
x2
)
l2 ( x)
2x
(x0 2h2
x1 )
f
( x0 )
1 [3 2h
f
(x0 )
f
n
,
nn
n 0,1,
为避免解非线性方程,与Euler 法结合:
dx
x
y(1) 3
只要函数f (x, y)适当光滑连续,且关于y满足李普 希兹(Lipschitz)条件,即存在常数L,使得
f (x, y) f (x, y) L y y 由常微分方程理论知,初值问题的解必存在且唯一。
微分方程的数值解:设方程问题的解y(x)的存在区间是 [a,b],令a= x0< x1<…< xn =b,其中hk=xk+1-xk , 如是等距节点 h=(b-a)/n , h称为步长。 y(x)的解析表达式不容易得到或根本无法得到,我们用数值方 法求得y(x)在每个节点xk上y(xk)的近似值,用yk表示,即
A 用差商代替微商
dy y
x x
dx x x x
,
n
y
n
y
n1
n f (xn , y(xn ))
n1
n
x x y x y x 用 h , y , y
代替,则:
n1
n
n
n
n1
n1
y y
x y n1 n f h
,
nn
y y x y hf ,
n 0, 1, 2,
yk≈y(xk),这样y0 , y1 ,...,yn称为微分方程的数值解。
补充:
微分的数值计算
Tylor展开 方法
一阶向前差商
f (a) f (a h) f (a) O(h) h
一阶向后差商 一阶中心差商
f (a) f (a) f (a h) O(h) h
f (a) f (a h) f (a h) O(h2 ) 2h
第六章 常微分方程初值问题数值解法
6.1 基本理论
一阶常微分方程的初值问题:
dy
dx
f (x, y)
y(
x
)
0
y 0
例: 方程 xy'-2y=4x y' = 2 y 4 x
令:f(x,y)= 2 y 4 且给出初值 y(1)=-3 x
就得到一阶常微分方程的初值问题:
dy f ( x, y) 2 y 4
C 在xn 附近 y(x) 的 Taylor 展开:
y(xn
h)
y(
x
)
n
h
y
/
(
x
)
n
h2
2
y x//
( ) n
y
(
x
)
n
hf
(
x
,
n
y
(
x
))
n
h2
2
y x//
() n
y x x 取 h 的线性部分,且 y( ) 得 y( ) 的近似值:
n
n
n1
y y x y hf ( , ) n 0, 1, 2,
1
0.5
0
-0.5
-1
-4
-3
-2
-1
0
1
2
3
4
O : 数值解 : 准确解
二、向后(后退的)Euler 方法
用向后差商:
y, x n1
x y
n1
h
yxn
y y x y
则隐式算法:
n1
hf
n
,
n1 n1
y x0
y 0
比较:Euler 公式
yx0 y0
y y x y
n1
hf
y y x ,y h(f
n1
n
n
) n 0,1,2,
n
注意:这是“折线法”而非“切线法” y 除第一个点是曲线切线外,其他点不是!
χ0 χ1χ2 χ3 χ
例: 求解初值问题
y y 2 y2 x y(0) 0.
(0<x<3)
解:由Euler方法得
yn1
yn
h(
yn xn
2 yn2)
dx
x
,
0
y
0
x
,
0
y
0
由于 f
x
,
0
y
0
及
x
,
0
y
0
已知,必有切线方程。
由点斜式写出切线方程:
y
y x 0
x0
dy dx
x
,
0
y
0
y
0
(
x
x
)
0
f
(
x
,
0
y) 0
等步长 为h,则
x1 x0 h,可由切线算出
y 1
:
y 1
y 0
h(f x
0,y
)
0
x 逐步计算出y (y x)在 ,点值 : n1
( x1)
1 [ 2h
f
( x0 )
f
( x2 )
1 2h
[
f
( x0
)
4
4 f ( x1) f (x2)] f ( x1)
3
f (x2)] f (x2)]
l0( x)
1 h2
l1(
x)
2 h2
l2( x)
1 h2
f (x)
f ( x0 ) 2 f ( x1) h2
f (x2)
微分方程离散化常用方法
取h=0.2, xn=nh,(n=0,1,2…,15)
h=0.2;y(1)=0.2;x=h:h:3; for n=1:14
xn=x(n);yn=y(n); y(n+1)=yn+h*(yn/xn-2*yn*yn); end x0=-4:h:4;y0=x0./(1+x0.^2); plot(x0,y0,x,y,x,y,'o')
n1
n
nn
B. 数值积分
用数值积分方法离散化 :
xn1 dydx xn1 f (x, y)dx (n 0,1, )
xn dx
xn
用yn1, yn代替y(xn1), y(xn ), 对右端积分采用 取左端点的矩形公式
则有
xn1 xn
f
(x,
ห้องสมุดไป่ตู้
y)dx
hf
(xn ,
yn )
yn1 yn hf (xn , yn ) (n 0,1, )
f
(a
h)
n k 0
hk k!
f
(k) (a)
hn1 (n 1)!
f
(n1) (1 )
f (a h) n (1)k hk f (k) (a) (h)n1 f (n1) ( )
k 0
k!
(n 1)!
二阶中心差商 f (a) f (a h) 2 f (a) f (a h) O(h2 )
n1
n
nn
Taylor展开法不仅可得到求数值解的公式,且容易估计
截断误差。
6.2 欧拉(Eular)方法
一、 Euler 公式 计算公式:
y
x0
y 0
y y x y
n1
hf
n
,
nn
n 0,1,
1,几何意义。
由
x
,
0
y
0
出发取曲线 y y x 的切线(存在!),则 斜率
dy
f