当前位置:首页 > Matlab求解常微分方程边值问题的方法
Matlab求解常微分方程边值问题的方法:bvp4c函数
常微分方程的边值问题,即boundary value problems,简称BVP问题,是指表达形式为
?y??f(x,y)?y??f(x,y,p)或? ?g(y(a),y(b))?0g(y(a),y(b),p)?0??的方程组(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…为未知参数。
例 求常微分方程y???y?0在y(0)?2与y(4)??2时的数值解。 [解题过程] 仍使用常用方法改变方程的形式:
?y??y?12令y1?y,y2?y1?,则原方程等价于标准形式的方程组?;
???y2??y1将其写为函数文件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); plot(x,y(1,:));
%确定y范围 %画出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];
[运行结果]
共分享92篇相关文档