本科毕业论文(设计)
论文(设计)题目:打靶法求边值问题
学
专
班
学
院:理学院
业:数学应用数学
级:091
号:0907010228
学生姓名:钟玲声
指导教师:汪萌萌
2013 年
4 月
21 日
打靶法求边值问题
目 录
摘要: ····························································································· 1
引言: ····························································································· 2
第一章 常微分方程初值问题的解法 ······················································3
1.1 常微分方程的离散化 _________________________________________ 3
1.2 欧拉(Euler)方法 __________________________________________ 4
1.3 改进的 Euler 方法 ___________________________________________ 6
1.4 龙格—库塔(Runge—Kutta)方法 _____________________________7
1.5
4 阶龙格—库塔公式 __________________________________________9
1.6 线性多步法 _________________________________________________ 9
第二章 边值问题的数值解法 ······························································11
2.1 打靶法 ____________________________________________________ 11
2.2 差分法 ____________________________________________________ 15
第三章 Matlab 数值解 ····································································166
3.1 常微分方程的解法 _________________________________________ 166
3.2 打靶法的 matlab 实现 _______________________________________ 23
致 谢: ·························································································· 27
主要参考文献 ···················································································27
贵州大学本科毕业论文(设计)
第 1 页
摘要
常微分方程在很多领域都有非常重要的应用,然而很多常微分方程的解是无
法用解析解写出的,因而要借助于数值方法。本文介绍了常微分方程边值问题的
常见解法,例如:欧拉法,龙格—库塔法等。而对于常微分方程边值问题,常见
的解法有打靶法、有限差分法和有限元法等。在本文中,我们重点介绍了打靶法,
并给出了相关算法,然后结合实例编写程序进行了上机实验。
关键词:常微分方程,初值问题,边值问题,打靶法
Abstract
Ordinary differential equations play an important role in different areas. However,
most equations cannot be expressed analytically. We need to use numerical methods.
In this paper, we discuss the methods of solving initial value problem (IVP) , such as
Euler method Runge-Kutta method. For boundary value problem (BVP), shooting
method, finite difference method (FDM) and finite element method(FEM) are
presented. We mainly discuss shooting method and give the algorithm. Numerical
experiment is presented in the end of the paper.
Keywords: Ordinary differential equations, initial value problem, boundary value
problem, the shooting method
贵州大学本科毕业论文(设计)
第 2 页
引言
虽然常微分方程理论发展已经有几百年,但目前仍然在发展中。特别是最近
三十年,常微分方程迎来了发展的高峰。常微分方程边值问题是常微分方程理论
的重要组成部分, 在众多科学技术领域中有着特别广泛的应用。打靶法是求解常
微分方程边值问题的一种数值方法,它的基本思想是将微分方程的边值问题转化
为初值问题来求解,它的比较突出的特点是精度很高,程序很简单,实用性很强。
边值问题:对 n 阶常微分方程
)(
n
y
,(
,
yyxf
,...,
),
'
(
n
)1
y
如果能在不同的两点 a 和 b 处,唯一地刻画n个附加条件,并且在区间
ta
b
上求解,则称此为边值问题。
在微分方程中,所谓的边值问题就是我们给定的一个微分方程和一组被我们
称之为边界条件的约束条件。边值问题的解一般情况下是符合特定的约束条件的
微分方程的解。我们在求解这个微分方程时,除了给出方程的本身,往往还需要
提供一定的定解条件。最常见的就是给出初值问题,也就是说给出的定解条件为
初始条件;但是也有一些情况,定解条件要求我们考虑所讨论区域的边界,比如
说在一个给定区间讨论时,把定解条件在区间的两个端点给出,给定的这种定解
条件就被我们称之为边界条件,与之相应的定解问题我们就称之为边值问题。
贵州大学本科毕业论文(设计)
第 3 页
第一章 常微分方程组初值问题的解法
1.1 常微分方程的离散化
下面主要讨论一阶常微分方程的初值问题,它的一般形式是
dy
dx
)(
ay
,(
yxf
)
a
x
b
y
0
(1)
在下面的讨论中,总假定函数
,(
yxf
)
连续,且满足 Lipschitz(利普希茨)条件,
也就是存在常数 L ,使得
|
,(
yxf
)
,(
yxf
|)
yL
|
y
|
那么,根据常微分方程理论知,初值问题(1)的解存在并且唯一.
所谓数值解法,就是求问题(1)的解 )(xy 在若干点
a
x
0
x
1
x
2
x
N
b
处的近似值
(
nyn
,2,1
,
N
)
的方法,
(
nyn
,2,1
,
N
)
称为问题(1)的数值解,
1 称为由 nx 到 1nx 的步长.今后如无特别说明,我们总取步长为常量
x
n
h
n
x
n
h .
建立数值解法,首先要将微分方程离散化,一般采用以下几种方法:
1.1.1 用差商近似导数
如果用向前差商
(
xy
n
(
xy
n
)
1
h
化简得
)
1
h
)
n
(
xy
(
xy
n
)
代替
('
nxy
)
代入(1)中的微分方程,则得
(
xf
n
,
(
xy
n
))
(
n
)
,1,0
(
xy
)
1
n
(
xy
n
)
(
xyxhf
(
,
n
))
n
如果用
( nxy 的近似值 ny 代入上式右端,所得结果作为
)
(
1nxy
)
的近似值,记为
贵州大学本科毕业论文(设计)
第 4 页
1ny ,那么有
y
1
n
y
n
(
xhf
,
y
n
)
n
(
n
)
,1,0
这样,问题(1)的近似解可通过求解下面的问题
y
y
n
0
1
y
n
)(
ay
(
xhf
,
y
n
)
n
(
n
,1,0
)
(2)
(3)
得到,按式(3)由初值 0y 可逐次算出
,
1 yy
2
,
.式子(3)是个离散化的问题,
称为差分方程初值问题.
需要说明的是,用不一样的差商近似导数,将得到不一样的计算公式.
1.1.2 用数值积分方法
将问题(1)的解表成积分形式,用数值积分方法离散化.例如,对微分方程
两端积分,得到
(
xy
1
)
n
(
xy
n
)
(4)
x
n
1
x
n
(
,(
xyxf
))
dx
(
n
,1,0
)
右边的积分用矩形公式或梯形公式计算.
1.1.3
Taylor 多项式近似
将函数 )(xy 在 nx 处展开,取一次 Taylor 多项式近似,则得
(
xy
1
)
n
(
xy
n
)
hy
('
x
)
n
(
xy
n
)
(
xhf
,
(
xy
n
))
n
再将
( nxy 的近似值 ny 代入上式右端,所得结果作为
)
(
1nxy
)
的近似值 1ny ,得到
离散化的计算公式
y
1
n
y
n
(
xhf
,
y
n
)
n
上面的三种方法都是将微分方程离散化的常用方法,每一类方法又可导出不
同形式的计算公式.其中的 Taylor 展开法,不仅可以得到求数值解的公式,而且
容易估计截断误差.
1.2 欧拉(Euler)方法
贵州大学本科毕业论文(设计)
第 5 页
1.2.1
Euler 方法
Euler 方法就是用差分方程初值问题(3)的解来近似微分方程初值问题(1)
的解,即由公式(3)依次算出
( nxy 的近似值
)
的数值解称为向前 Euler 公式.
)
nyn
,2,1
(
。这组公式求问题(1)
如 果 在 微 分 方 程 离 散 化 时 , 用 向 后 差 商 代 替 导 数 , 也 就 是
('
xy
n
1
)
(
xy
n
)
(
xy
n
1
)
h
,则得计算公式
y
y
1
n
0
y
n
)(
ay
(
xhf
,
y
)
n
1
n
1
(
n
,1,0
)
(5)
用这组公式求问题(1)的数值解称为向后 Euler 公式.
向后 Euler 法与 Euler 法形式上相似,但实际计算时却复杂得多.向前 Euler
公式是显式的,可直接求解.向后 Euler 公式的右端含有 1ny ,因此是隐式公式,
一般要用迭代法求解,迭代公式通常为
y
y
)0(
1
n
(
k
1
n
y
)1
n
y
(
,
xhf
n
(
xhf
n
n
y
1
)
y
(
n
)
k
1
)
(
k
,2,1,0
)
(6)
n
,
1.2.2
Euler 方法的误差估计
对于向前 Euler 公式(3)我们看到,因为
,2,1n
时公式右端的 ny 都
是
近似的,所以用它计算的 1ny 会有累积误差,分析累积误差比较复杂,这里先讨
论比较简单的所谓局部截断误差.
假设用(3)式时右端的 ny 没有误差,即
y
n
( n
xy
)
,那么由此算出
y
1
n
(
xy
n
)
(
xhf
,
(
xy
n
))
n
(7)
局部截断误差指的是,按(7)式计算由 nx 到 1nx 这一步的计算值 1ny 与精确值
(
1nxy
)
之差
(
xy
1)
y
n
n
1
.为了估计它,根据 Taylor 展开得到的精确值
(
1nxy
)
是
(
xy
1
)
n
(
xy
n
)
hy
('
x
)
n
2
yh
2
(''
x
n
)
(
hO
3
)
(8)
(7)、(8)两式相减(注意到
'
y
,(
yxf
)
)得到
贵州大学本科毕业论文(设计)
(
xy
n
1
)
y
n
1
2
yh
2
(''
x
n
)
(
hO
3
)
2
(
hO
)
第 6 页
(9)
也就是局部截断误差是 2h 阶的,而数值算法的精度定义为:
如果一种算法的局部截断误差为
1phO
(
)
,则称该算法具有 p 阶精度.
显然 p 越大,方法的精度越高。式(9)说明,向前 Euler 方法是一阶方法,
因此它的精度不高。
1.3 改进的 Euler 方法
1.3.1 梯形公式
利用数值积分方法将微分方程离散化的时候,如果用梯形公式计算式(4)中
之右端积分,即
1
x
n
x
n
,(
(
xyxf
))
dx
xfh
(
[
2
,
(
xy
n
n
))
(
xf
n
1
,
(
xy
n
1
))]
并用
y
,
n y
n
1
代替
(
xy
n
),
y
n
1
y
n
1n
)
(
xy
xfh
(
[
2
,那么得计算公式
,
y
n
)
n
(
xf
n
1
,
y
n
1
)]
这就是求解初值问题(1)的梯形公式.
直观上容易看出,用梯形公式计算数值积分要比矩形公式好.梯形公式为二
阶方法。
梯形公式也是隐式格式,一般需用迭代法求解,迭代公式为
y
)0(
1
n
y
n
y
(
(
)1
k
1
n
k
y
n
,2,1,0
)
n
n
(
,
xhf
y
xfh
[
(
2
)
,
y
n
)
(
xf
n
1
,
y
(
)
k
1
n
)]
(10)
n
由于函数
,(
yxf
)
关于 y 满足 Lipschitz 条件,容易看出
|
)1
y
(
n
k
1
y
(
n
)
k
1
|
hL
2
|
y
(
n
其中 L 为 Lipschitz 常数.因此,当
0
)
k
1
|
(
n
y
)1
k
1
hL 时,迭代收敛.但是这样做计算量
1
2
较大.如果实际计算时精度要求不太高,用公式(10)求解时,每步可以只迭代
一次,由此导出一种新的方法—改进 Euler 法.