Matlab求解常微分方程边值问题的方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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];
[运行结果]