传染病模型及实现(附MATLAB代码)

本文探讨了在有限封闭环境中传染病传播的数学模型,并通过MATLAB代码实现了模型的动态模拟,展示了一艘游轮上从一名游客感染开始,72小时内疾病如何蔓延至更多人群的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传染病模型及实现(附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)    


结果如下:
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值