|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
各位论坛高手:
你们好!
微分方程描述:
我在使用dde23求解时滞微分方程碰到如下问题,dde23求解过程中,对于解p(t)和b(t)会出现<0的情况,不晓得如何加这个约束,另外附Matlab程序。
主程序:
clear;
a=0.005;
r=0.05;
ro=0.1;
b=10;
c=1;
D = 4;
opts = ddeset('RelTol',1e-5,'AbsTol',1e-8);
sol = dde23('REMf',D,[0.01 0.1],[0,1000],opts,a,r,ro,b,c);
plot(sol.x,sol.y(1,:));
figure;
plot(sol.x,sol.y(2,:));
微分方程函数程序REMf.m
function v = REMf(t,y,lag,a,r,l,b,c)
v = zeros(2,1);
if(lag(1)>1)
lag(1)=1;
end;
if(lag(1)<0)
lag(1)=0;
end;
if(y(2)<0)
y(2)=0;
end;
v(1) = r*(a*(y(2)-b) + (ro/lag(1)-c) );
v(2) = l/lag(1)-c;
上述程序运行结果如下图,可知p(t)和b(t)不能限制在规定范围内,即0<p(t)<1,0<b(t),请高手指导,如何使用dde23来限制解的范围,在这里先感谢大家的帮忙!
图1 p(t) vs time
图2 b(t) vs time
[ 本帖最后由 wjcper2008 于 2010-7-26 00:28 编辑 ] |
|