首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何在MATLAB中使用deval和dde23来避免这个错误?

我如何在MATLAB中使用deval和dde23来避免这个错误?

提问于 2023-04-25 16:35:23
回答 1关注 0查看 194

编写了一个带时滞的传染病模型,

但是用MATLAB模拟时出现了以下错误:

代码语言:js
复制
出错 dde23 (line 217)
f0 = feval(ddefun,t0,y0,Z0,varargin{:});
出错 file(line 23)
sol = dde23(ddex1dez,[0.1, 0.3],[2 2],[0, 50]);%dde23(@....,tau,history,tspan);

以下是代码:

代码语言:js
复制
clear;clc
%初始参数设置
N = 1;%人口总数
I = 0.01;%感染者
S = N-I;%易感者
R=0;%恢复者
a=0.3;%感染率
c=0.1;%恢复率
d=0.08;%无知投资者免疫率
e=0.1;%移出率
f=0.5;%由感染者再度进入易感状态的概率
g=0.3;%免疫丧失率
b=0.1;%常数输入
m=0.2;%调控
n=0.2;%调控
h=0.08;%无知投资者免疫率
 ddex1dez = @(t,y,Z) [b-(a*Z(1,1)*Z(2,1))/(1+m*Z(1,1)+n*Z(2,1))-(e+h)*y(1)+f*y(2)+g*y(3);
   (a*Z(1,1)*Z(2,1))/(1+m*Z(1,1)+n*Z(2,1))-c*y(2)-f*y(2);
   c*y(2)+h*y(1)-(e+g)*y(3)];

sol = dde23(ddex1dez,[0.1, 0.3],[2 2],[0, 50]);%dde23(@....,tau,history,tspan);
 %[0.1, 0.3]是时滞,[2 2]是初值,[0, 50]是时间范围
figure;
% plot(sol.x,sol.y)
hold on
plot(sol.x,sol.y(1,:) )
plot(sol.x,sol.y(2,:),'-.' )
plot(sol.x,sol.y(3,:) )
hold off

title('时滞微分方程组');
xlabel('time t');
ylabel('solution y');
legend('S','I','R');
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档