人口增长模型及实现(附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)
结果如下: