Matlab边值问题
第23卷 第 I期 武 OiFx理 工 大 学 学 报 vo宗2N0o0.1
2(61年 1月 JOURNAL WUHAN UNIVERSITYOFTECHNOLOGY
Matlab语言中边值问题算法的改进
陆水忠廖道训黄其柏
(华中科技大学)
摘 要;指出在Matlab语言中没有现成计算达位问题的M程序,并且在运用打北法解边值问超的过程
中.往往出现对初值要求比较苛刻,针汁此缺陷本文对迭代方程进行适当的延拓,并编制了Matlab边值问题
的程序,最后用实例验证所编写的程序
关钮词:边位;算法;打犯法
中图法分类号 TP311
众所周知、在当今3。多个数学类科技应用软件中一般有数值计算(NumberCrunching)型和数学分析
(MathAnalysis)型两类。目前MATLAB已经占据了数值型软件市场的主导地位。它由主包和可选工具包组
成,功能强大,已被广泛地应用于研究和解决各种具体工程问题。但也存在着不星,例如在解边值问题方面就
不是很令人满意,没有解边值问题的计算程序。为此。结合科研实践,对语言中关于边值问题的解法作了一些
发展。
在Matlab中,与微分方程的数值有关的函数有ODE23,ODE45,ODE113,ODE15S,ODE23S.ODE-
SET.ODEGET.ODEPLOT.ODEPHAS2.ODEPHAS3,ODEPRINT,ORBITODE,ORBT20DE,RIGI-
DODE.VDPODE;与符号微分方程有关的有DSOI.VE,SOI,VE,SUBS。这些函数有丰富的内涵,为解决实
际问题提供了极大的便利,但他们都是在初始条件已知的基础上进行的,很少涉及边值条件的问题。常微分
方程边值问题在应用科学与工程技术中是经常遇到的,由于边值问题解的存在性比初值问题复杂得多,至今
没有很好解决,因此求解边值问题无论在理论上或数值解法上都比初值问题困难,目前很多数值方法都是假
定边值问题解存在的前提讨论的,其中很重要的一类方法是将边值问题转化为初值问题求解,如打靶法
(Shooting),连续法(Continuation),和不变嵌人法(Invariantimbedding)均属这一类,有限差分法也是另一类
很重要的经典算法。本文是基于在非自治系统中应用打靶法((Shooting)来进行讨论的。
1 打靶法
大多数非线性动力系统都是非自治系统,不失一般性,将对如下的非自治系统进行分析
T=J(r,t,p),(z,t,p) 〔(尸,R,R)
(I)
II(T,t+T,p)=I(二,t,p)
其中T为系统的周期。求这类非线性动力系统的周期解,就是求下列边值问题:
(T一f(x,t,二(s)) (2)
lr(s)=T(O,s)一 2(T,s)二 O
其中R(s)为方程中与:有关的部分。.1ER^为待求参数,一旦:确定,初值二((D's)也就已知,解初值问题,便可
求的r(T,s)。对于:的求解,采用Newton-Raphson迭代法,其迭代格式为:
s"+t=e一及(s)一2·r(s`)
格式为: ar(s) ax(o,s) ax(T,s) ar(T,s)3T (3)
D.(.})之 石二二 一
as as