wjcper2008 发表于 2010-7-26 00:27

关于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 编辑 ]

messenger 发表于 2010-7-26 16:29

没办法约束吧,你的方程的解就是这样的,如果想满足约束,只能调整参数了。

wjcper2008 发表于 2010-7-27 12:10

或者是能否有其他方法可以使得 约束条件得以满足

50kuai 发表于 2011-3-2 09:03

if(lag(1)<0)
      lag(1)=0
此处不考虑分母的原因吗,不太理解为什么lag(1)取两个不同的值
页: [1]
查看完整版本: 关于dde23求解时滞微分方程问题