数学建模学习笔记(十七)传染病模型(SIER)

举报
zstar 发表于 2022/08/06 02:53:15 2022/08/06
【摘要】 传染病模型讲解比较清楚的是知乎这位博主,文章链接戳这在家宅着也能抵抗肺炎!玩一玩SEIR传染病模型 本文基于这篇文章进行记录和整理 对于一般传染病来说,都具备潜伏者(E),因此直接记录传统的SIER模型...

传染病模型讲解比较清楚的是知乎这位博主,文章链接戳这在家宅着也能抵抗肺炎!玩一玩SEIR传染病模型
本文基于这篇文章进行记录和整理

对于一般传染病来说,都具备潜伏者(E),因此直接记录传统的SIER模型:
在这里插入图片描述
模型公式:
{ d S d t = − r β I S N d E d t = r β I S N − σ E d I d t = σ E − γ I d R d t = γ I \left\{

dSdt=−rβISNdEdt=rβISN−σEdIdt=σE−γIdRdt=γI d S d t = − r β I S N d E d t = r β I S N − σ E d I d t = σ E − γ I d R d t = γ I
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧​dtdS​=−NrβIS​dtdE​=NrβIS​−σEdtdI​=σE−γIdtdR​=γI​

{ S n = S n − 1 − r β I n − 1 S n − 1 N E n = E n − 1 + r β I n − 1 S n − 1 N − σ E n − 1 I n = I n − 1 + σ E n − 1 − γ I n − 1 R n = R n − 1 + γ I n − 1 \left\{
Sn=Sn−1−rβIn−1Sn−1NEn=En−1+rβIn−1Sn−1N−σEn−1In=In−1+σEn−1−γIn−1Rn=Rn−1+γIn−1 S n = S n − 1 − r β I n − 1 S n − 1 N E n = E n − 1 + r β I n − 1 S n − 1 N − σ E n − 1 I n = I n − 1 + σ E n − 1 − γ I n − 1 R n = R n − 1 + γ I n − 1
\right.
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧​Sn​=Sn−1​−NrβIn−1​Sn−1​​En​=En−1​+NrβIn−1​Sn−1​​−σEn−1​In​=In−1​+σEn−1​−γIn−1​Rn​=Rn−1​+γIn−1​​

引入潜伏者传染概率,改进SEIR模型,
公式为
{ d S d t = − r β I S N − r 2 β 2 E S N d E d t = r β I S N − σ E + r 2 β 2 E S N d I d t = σ E − γ I d R d t = γ I \left\{

dSdt=−rβISN−r2β2ESNdEdt=rβISN−σE+r2β2ESNdIdt=σE−γIdRdt=γI d S d t = − r β I S N − r 2 β 2 E S N d E d t = r β I S N − σ E + r 2 β 2 E S N d I d t = σ E − γ I d R d t = γ I
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧​dtdS​=−NrβIS​−Nr2​β2​ES​dtdE​=NrβIS​−σE+Nr2​β2​ES​dtdI​=σE−γIdtdR​=γI​

迭代公式为:
{ S n = S n − 1 − r β I n − 1 S n − 1 N − r 2 β 2 E n − 1 S n − 1 N E n = E n − 1 + r β I n − 1 S n − 1 N − σ E n − 1 + r 2 β 2 E n − 1 S n − 1 N I n = I n − 1 + σ E n − 1 − γ I n − 1 R n = R n − 1 + γ I n − 1 \left\{

Sn=Sn−1−rβIn−1Sn−1N−r2β2En−1Sn−1NEn=En−1+rβIn−1Sn−1N−σEn−1+r2β2En−1Sn−1NIn=In−1+σEn−1−γIn−1Rn=Rn−1+γIn−1 S n = S n − 1 − r β I n − 1 S n − 1 N − r 2 β 2 E n − 1 S n − 1 N E n = E n − 1 + r β I n − 1 S n − 1 N − σ E n − 1 + r 2 β 2 E n − 1 S n − 1 N I n = I n − 1 + σ E n − 1 − γ I n − 1 R n = R n − 1 + γ I n − 1
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧​Sn​=Sn−1​−NrβIn−1​Sn−1​​−Nr2​β2​En−1​Sn−1​​En​=En−1​+NrβIn−1​Sn−1​​−σEn−1​+Nr2​β2​En−1​Sn−1​​In​=In−1​+σEn−1​−γIn−1​Rn​=Rn−1​+γIn−1​​

matlab代码:
源代码:

clear;clc;

%--------------------------------------------------------------------------
%   参数设置
%--------------------------------------------------------------------------
N = 12700000;                                                                  %人口总数
E = 0;                                                                      %潜伏者
I = 1;                                                                      %传染者
S = N - I;                                                                  %易感者
R = 0;                                                                      %康复者

r = 20;                                                                     %感染者接触易感者的人数
B = 0.03;                                                                   %传染概率
a = 0.1;                                                                    %潜伏者转化为感染者概率
y = 0.1;                                                                    %康复概率

T = 1:140;
for idx = 1:length(T)-1
    S(idx+1) = S(idx) - r*B*S(idx)*I(idx)/N;
    E(idx+1) = E(idx) + r*B*S(idx)*I(idx)/N-a*E(idx);
    I(idx+1) = I(idx) + a*E(idx) - y*I(idx);
    R(idx+1) = R(idx) + y*I(idx);
end

plot(T,S,T,E,T,I,T,R);grid on;
xlabel('天');ylabel('人数')
legend('易感者','潜伏者','传染者','康复者')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

稍作改进,反应每日新增病例情况:

%--------------------------------------------------------------------------
%   初始化
%--------------------------------------------------------------------------
clear;clc;

%--------------------------------------------------------------------------
%   参数设置
%--------------------------------------------------------------------------
N = 29000;                                                                  %人口总数
E = 0;                                                                      %潜伏者
I = 1;                                                                      %传染者
S = N - I;                                                                  %易感者
R = 0;                                                                      %康复者
m=1;

r = 25;                                                                     %感染者接触易感者的人数
B = 0.03;                                                                   %传染概率
a = 0.1;                                                                    %潜伏者转化为感染者概率
r2 = 3;                                                                     %潜伏者接触易感者的人数
B2 = 0.03;                                                                  %潜伏者传染正常人的概率
y = 0.1;                                                                    %康复概率

T = 1:182;
for idx = 1:length(T)-1
    S(idx+1) = S(idx) - r*B*S(idx)*I(idx)/N(1) - r2*B2*S(idx)*E(idx)/N;
    E(idx+1) = E(idx) + r*B*S(idx)*I(idx)/N(1)-a*E(idx) + r2*B2*S(idx)*E(idx)/N;
    I(idx+1) = I(idx) + a*E(idx) - y*I(idx);
    R(idx+1) = R(idx) + y*I(idx);
    m(idx+1) = E(idx+1) + I(idx+1);
end


x=1:182;
plot(x,m);grid on;
xlabel('day');ylabel('Demand for drugs')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

文章来源: zstar.blog.csdn.net,作者:zstar-_,版权归原作者所有,如需转载,请联系作者。

原文链接:zstar.blog.csdn.net/article/details/113471743

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。