Matlab求解常微分方程边值问题的方法

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

Matlab 求解常微分方程边值问题的方法:bvp4c 函数

常微分方程的边值问题,即boundary value problems ,简称BVP 问题,是指表达形式为

(,)((),())0'=⎧⎨=⎩y f x y g y a y b 或(,,)((),(),)0

'=⎧⎨=⎩y f x y p g y a y b p 的方程组(p 是未知参数),在MATLAB 中使用积分器bvp4c 来求解。

[命令函数]

bvp4c

[调用格式]

sol=bvp4c(odefun,bcfun,solinit,options,p1,p2,…)

sol 为一结构体,sol.x 、sol.y 、sol.yp 分别是所选择的网格点及其对应的y(x)与y'(x)数值; bvp4c 为带边值条件常微分方程积分器的函数命令;odefun 为描述微分方程组的函数文件;bcfun 为计算边界条件g(f(a),f(b),p)=0的函数文件;solinit 为一结构体,solinit.x 与solinit.y 分别是初始网格的有序节点与初始估计值,边界值条件分别对应a=solinit.x(l)和b=solinit.x(end); options 为bvpset 命令设定的可选函数,可采用系统默认值;p1, p2…为未知参数。

例 求常微分方程0''+=y y 在(0)2=y 与(4)2=-y 时的数值解。

[解题过程] 仍使用常用方法改变方程的形式:

令1=y y ,21'=y y ,则原方程等价于标准形式的方程组1221

⎧'=⎪⎨'=-⎪⎩y y y y ; 将其写为函数文件twoode.m ;

同时写出边界条件函数对应文件twobc.m ;

分别使用结构solinit 和命令bvp4c 确定y-x 的关系;

作出y-x 的关系曲线图。

[算例代码]

solinit =bvpinit(linspace(0,4,5),[1 0]); % linspace(0,4,5)为初始网格,[1,0]为初始估计值 sol=bvp4c(@twoode,@twobc,solinit);

% twoode 与twobc 分别为微分方程与边界条件的函数,solinit 为结构

x=linspace(0,4); %确定x 范围

y=deval(sol,x); %确定y 范围

plot(x,y(1,:)); %画出y-x 的图形

%定义twoode 函数(下述代码另存为工作目录下的twoode.m 文件)

function dydx= twoode(x,y) %微分方程函数的定义

dydx =[y(2) -abs(y(1))];

%定义twobc 函数(下述代码另存为工作目录下的twobc.m 文件)

function res= twobc(ya,yb); %边界条件函数的定义

res=[ya(1);yb(1)+2];

[运行结果]

相关文档
最新文档