首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页标签differential-equations

#differential-equations

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

这段代码中,sol的第三个参数是历史时间范围,第二个参数是初值。在这里,[2 2]表示有两个初值,即S和I的初值。如果将其改为[2 2 2],则表示有三个初值,即S、I和R的初值。因此,如果想要成功运行,需要将sol的第二个参数和第三个参数的长度保持一致,即改为[2 2 0]或[2 2 2]。以下是修改后的代码: 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,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'); 以下是运行结果: 图片 ... 展开详请
领券