xinxinxiaokeai 2021-05-07 22:59 采纳率: 0%
浏览 16

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循环出现问题,但不知道应该怎么改,想要第二阶段连接到第一段末尾,并且改变第一阶段的参数不会影响到第二阶段

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-05-08 19:09
    关注

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

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

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

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能