人群种类分为:病人,潜伏期患者,移出者,群体移出者,死亡者和健康者。
病毒传播模型的动态模拟
在治愈率相对较低与防控措施不齐全的前提下,通过Matlab对病情的传播进行了模拟。
图 五 7病毒传播动态模拟图(1)
病情初始,病毒在人群中爆炸式扩散,大部分人群被病毒感染。
% 在Matlab中模拟病毒的传播模型
% 数值的建立
M=100; % 尺寸大小
beta=0.05; % 感染率
gama=0.01; % 免疫能力
% 建立网格
y = zeros(M, M); % 网格x元素的意思是: 0是健康人,1使感染者,2免疫者
% 设置初始网格x,在网格的中心有一圈感染者,半径为10个细胞
for i=1:M
for j=1:M
dxx = i-M/2;
dyy = j-M/2;
d = sqrt(dxx*dxx+dyy*dyy);
if ( d<10 )
y(i,j)=1;
end
end
end
% 定义社区,也就是最近的8个邻居
lingju = [-1 -1; 0 -1; 1 -1; 1 0; 1 1; 0 1; -1 1; -1 0];
% 创造一个新的窗口
figure
hold on
% 主循环,迭代时间变量t
for t=1:100000
% 遍历网格 x 中的所有单元格,对于索引 i 1从n 和 j 从1到 n
for i=1:M
for j=1:M
% 在邻居之间来回走动,传播疾病
for k=1:8
i2 = i+lingju(k, 1);
j2 = j+lingju(k, 2);
% 检查细胞是否在网格边界内
if ( i2>=1 && j2>=1 && i2<=M && j2<=M )
%如果细胞处于易感状态和邻近细胞
% 被感染的传播感染的概率是beta
if ( y(i,j)==0 && y(i2, j2)==1 )
if ( rand<beta )
y(i,j) = 1;
end
end
end
end
% 如果被感染的人能够以伽马的概率从疾病中康复
if ( y(i,j)==1 && rand<gama )
y(i,j) = 2;
end
end
end
% 动态模拟
clf
imagesc(y, [0 2]) % 网格展示
pause(0.01) % 暂停0.01s
colormap([1 0 1; 1 1 0; 1 1 1]); % 定义0、1、2分别对应的颜色
% 如果没有更多的感染者,就停止模拟
if ( sum(y==1)==0 )
break;
end
end
%