二阶常微分方程边值问题的数值解法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
本文主要研究二阶常微分方程边值问题的数值解法。
对线性边值问题,我们总结了两类常用的数值方法,即打靶法和有限差分方法,对每种方法都列出了详细的计算步骤和Matlab程序代码,通过具体的算例对这两类方法的优缺点进行了细致的比较。
关键字:常微分方程边值问题;打靶法;差分法;
ABSTRACT
This article mainly discusses the numerical methods for solving Second-Order boundary value problems for Ordinary Differential Equations. On the one hand, we review two types of commonly used numerical methods for linear boundary value problems, i.e. shooting method and finite difference method. For each method, we give both the exact calculating steps , we compare the advantages and disadvantages in detail of these two methods through a specific numerical example.
Key words:Boundary-Value Problems for Ordinary Differential Equations;Shooting Method;Finite Difference Method;
目录
第一章引言................................................................................................................... - 1 -第二章二阶线性常微分方程.................................................................................. - 2 -
2.1试射法(“打靶”法) ............................................................................................ - 3 -
2.1.1简单的试射法............................................................................................ - 3 -
2.1.2 基于叠加原理的试射法........................................................................... - 4 -
2.2 有限差分法......................................................................................................... - 10 -
2.2.1 有限差分逼近的相关概念...................................................................... - 11 -
2.2.2 有限差分方程的建立............................................................................. - 13 -
2.2.3 其他边值条件的有限差分方程............................................................. - 14 -
2.2.4 有限差分方程的解法............................................................................. - 16 -第三章二阶非线性微分方程........................................................ 错误!未定义书签。
3.1基于牛顿迭代法的打靶法.......................................................... 错误!未定义书签。
3.1.1 第一类边值条件推导..................................................... 错误!未定义书签。
3.1.2 其他边值条件的推导................................................... 错误!未定义书签。
3.1.3 算法及程序代码........................................................... 错误!未定义书签。
3.2 基于改进的牛顿迭代法的打靶法............................................. 错误!未定义书签。
3.2.1 算法的推导................................................................... 错误!未定义书签。
3.2.2 算法及代码................................................................... 错误!未定义书签。
第四章改进算法的算例 ................................................................. 错误!未定义书签。
第五章总结 ................................................................................................................... - 20 -参考文献 .......................................................................................................................... - 21 -致谢............................................................................................................ 错误!未定义书签。
第一章引言
微分方程是现代数学中一个很重要的分支,从早期的微积分时代起,这个学科就成为了理论研究和实践应用的一个重要领域。
在微分方程理论中,定解条件通常有两种提法:一种是给出了积分曲线在初始时刻的性态,相应的定解条件称为初值问题;另一种是给出了积分曲线首末两端的性态,这类条件则称为边界条件,相应的定解问题称为边值问题。
常微分方程边值问题在应用科学与工程技术中有着非常重要的应用,例如工程学、力学、天文学、经济学以及生物学等领域中的许多实际问题通常会归结为常微分方程边值问题[12]的求解。
文献[9]给出了边值问题求解的方法,虽然求解常微分方程边值问题有很多解析方法可以求解,但这些方法只能用来求解一些特殊类型的方程,对从实际问题中提炼出来的微分方程往往不再适用,因而对常微分方程边值问题的数值方法的研究显得尤为重要。
经典的数值方法主要有:试射法(打靶法)和有限差分法,见文献[2]。
对于二阶线性边值问题,差分法的优点在于稳定性较好,但它的精度不高。
而用打靶法求解线性问题时,解的精度较高,这是因为打靶法将边值问题的求解转化为相应的初值问题的求解,因而可以使用具有较高精度的Runge-Kutta法(见文献[1]),但是算法稳定性较差。
在本文中,我们首先总结了二阶线性边值问题的数值算法:打靶法、有限差分法。
对每种方法都列出了详细的计算步骤和Matlab程序代码,通过具体的算例对这两类方法的优缺点进行了细致的比较。
由于简单的打靶法过分依赖经验,我们考虑了基于线性叠加原理的打靶法,将线性边值问题转化为两个初值问题,并通过线性叠加得到原边值问题的解。
第二章 二阶线性常微分方程
二阶常微分方程一般可表示成如下的形式:
),,()(y y x f x y '='', b x a ≤≤ (1)
边值条件有如下三类[9]:
第一类边值条件
α=)(a y , β=)(b y (2)
第二类边值条件
α=')(a y , β=')(b y (3)
第三类边值条件[19]
ααα='-)()(10a y a y , βββ='+)()(10b y b y (4)
其中010≥αα, 010≥ββ, 010≠+αα, 010≠+ββ。
在对边值问题用数值方法求解之前,应该从理论上分析该边值问题的解是否存在,若问题的解不存在,用数值方法计算出来的数据没有任何意义。
下面的定理给出了边值问题存在唯一解的充分条件。
定理1.1设方程(2.1)中的函数f 及y
f ∂∂,y f '∂∂在区域 },,|),,{(∞<'<-∞≤≤'=Ωy y b x a y y x
内连续,并且
(ⅰ),0),,(>∂'∂y
y y x f Ω∈'∀),,(y y x ; (ⅱ)
y y y x f '∂'∂),,(在Ω内有界,即存在常数M ,使得 M y y y x f ≤'∂'∂),,(, Ω∈'∀),,(y y x ,
则边值问题(2.1)-(2.4)的解存在且唯一[18]。
本章我们假设函数),,(y y x f '可以简单地表示成
)()()(),,(x r y x q y x p y y x f -+'=',
即边值问题(2.1)-(2.2)为具有如下形式的二阶线性边值问题
⎩⎨⎧==≤≤=+'+''-βα)(,)(,)()()(b y a y b x a x r y x q y x p y (2.5)
此时,解的存在唯一性定理(定理1.1)可以简单地表述为下述推论。
推论 2.1 设)(x p ,)(x q ,)(x r 在[a ,b]上连续,且在[a ,b]内0)(≥x q ,则线性边值问题(2.5)的解存在且唯一.
注:如无特别说明,本文中用到的(2.5)中的微分方程均满足推论2.1中的条件。
对于一般的边值问题(2.5),尽管我们可以从理论上保证解的存在唯一性,但通常很难用解析方法求出其精确解,从实际问题中归结出来的微分方程往往不是解析方法所适用的特殊类型,此时数值方法显得尤为重要。
下面我们先给出求解边值问题(2.5)的两种常用的数值方法,即试射法和有限差分法。
2.1试射法(“打靶”法)
2.1.1简单的试射法
对于边值问题(2.5)的求解,“试射法”的基本思想是将边值问题转化成初值问题来求解,即根据边界条件(2.2),寻求与之等价的初始条件(2.6),也就是说,反复是调整初始时刻的斜率值s y =',使得初值问题(2.7)的积分曲线)(x y y =能“命中”β=)(b y .
设凭借经验能够提供s 的两个预测值1s ,2s ,我们按这两个斜率“试射”, 通过Runge-Kutta 算法求解相应的初值问题(2.7)可以得到)(b y 的两个预测值分别为1β,2β。
若1β和2β都不满足预定的精度,则可用线性插值的方法校正1s ,2s 得到新的斜率值
)(11
21213ββββ---+=s s s s (2.8) 然后再按斜率3s 试射,求解相应的初值问题(2.7)又得到新的结果3)(β=b y .若ββ=3或εββ<-3[16],则可将3s 作为s 的近似值;否则,继续过程(2.8)直到找到计算结果)(b y 与β相当符合为止。
上述试射法中初值s 的选取过分依赖于经验,局限性很大。
下面介绍基于线性叠加原理的试射法。
2.1.2 基于叠加原理的试射法
设二阶线性常微分方程边值问题(2.5)的解存在并且唯一,并定义线性算子L :
y x q y x p y Ly )()(:+'+''-=. (2.9)
由于线性微分方程的解具有叠加性,即非齐次线性微分方程的解可由它的一个特解和相应的齐次线性微分方程的解的线性组合来表示,因此我们可以考虑如下的两个线性微分方程的初值问题:
⎩
⎨⎧==,)(),(αa u x r Lu 0)('=≤≤a u b x a (2.10) 和
⎩⎨⎧==,
0)(,0a v Lv 1)('=≤≤a v b x a (2.11) 事实上,设)(x u 和)(x v 分别为问题(2.10)和(2.11)的解,则不难验证
)()()
()()(x v b v b u x u x y -+=β (2.12)
是问题(2.5)的解,其中0)(≠b v .
通过上述描述,我们可以得到基于叠加原理的打靶法的基本步骤为:
1. 根据边值问题(
2.5)构造相应的初值问题(2.10)和(2.11);
2. 分别求出两个初值问题(2.10)和(2.11)的解)(x u 和)(x v ;
3. 将)(x u 和)(x v 按(2.12)式做组合,所得的函数)(x y 就是边值问题(2.5)的解.其几何图像见图2.1。
图 2.1 打靶法求解结果的几何图像
(2.10)和(2.11)均为二阶常微分方程初值问题,求解时可通过引入变量代换将其化成相应的一阶方程组初值问题。
如令:
,
,
11v v u u == v v u u '='=22 (2.13) 则(2.10)式可以写成 ⎪⎩⎪⎨⎧==-+='=',0)(,)(),()()(,21
12221a u a u x r u x q u x p u u u α (2.14) (2.11)式可以写成
⎪⎩⎪⎨⎧==+='=',1)(,0)(,)()(,21
12221a v a v v x q v x p v v v (2.15) 这样就可以利用Runge-Kutta 方法求解(2.14)和(2.15)。
对于更一般的线性边值问题:
⎪⎩⎪⎨⎧≠+≥='+≥='-≤≤=+'+''-≡0,0,)()(,
0,)()(,)()()(001010
1010βαβββββαααααb y b y a y a y b x a x r y x q y x p y Ly (2.16) 用基于叠加原理的打靶法的步骤为:
1. 根据(
2.16)式,构造两个相应的初值问题:
⎩
⎨⎧-==,)(),(1αc a u x r Lu α0)(c a u b x a -='≤≤ (2.17) 和
⎩⎨⎧==,
)(,01αa v Lv 0)(α='≤≤a v b x a (2.18) 其中0c 和1c 是满足条件10110=-ααc c 的两个任意的常量.
2. 求解初值问题(2.17)和(2.18)式,设其解分别为)(x u 和)(x v .
3. 将)(x u 和)(x v 做线性组合)()
()()]()([)()(1010x v b v b v b u b u x u x y '+'+-+=βββββ 由此计算得到的函数)(x y 就是(2.16)式的解,其具体的数值计算格式可描述为如下算法:
算法1 基于叠加原理的试射法求解线性边值问题(2.5)的算法如下:
1. 输入 区间的端点a ,b ,及边界条件常数α,β,区间等分数N
2. 计算 步长N a b h /)(-=,α=10u ,020=u ,010=v ,120=v
3. fo r i=0,1,2,…,N-1
3.1 ih a x +=
3.2 计算
)22(61)22(6
1))
())(())((()())2
()21)(2()21)(2(()2
1())2
()21)(2()21)(2(()2
1())
()()((432121,2432111,132314324222132231211212212121L L L L u u K K K K u u h x r L u h x p K u h x q h L hL u h K h x r L u h x p K u h x q h L L u h K h x r L u h x p K u h x q h L L u h K x r u x q u x p h L hu K i i i i i i i i i i i i i i i i
++++=++++=+-+++++=+=+-+++++=+=+-+++++=+
=-+==++
3.3 计算
)22(6
1)22(6
1))
)(())((()
())2
1)(2()21)(2(()2
1())2
1)(2()21)(2(()2
1()
)()((432121,2432111,132314324222132231211212212121l l l l v v k k k k v v l v h x p k v h x q h l hl v h k l v h x p k v h x q h l l v h k l v h x p k v h x q h l l v h k v x q v x p h l hu k i i i i i i i i i i i i i i i i
++++=++++=+++++=+=+++++=+=+++++=+=+==++
end for(i) 4. 计算N N v u y y 112010/)(,-==βα
5. 输出α,10y ,20y
6. for i=1,2,…,N
6.1 计算ih a x v y u y v y u y i i i i i i i +=+=+=,,2202212011
6.2 输出i x ,i y 1,i y 2(说明:i y 1,i y 2分别是)(i x y ,)('i x y 的近似值) end for(i)
代码1 将上面的算法在matlab 实现代码如下:
function [x,y]=lsh(func1,func2,a,b,ya,yb,N)
%利用RK 方法计算二阶线性微分方程的边值问题,
%由微分方程知识可以知道,对于二阶微分方程可以化为一阶微分方程组
%func1为第一个微分方程组第二个函数,func2为第二个微分方程组第二个函数 %初始时刻为a ,结束时为b ,初始端点函数值为ya ,末端点函数值yb
%N 为分成的区间数目
h=(b-a)/N;
u(1,1)=ya;
u(1,2)=0;
v(1,1)=0;
v(1,2)=1;
for i=1:N
x(i,:)=a+(i-1)*h;
K1=h*u(i,2);
L1=h*feval(func1,x(i,:),u(i,1),u(i,2));
K2=h*(u(i,2)+1/2*L1);
L2=h*feval(func1,x(i,:)+1/2*h,u(i,1)+1/2*K1,u(i,2)+1/2*L1); K3=h*(u(i,2)+1/2*L2);
L3=h*feval(func1,x(i,:)+1/2*h,u(i,1)+1/2*K2,u(i,2)+1/2*L2); K4=h*(u(i,2)+L3);
L4=h*feval(func1,x(i,:)+h,u(i,1)+K3,u(i,2)+L3);
u(i+1,1)=u(i,1)+1/6*(K1+2*K2+2*K3+K4);
u(i+1,2)=u(i,2)+1/6*(L1+2*L2+2*L3+L4);
k1=h*v(i,2);
l1=h*feval(func2,x(i,:),v(i,1),v(i,2));
k2=h*(v(i,2)+1/2*l1);
l2=h*feval(func2,x(i,:)+1/2*h,v(i,1)+1/2*k1,v(i,2)+1/2*l1); k3=h*(v(i,2)+1/2*l2);
l3=h*feval(func2,x(i,:)+1/2*h,v(i,1)+1/2*k2,v(i,2)+1/2*l2); k4=h*(v(i,2)+l3);
l4=h*feval(func2,x(i,:)+h,v(i,1)+k3,v(i,2)+l3);
v(i+1,1)=v(i,1)+1/6*(k1+2*k2+2*k3+k4);
v(i+1,2)=v(i,2)+1/6*(l1+2*l2+2*l3+l4);
end
u
v
x(N+1,:)=x(N,:)+h;
y(1,1)=ya;
y(1,2)=(yb-u(N+1,1))/v(N+1,1);
for i=1:N
y(i+1,1)=u(i+1,1)+y(1,2)*v(i+1,1);
y(i+1,2)=u(i+1,2)+y(1,2)*v(i+1,2);
end
例2.1 用基于叠加原理的打靶法求解下面的线性边值问题:
⎪⎩⎪⎨
⎧==≤≤++'-='
'2
)2(,1)1(,
21,)sin(ln 222
2y y x x x y x y x y
解:该边值问题有精确解[8,21]
)cos(ln 101
)sin(ln 10
3)(221x x x m x m x y --+
=
其中)]2cos(ln 4)2sin(ln 128[70
11--=m ,121011
m m -=.
对该问题用算法1求解时需要近似求解初值问题
⎪⎩⎪⎨
⎧='=≤≤++'-=''0
)1(,1)1(,
21,)sin(ln 222
2u u x x x u x u x u
和
⎪⎩⎪⎨
⎧='=≤≤+'-=''1
)1(,0)1(,
21,222
v v x v x v x v
当10=N ,1.0=h 时,计算结果如下表所示。
表中列出的值i u 1逼近)(i x u 的值,i v 1逼近)(i x v 的值,且值i y 1逼近
)()
2()
2(2)()(i i i x v v u x u x y -+
=, i i y x y error 1)(-=表示逐点绝对误差。
表 2.1 基于叠加原理的打靶法算例数据
其精确解和数值解的比较如下图所示
y
x
图2.2 基于叠加原理的打靶法算例图像
图像中的直线表示边值问题的精确解,蓝色点表示利用算法1得到的数值解
2.2 有限差分法
有限差分方法是用于微分方程定解问题求解的最广泛的数值方法,其基本思想是用离散的、只含有有限个未知量的差分方程去近似代替连续变量的微分方程和定解条件,并把相应的差分方程的解作为微分方程定解问题的近似解。
本节我们依然讨论边值问题(2.5),介绍解两点边值问题的另一种数值方法——有限差分方法。
2.2.1 有限差分逼近的相关概念
设函数)(x f 光滑,且10<<<h ,利用Taylor 展开,可得
+'''+''+'+=+)(3)(2)()()(3
2x y h x y h x y h x y h x y (2.19)
+'''-''+'-=-)(3
)(2)()()(3
2x y h x y h x y h x y h x y (2.20)
由(2.19)可以得到一阶导数的表达式
-'''-''--+=')(3
)(2)()()(2
x y h x y h h x y h x y x y (2.21a)
或者
)()
()()(h O h
x y h x y x y +-+=
' (2.21b)
同理由(2.20)式可得
-'''+''---=')(3
)(2)()()(2
x y h x y h h h x y x y x y (2.22a)
或者
)()
()()(h O h
h x y x y x y +--=
' (2.22b)
其中)(h O 表示截断误差项.因此,可得一阶导数的)(x y '的差分近似表达式为
h
x y h x y x y )
()()(-+≈
' (2.23)
h h x y x y x y )
()()(--≈' (2.24)
由(2.21)和(2.22)可知,差商(2.23)和(2.24)逼近微商)(x y '的精度为一阶,即为)(h O ,为了得到更精确的差分表达式,将(2.19)减(2.20)可得
+'''+'=--+)(3
2)(2)()(3
x y h x y h h x y h x y (2.25)
从而可以的到
)(6
2)()()(2
ξy h h h x y h x y x y '''---+=' (2.26a)
或者
)(2)
()()(2h O h
h x y h x y x y +--+=
' (2.26b)
其中,h x h x +<<-ξ.
可得一阶导数)(x y '的差分近似表达式为
h
h x y h x y x y 2)
()()(--+≈
' (2.27)
由此可知,(2.16)差商逼近微商)(x y '的精度为二阶,即为)(2h O 。
公式(2.23),(2.24)和(2.27)分别被称为逼近一阶微商)(x y '的向前,向后和中心差分公式[6]。
类似地,我们还可以给出二阶微商)(x y ''和高阶微商的差分近似表达式。
例如将(2.19)和(2.20)两式相加可得
++''+=-++)(12
)()(2)()()
4(22
x y h x y h x y h x y h x y
进而有
)(12
)()(2)()()
4(22
ξy h h h x y x y h x y x y --+-+='' (2.28) 其中h x h x +<<-ξ.
因此,二阶导数)(x y ''的差分近似表达式[8]为
)()
()(2)()(22
h O h
h x y x y h x y x y +-+-+=
'' (2.29) 下表中列出了一些高阶导数的常用差分近似公式以及其相应的截断误差阶:
表 2.2 导数的差分逼近及其相应的截断误差阶
2.2.2 有限差分方程的建立
考虑边值问题(2.5),取一正整数N 将区间[a ,b]分成N 等份。
设其节点分别为
ih a x i +=,N i ,,2,1,0 =。
其中N a b h /)(-=为步长,121,,,-N x x x 为内节点,a x =0,b x N =称为边界节点。
在每一个节点i x 处,边值问题的方程(2.5)可以转化为
⎩⎨
⎧==++'=''.,),
()()()()()(0
βαN i i i i i i y y x r x y x q x y x p x y (2.30) 假设],[)(4b a C x y ∈,利用上一节内容可得到)(x y '和)(x y ''的中心差商公式:
)(6
2)()()(2i i i i y h h h x y h x y x y ξ'''---+='' (2.31)
其中,11+-<<i i i x x ξ.
)(12
)()(2)()()
4(22i i i i i y h h h x y x y h x y x y η--+-+='' (2.32a)
或者
∞≤-+-+-'')(12
)()(2)()()
4(22x y h h h x y x y h x y x y i i i i (2.32b)
其中,11+-<<i i i x x η.
将(2.27)和(2.32a)代入(2.30)式可得
⎪⎪⎩
⎪
⎪⎨
⎧==-==++--++-+-+-.
,;1,,2,1)()()(2)()()()
()(2)(02βαN
i i i i i i i i i i y y N i x r R x y x q h h x y h x y x p h h x y x y h x y (2.33)
其中,
)()(6
)(122
)4(2i i i i y x p h y h R ξη'''-= (2.34)
称为用差分方程逼近微分方程的截断误差[9]。
略去)(2h O R i =,并用i y 代替)(i x y 可得到逼近边值问题(2.30)式的差分方程:
⎪⎪⎩
⎪
⎪⎨
⎧==-==+-++---+-+.
,;1,,2,1)()(2)()
2(011211βαN
i i i i i i i i i y y N i x r y x q h y y x p h y y y (2.35) 再记
,)(,)(,)(i i i i i i x r r x q q x p p === (2.36)
则由(2.35)整理可得到关于)1,,2,1(-=N i y i 的方程组:
⎪⎪⎪
⎪⎩
⎪⎪⎪
⎪⎨
⎧--=+++--==-++++-++=-++------+-β
α)12()2()21(2,3,2,)12()2()21(,)21()12()2(112112212121112
21112N N N N N N i i i i
i i i p h r h y q h y p h N i r h y p h y q h y p h p h r h y p h y q h (2.37) 该方程组的可解性和解的误差估计可参考文献[10,20]。
2.2.3 其他边值条件的有限差分方程
在实际的应用中,我们可能会碰到边值条件为(2.3)或(2.4)的边值问题,即第二或第三边值条件.对于第二或第三边值条件,在建立差分方程时,必须选用适当的差商公式代替边界上的)(a y '和)(b y '。
例如,为了使近似解在边界a x =和b x =上具有二阶精度,可以选用本章第一节表2.2中列出的差商公式近似:
⎪⎪⎩
⎪⎪⎨
⎧+-≈'='-+-≈'='--)]
()(4)(3[21)()()](3)(4)([21)()(210120N N N N x y x y x y h x y b y x y x y x y h
x y a y (2.38) 在(2.31)中,取近似
⎪⎪⎩⎪⎪⎨
⎧=+-=-+---βα)]()(4)(3[21)](3)(4)([21
21012N N N x y x y x y h
x y x y x y h
那么我们可以得到第二边值条件的差分方程组:
⎪⎪⎪
⎪⎩⎪⎪⎪
⎪⎨
⎧=+--==+-++--=-+----+-+β
α)]()(4)(3[21;1,,2,1)()(2)()2()](3)(4)([21
21112
11012N N N i i i i i i i i i x y x y x y h
N i x r y x q h y y x p h y y y x y x y x y h (2.39) 第三边值条件的差分方程组:
⎪⎪⎪
⎪⎩⎪⎪⎪
⎪⎨
⎧=++--==+-++--=--+----+-+β
βαα)()]()(4)(3[21;1,,2,1)()(2)()2()()](3)(4)([21
021112
1100012N N N N i i i i i i i i i x y x y x y x y h
N i x r y x q h y y x p h y y y x y x y x y x y h (2.40) 其中包含1+N 个未知量)(,,)(,)(10N x y x y x y 。
其系数矩阵都具有下列形态.
)
1()1(***************+⨯+⎥⎥
⎥⎥⎥
⎥⎥⎥⎦⎤
⎢⎢⎢⎢
⎢⎢⎢⎢⎣⎡=N N A 其中,*代表不恒为零的元素。
由线性代数的知识可以知道,矩阵A 可经过适当的初等行变换可化为三对角矩阵。
2.2.4 有限差分方程的解法
下面我们来研究下这些差分方程组的解法(以第一边值条件所得的差分方程组(2.37)为例):
将(2.37)简记为
r By = (2.41)
其中,
⎥⎥⎥
⎥
⎥⎥⎥⎥⎥
⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡++--++--++--++--+=-----12
1222233232222112
2)21(122)21(1
2
2)21(1
22)21(122N N N N N q h p h p h q h p h p h q h p h p h q h p h p h q h B ⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=--12321N N y y y y y y ,⎥
⎥⎥⎥
⎥⎥⎥⎥⎥⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--++=---βα)12()21(11222
3
222
112N N N p h r h r h r h r h p h r h r 从中可以看出B 为三对角矩阵,可以用追赶法[14]求解。
算法2 用有限差分法求解二阶线性边值问题(2.5)的算法如下: 1. 输入区间的端点a ,b ,及边界条件常数α,β,区间等分数N
2. 计算(形成方程组(2.41)中的矩阵B ,及右端的向量r ,为节省空间,用y 代替r )
))(2
1()(1)(2
)
(2/)(21121x p h
x r h y x p h
c x q h b h
a x N
a b h +
+=-=
+=+=-=α
for i=2:N-2
)
(1)(2
)(2)(2
122x r h y x p h
c x q h b x p h
a ih
a x i i i i =-=
+=--=+=
end for(i)
))(2
1()()
(2)(2
121211x p h
x r h y x q h b x p h
a h
b x N N N -
+=+=--=-=---β
3. 用追赶法计算三对角方程组(2.41)中的矩阵B [2,3]
3.1 计算}{i β
111/b c =β
for i=2,3,…,N-2 )/(1--=i i i i i a b c ββ
end for(i)
3.2 解y Lm = (该y 存储r 的值)
111/b y m =
for i=2,3,…,N-1
)/()(11----=i i i i i i i a b y a y m β
end for(i)
3.3 解m Uy =(为了节省空间用继续用y 存储(2.41)的解) 11--=N N m y
for i=N-2,…,2,1
)/()(11----=i i i i i i i a b y a y m β
end for(i)
4 输出相应的值y x ,.
例2.2 用有限差分法解例题2.1中的边值问题:
⎪⎩⎪⎨⎧==≤≤++'-=''2)2(,1)1(,21,)sin(ln 2222y y x x x y x y x y
解:考虑有限差分法来求解这个问题。
在算法2中,取10=N ,1.0=h 。
计算结果见下表2.3及其图像见图2.3,值i y 1逼近)(i x y ,i i y x y error 1)(-=表示逐点绝对误差。
表 2.3 有限差分法算例数据
精确解与用有限差分法求得的数值解的比较如下图所示
x
图 2.3 有限差分法算例图像
图像中的直线表示边值问题的精确解,蓝色点表示由算法2得到的数值解.
从该题的结果中我们可以看出,例2.2的数值解的精度与例2.1相比差很多。
原因是在例2.1中所用的方法是建立在Runge-Kutta算法的基础上的,而Runge-Kutta算法具有)
O。
(2h
O的精度,而有限差分法的局部截断误差阶仅有)
(4h
第五章总结
通过本文的研究,我们总结了求解二阶线性常微分方程边值问题以及二阶线性边值问题的数值解法。
对于二阶线性边值问题时,本文总结了三种方法,并且得出结论:简单的“打靶法”过分依赖于经验,盲目性很大;基于“叠加原理”的打靶法是建立在经典的Runge-Kutta算法的基础上,因此在求解线性边值问题时具有较好的精度,但是稳定性相对较差;有限差分法,可以适应很多线性边值问题的求解,因此稳定性较好,但是其精度较基于“叠加原理”的打靶法要差些。
参考文献
[1] 李庆扬等. 数值分析(第四版)[M].北京:清华大学出版社,2001.08;
[2] Richard L.Burden J.Douglas Faires. NUMERICAL ANAL YSIS (Seventh Edition)[M]. Beijing:Higher Education, 2001.08;
[3] Rainer Kress. Numerical Analysis [M]. New York: Springer-verlag, 1998;
[4] David Kincaid. Numerical Analysis: Mathematics of Scientific Computing[M].Beijing:China Machine Press,2003.4;
[5] H.J.Pech. Multipoint Boundary-Value Solutions of Two-Point Boundary-Value Problems[M]. JOURNAL OF OPTIMIZATION THEORY AND APPLICA TIONS. 1999.01;
[6] 李庆扬等. 数值分析(第三版)[M].北京:清华大学出版社,1986.12;
[7] 黄争鸣. 两点边值问题的一种有效算法[J]. 计算物理,1992.06;
[8] 李磊. 边值问题的并行算法[J]. 工程数学学报,1989.03;
[9] 葛渭高等. 常微分方程与边值问题[M]. 北京:科学出版社,2008;
[10] 余德浩. 微分方程数值解法[M]. 北京:科学出版社,2003.10;
[11] John H.Mathews Kurtis D.Fink Numerical Methods Using MATLAB Fourth Edition[M]. Beijing:Publishing House of Electronics Industry.
[12] 王高雄等.常微分方程第三版[M].北京:清华大学出版社,2006;
[13] 宋叶志等.MA TLAB数值分析与应用[M].北京:机械工业出版社,2009;
[14] Curtis F.Gerald Applied Numerical Analysis(Seventh Edition)[M]. Beijing:Higher Education Press,2005.05;
[15] 刘墨德. Newton 迭代法及其改进[J]. 三明学院学报,2007.06;
[16] 赵秋玲等. 求解二点边值问题打靶法的一种改进方法[J]. 上海力学,1999.12
[17] 李丽容. 对牛顿迭代法的改进[J]. 中国水运(理论版),2006.05;
[18] 张春梅. 一类二阶非线性常微分方程边值问题的有效解法[J]. 优秀硕士论文,2006.06;
[19] 徐静等. 非线性一般两点边值问题的试射法[J]. 内江科技,2006.08;
[20] 帕力旦·赛力提尼亚孜等,试射法在求解二阶线性微分方程中的应用[J]. 新疆大学学报(自然科学版),2006.02;
[21] 向隆万. 两点边值问题的双向迭加法[J]. 工程数学学报,1984.04
[22] 周保民. 常微分方程边值问题的高精度差分法[J].。