24小时热门版块排行榜    

查看: 854  |  回复: 1

benling1025

捐助贵宾 (初入文坛)

[求助] 求助修改该matlab拟合带参数的时滞微分方程程序

clear all
clc
tspan = [2 4 6 8 10 12 15 20 25 30 35 40 50 60 80 100 120 140 160 180];
x0=[300; 410];
k0 = [1 1 1 1 1 1 1 1]*1e-2;   
lb = [0 0 0 0 0 0 0 0 0 0];
ub = [1 1 1 1 1 1 1 1 1 1]*1e5;

data=...
[
2  238  410
4  224  408
6  211  315
8  202  294
10  198  243
12  190  322
15  177  282
20  160  247
25  151  253
30  135  241
40  123  209
50  111  173
60  99  121
80  85  118
100  74  47
120  88  44
140  80  60
160  77  63
180  83  58
];
yexp = data(:,2:3);
[b,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(@ObjFunc,k0,lb,ub,[],tspan,yexp);


function f = ObjFunc(b,tspan,yexp)           % 目标函数
sol=dde23(@ddefun,[20],@ddehist,tspan);          % 20是时滞
f = [(ysim(:,1)-yexp(:,1)) (ysim(:,2)-yexp(:,2))];



function dydt=ddefun(t,y,Z)            % dde函数
ylag1=Z(:,1);
dGdt=-b(1)*y(1)-(b(4)*b(8)*y(1)*y(2))/(y(1)+b(8))+b(7);
dIdt=-b(2)*y(2)+b(6)*ylag1(1)
dydt=[dGdt; dIdt];


function S=ddehist(t)        % 初始值
S=[300;410];


这段程序是我根据论坛上类似的ode45的帖子中的程序段改编的,但是不知道为什么函数换成了dde23就没法跑起来了,求高手指点!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

尘年墨客

新虫 (初入文坛)

朋友您好,我最近在做时滞微分方程参数估计时也遇到了跟你一样的问题,把ode45改成dde23后就是运行不了,不知道您最终解决了这一问题没有?如果解决了的话,不知道可否不吝赐教一下,谢谢您!
2楼2015-06-12 16:27:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 benling1025 的主题更新
信息提示
请填处理意见