关于dde23求解时滞微分方程问题
各位论坛高手:你们好!
微分方程描述:
我在使用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,,,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 编辑 ] 没办法约束吧,你的方程的解就是这样的,如果想满足约束,只能调整参数了。 或者是能否有其他方法可以使得 约束条件得以满足 if(lag(1)<0)
lag(1)=0
此处不考虑分母的原因吗,不太理解为什么lag(1)取两个不同的值
页:
[1]