matlab传染病拟合程序出现问题怎么解决?

delta=1/5.2;              %1/(1+exp(-c(3))), %%潜伏期
beta=0.0517;              %传染率
k=14;                     %传染参数
q=0.5;                    %第一阶段隔离率
q2=0.8;                   %第二阶段隔离率
b=0.1404;                 %Y→S的转化率
d=0.0056;                 %Y→H的转化率
m=0.05;                   %I→H的转化率                 
gamma=0.0714;             %恢复率



S(1)=3.718e+07;           %c(1)./(1+exp(-c(3)))
E(1)=0;
I(1)=0;
H(1)=0;
R(1)=0;
Y(1)=0;
ME=[1,0,1,2,0,4,5,11,19,23,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  
%%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数--23天数据
MI=[1,2,1,0,4,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; %%2020年1月14日到2月5日的每日累计出现症状的I的数量--23天数据

h1=100;
G=repmat(ME,h1,1);GG=repmat(MI,h1,1);  %% repmat 把数组转化成矩阵
T=G(:)';   %%2020年1月14日到2月5日的每天从湖北输入的潜伏者E的病例数
TT=GG(:)'; %%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数
n=length(T);
h=0.01;
for i=1:23
    
          S(i+1)=(-(beta+q*(1-beta))*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q)*k*beta*E(i)+(1-q)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m*I(i))*h+I(i);
          H(i+1)=(m*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
end
 for i=23:n
          S(i+1)=(-((beta+q2*(1-beta))*S(i)*(I(i)+k*E(i)))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q2)*k*beta*E(i)+(1-q2)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m*I(i))*h+I(i);
          H(i+1)=(m*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q2*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
          
 end         
  
 D(1)=I(1);
for j=2:length(ME)
    D(j)=I((j-1)*h1+1);
end
yy1=[1,3,4,4,9,13,19,20,25,32,46,56,64,68,73,81,92,97,99,102,108,109,118,119,126,127,128,129,129,130,130,131,131,131,131,132,132,132,132,133,133,133,133,133,133];
figure(2)
set(0,'defaultfigurecolor','w')
t=1:length(yy1);
plot(t,yy1,'b+','LineWidth',2','MarkerSize',4);
hold on
t1=1:1:23;
t2=23:1:46;
plot(t1,D(1,1:23),'r--','LineWidth',1.5);
hold on
plot(t2,D(1,23:46),'black--','LineWidth',1.5);
hold on

delta=1/5.2;              %1/(1+exp(-c(3))), %%潜伏期
beta=0.0517;              %传染率
k=14;                     %传染参数
q=0.5;                    %第一阶段隔离率
q2=0.8;                   %第二阶段隔离率               
b=0.1404;                 %Y→S的转化率
d=0.0056;                 %Y→H的转化率
m=0.05;
m2=0.01;                  %I→H的转化率
gamma=0.0714;             %恢复率



S(1)=3.718e+07;           %c(1)./(1+exp(-c(3)))
E(1)=0;
I(1)=0;
H(1)=0;
R(1)=0;
Y(1)=0;
ME=[1,0,1,2,0,4,5,11,19,23,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  
%%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数--23天数据
MI=[1,2,1,0,4,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  

h1=100;
G=repmat(ME,h1,1);GG=repmat(MI,h1,1);  %% repmat 把数组转化成矩阵
T=G(:)';   %%2020年1月14日到2月5日的每天从湖北输入的潜伏者E的病例数
TT=GG(:)'; %%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数
n=length(T);
h=0.01;
for i=1:23
    
          S(i+1)=(-(beta+q*(1-beta)*S(i)*(I(i)+k*E(i)))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q)*k*beta*E(i)+(1-q)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m*I(i))*h+I(i);
          H(i+1)=(m*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
end
 for i=23:n
          S(i+1)=(-(beta+q2*(1-beta)*S(i)*(I(i)+k*E(i)))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q2)*k*beta*E(i)+(1-q2)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m2*I(i))*h+I(i);
          H(i+1)=(m2*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q2*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
          
 end         
 
 M(1)=I(1);
for j=2:length(ME)
    M(j)=I((j-1)*h1+1)-40;
end

figure(2)
set(0,'defaultfigurecolor','w')
t2=23:1:46;
plot(t2,M(1,23:46),'green--','LineWidth',1.5);
hold on


delta=1/5.2;              %1/(1+exp(-c(3))), %%潜伏期
beta=0.0517;              %传染率
k=14;                     %传染参数
q=0.5;                    %第一阶段隔离率
q2=0.8;                   %第二阶段隔离率                 
b=0.1404;                 %Y→S的转化率
d=0.0056;                 %Y→H的转化率
m=0.05;                   %I→H的转化率
m3=0.03;
gamma=0.0714;             %恢复率



S(1)=3.718e+07;           %c(1)./(1+exp(-c(3)))
E(1)=0;
I(1)=0;
H(1)=0;
R(1)=0;
Y(1)=0;

ME=[1,0,1,2,0,4,5,11,19,23,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  
%%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数--23天数据
MI=[1,2,1,0,4,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  

h1=100;
G=repmat(ME,h1,1);GG=repmat(MI,h1,1);  %% repmat 把数组转化成矩阵
T=G(:)';   %%2020年1月14日到2月5日的每天从湖北输入的潜伏者E的病例数
TT=GG(:)'; %%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数
n=length(T);
h=0.01;
for i=1:23
    
          S(i+1)=(-(beta+q*(1-beta)*S(i)*(I(i)+k*E(i)))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q)*k*beta*E(i)+(1-q)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m*I(i))*h+I(i);
          H(i+1)=(m*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
end
 for i=22:n
          S(i+1)=(-(beta+q2*(1-beta)*S(i)*(I(i)+k*E(i)))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q2)*k*beta*E(i)+(1-q2)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m3*I(i))*h+I(i);
          H(i+1)=(m3*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q2*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
          
 end         
 
 N(1)=I(1);
for j=2:length(ME)
    N(j)=I((j-1)*h1+1)-20;
end

figure(2)
t2=23:1:46;
plot(t2,N(1,23:46),'y--','LineWidth',1.5);
hold on


delta=1/5.2;              %1/(1+exp(-c(3))), %%潜伏期
beta=0.0517;              %传染率
k=14;                     %传染参数
q=0.5;                    %第一阶段隔离率
q2=0.8;                   %第二阶段隔离率                  
q8=0.9;                  %第三阶段隔离率
b=0.1404;                 %Y→S的转化率
d=0.0056;                 %Y→H的转化率
m=0.05;                   %I→H的转化率
m4=0.07;
gamma=0.0714;             %恢复率



S(1)=3.718e+07;           %c(1)./(1+exp(-c(3)))
E(1)=0;
I(1)=0;
H(1)=0;
R(1)=0;
Y(1)=0;
ME=[1,0,1,2,0,4,5,11,19,23,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  
%%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数--23天数据
MI=[1,2,1,0,4,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  


h1=100;
G=repmat(ME,h1,1);GG=repmat(MI,h1,1);  %% repmat 把数组转化成矩阵
T=G(:)';   %%2020年1月14日到2月5日的每天从湖北输入的潜伏者E的病例数
TT=GG(:)'; %%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数
n=length(T);
h=0.01;
for i=1:23
    
          S(i+1)=(-(beta+q*(1-beta)*S(i)*(I(i)+k*E(i)))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q)*k*beta*E(i)+(1-q)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m*I(i))*h+I(i);
          H(i+1)=(m*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
end
 for i=23:n
          S(i+1)=(-(beta+q2*(1-beta)*S(i)*(I(i)+k*E(i)))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q2)*k*beta*E(i)+(1-q2)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m4*I(i))*h+I(i);
          H(i+1)=(m4*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q2*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
          
 end         
 
 O(1)=I(1);
for j=2:length(ME)
    O(j)=I((j-1)*h1+1)+15;
end
figure(2)
t2=23:1:46;
plot(t2,O(1,23:46),'m--','LineWidth',1.5);
hold on

delta=1/5.2;              %1/(1+exp(-c(3))), %%潜伏期
beta=0.0517;              %传染率
k=14;                     %传染参数
q=0.5;                    %第一阶段隔离率
q2=0.8;                   %第二阶段隔离率                  
q8=0.9;                  %第三阶段隔离率
b=0.1404;                 %Y→S的转化率
d=0.0056;                 %Y→H的转化率
m=0.05;                   %I→H的转化率
m5=0.09;
gamma=0.0714;             %恢复率



S(1)=3.718e+07;           %c(1)./(1+exp(-c(3)))
E(1)=0;
I(1)=0;
H(1)=0;
R(1)=0;
Y(1)=0;
ME=[1,0,1,2,0,4,5,11,19,23,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  
%%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数--23天数据
MI=[1,2,1,0,4,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];  


h1=100;
G=repmat(ME,h1,1);GG=repmat(MI,h1,1);  %% repmat 把数组转化成矩阵
T=G(:)';   %%2020年1月14日到2月5日的每天从湖北输入的潜伏者E的病例数
TT=GG(:)'; %%2020年1月14日到2月5日的每天从湖北输入的染病者I的病例数
n=length(T);
h=0.01;
for i=1:23
    
          S(i+1)=(-(beta+q*(1-beta)*S(i)*(I(i)+k*E(i)))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q)*k*beta*E(i)+(1-q)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m*I(i))*h+I(i);
          H(i+1)=(m*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
end
 for i=23:n
          S(i+1)=(-(beta+q2*(1-beta)*S(i)*(I(i)+k*E(i)))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))+b*Y(i))*h+S(i); 
          E(i+1)=(((1-q2)*k*beta*E(i)+(1-q2)*beta*I(i))*S(i)/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-delta*E(i)+T(i))*h+E(i);
          I(i+1)=(TT(i)+delta*E(i)-m5*I(i))*h+I(i);
          H(i+1)=(m5*I(i)-gamma*H(i)+d*Y(i))*h+H(i); 
          R(i+1)=(gamma*H(i))*h+R(i);
          % 新增出现症状的染病者的量--用于拟合实际出现症状的I数据   
          Y(i+1)=(q2*S(i)*(I(i)+k*E(i))/(S(i)+E(i)+I(i)+H(i)+R(i)+Y(i))-(b+d)*Y(i))*h+Y(i);
          
 end         
 
 A(1)=I(1);
for j=2:length(ME)
    A(j)=I((j-1)*h1+1)+27;
end
figure(2)
t2=23:1:46;
plot(t2,A(1,23:46),'c--','LineWidth',1.5);
set(0,'defaultfigurecolor','w')
xlabel('Time(Day)')
title('Shanxi Province')
ylim([0 240]);
ylabel('Cumulative  infected COVID-2019 cases')
legend('Cumulative infected data','model simualition','m=0.05','m=0.01','m=0.03','m=0.07','m=0.09','Location','Best' )
set(gca,'XTicklabel',{'1.14','1.19','1.24','1.29','2.03','2.08','2.13','2.18','2.23','2.28','3.04'})
grid on
hold off
drawnow

好像是SEIHRY公式下面的for循环出现问题,但不知道应该怎么改,想要第二阶段连接到第一段末尾,并且改变第一阶段的参数不会影响到第二阶段

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。