人口增长模型及实现(附MATLAB代码)

人口增长模型及实现(附MATLAB代码)

问题

一只游船上有800人,一名游客不慎患传染病,12小时后有3人发病,由于船上不能及时隔离,问经过72小时,患此病的人数。

思路

假设游客在船上均匀分布,与患者接触的人都有一定几率患病,此模型中认为患者上、下、左、右四个单位为与患者接触的人,而患者分布在每一个单位时间都会变化,由此可得以下代码:

n=800;%总人数
ts=12;
fs=3;
t=0;
f=1;
j=1;
jishu1=1:72;
jishu2=zeros(1,72);
%接触患病模型
cells=zeros(25,32);
id=randperm(800,1);%初始病人位置
cells(id)=1;
heng=ones(1,32).*0.5;
cells=[heng;cells;heng];
zong=0.5.*ones(27,1);
cells=[zong,cells,zong];

while j<72
    i=1;
    while i<918   %接触患病
        if(cells(i)==0)
            if(cells(i-1)==1||cells(i+1)==1||cells(i-27)==1||cells(i+27)==1)
                if(rand<(3/48))
                    cells(i)=1;
                end
            end
        end
        i=i+1;
    end
    j=j+1;
    
    %患者运动
    fn=length(find(cells==1));
    ids=randperm(800,fn);
    ce=zeros(25,32);
    ce(ids)=1;
    cells=ce;
    heng=ones(1,32).*0.5;
   cells=[heng;cells;heng];
   zong=0.5.*ones(27,1);
   cells=[zong,cells,zong];
    jishu2(j)=fn;
    imshow(cells);
     hold on
    pause(0.1);
end
hold off                
plot(jishu1,jishu2)    


结果如下:
《人口增长模型及实现(附MATLAB代码)》

    原文作者:传染病问题
    原文地址: https://blog.csdn.net/weixin_44055664/article/details/84954501
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞