声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3222|回复: 3

[综合讨论] 关于dde23求解时滞微分方程问题

[复制链接]
发表于 2010-7-26 00:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
各位论坛高手:
       你们好!
       微分方程描述:
    时滞微分方程.JPG

     我在使用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来限制解的范围,在这里先感谢大家的帮忙!
P.JPG
                                                 图1 p(t) vs time
b.JPG

                                                 图2 b(t) vs time

[ 本帖最后由 wjcper2008 于 2010-7-26 00:28 编辑 ]

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2010-7-26 16:29 | 显示全部楼层
没办法约束吧,你的方程的解就是这样的,如果想满足约束,只能调整参数了。
 楼主| 发表于 2010-7-27 12:10 | 显示全部楼层
或者是能否有其他方法可以使得 约束条件得以满足
发表于 2011-3-2 09:03 | 显示全部楼层
  if(lag(1)<0)
        lag(1)=0
此处不考虑分母的原因吗,不太理解为什么lag(1)取两个不同的值
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 16:47 , Processed in 0.173629 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表