QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5687|回复: 0
打印 上一主题 下一主题

数学建模之传染病SIR模型(新冠真实数据)

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2021-6-22 15:35 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    6 ]5 P2 e# e3 z% B! k/ V( b; c8 ~数学建模之传染病SIR模型(新冠真实数据)
    . w( k' G& n+ U: q5 U/ N- s传染病模型的基本问题
    5 g& K4 ~& O. {% x$ e! }描述传染病的传播过程* w$ `* O" B  p' T
    分析受感染人数的变化规律1 P& n5 _& A( w
    预报传染病高潮到来的时刻
    0 F: |# T7 @) r& S+ i# ^" }$ D预防传染病蔓延的手段0 F2 m7 c5 O4 B8 b, ]% z
    按照传播过程的一般规律用机理分析方法建立模型
    1 d7 v- d" `' A6 c0 n# I8 t4 w注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
    3 S  f4 h1 h5 o# }! H2 d3 T* x
    9 u: g6 y: o$ \/ A- z1 ]

    ; v: D" S& Q6 K9 F建立模型# T' N$ {' s1 @! T9 `' v
    模型一* \6 U8 ]' _6 W7 d
    假设:2 t% W& |( L- @) ~# s

    7 B$ G. W4 @/ s
    0 B* ?! ?, m: t# r; h
    设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化)
    + s! D, |( R; P0 P+ L8 m0 M* k设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ( \! v! H6 i! W! J8 }
    模型:
    * c# `; U+ S$ R+ \单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即) o9 {8 Q; G8 g" u3 s1 U( t; g
    : ?7 H0 e; }7 ~8 q' e# Z) }7 N7 A  T

    2 a9 I( j' D& U$ ei ( t + Δ t ) − i ( t ) = λ i ( t ) Δ t i(t+\Delta{t})-i(t)=\lambda i(t)\Delta{t}i(t+Δt)−i(t)=λi(t)Δt
    - G# \) J2 d/ [9 I5 D( j2 W' Q一开始的感染人数为i 0 i_0i
    6 V: j9 s( ?( P" z0
    $ ^2 N9 E9 ]- @, O1 a; C7 E7 t​       
    3 ~5 @3 P- x' A) @2 N  J% F& t4 Q 0 K3 I9 L6 L+ l  e$ q, J
    i ( 0 ) = i 0 i(0)=i_0i(0)=i
    . i8 {5 q' B6 W1 S' x4 g0# ?. h6 N: N9 x- l
    ​       
    ) q; }# b( P2 e& P" } 6 f6 x- s4 p' b* Q, @, e6 ?
    解微分方程可以得到
      Z, t! W. q: p" q/ ci ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i 8 u) U! e! D+ r8 R  f+ |$ W
    0( D. G# @$ B' u+ D$ H) N
    ​       
    ; U: `* }# a3 m) r' K+ i* `. D e
    & ]; p; s9 Z: }: ^' t2 ~. qλt
    7 V, X: O/ A7 g& Y0 ? % N! z! l7 g" b$ A4 l4 W
    所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
    8 C5 {$ U: ^3 |) y. g/ J& i6 `3 I: W当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题
    6 r" t* L# b  o2 q: n. e) g* u- o  o, r. s( i9 o. _* X9 [( w0 U
    5 [) @# L) c1 f% }
    模型二3 c/ M; ?8 {& s6 [3 f
    假设:
    . v8 ?$ R/ |8 ~5 T
    # e* k% Q# c, U5 v! d5 S
    : V! c8 ?3 y. T( E
    将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).1 p1 H  h. V9 p+ }6 t# m" _
    总人数N不变,时刻t健康人和病人所占比例分别为s ( t ) s(t)s(t)和i ( t ) i(t)i(t), 有s ( t ) + i ( t ) = 1 s(t)+i(t)=1s(t)+i(t)=1
    ; h$ q6 O6 g4 E7 S" D5 _' c# e" v& b每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.
    ; }- i( [! Z0 z) H: _4 F建模:
    3 N# p+ z1 r" o2 x3 D% U每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt6 h0 l5 O3 B* y* b' \. Y% `

    4 n6 i0 A- D5 t3 I5 r
    ' y* F" z! \% t' O4 `
    Δ t \Delta tΔt除过去,两遍N约分得到下面,
    * J' x- J' f% e- x9 z- ^, K! G
    - R6 B4 T* A6 E! \0 w- H2 i
    : ]! Q( K& ^2 S" B. K# c( B1 p
    MATLAB解一下这个微分方程. m! d( D* z# u0 l- I5 W6 l

    # M( `$ ]: A8 F" d5 g
    " {6 {! m9 L$ R4 L" F& O, S: j
    y=dsolve('Dy=n*y*(1-y)','t');
    , e9 B1 g9 Z7 y& J: r1 e- X
    7 _8 @+ `/ l7 H* h# i8 ^
    ) n# A# M. R8 z4 D- H
    y =! s: a# T0 C, u) b5 t
    -1/(exp(C1 - n*t) - 1)* t  X* J; F7 D6 m* I4 \+ R. l) A; K
                          03 _8 _& O8 a8 L7 c- P- E( {( S% ]
                          16 G8 \8 C" Y, h3 [
    1
    " P, M2 T( W  A8 P0 ]- h! n  F5 z2
    4 o3 J% ?! r6 i; K$ j8 n3
    * P" m9 E! r5 V, n1 _# X4# Q8 L) O" B7 V8 {
    5
    5 `+ i: p( y0 G' ~0 R7 C: y6
    4 [6 a5 o+ \- `* C写规范点就是这个函数
    - s$ N8 q1 `& o' _
    1 L9 q" M" i& C' a/ I; n6 U8 p
    7 s; V; ~3 E" ~* D4 C* D
    函数图像大致为
    ; ]9 j) {9 Z. ]% }% V) q6 k7 c; }+ P8 }% `  Q$ r$ P3 K4 V
    6 m; l, F8 F* u* R: G. ]( b
    可以看出t = t m t=t_mt=t , U0 G6 \" W2 }: _# R3 M
    m7 J' W, ?' r0 D: Y
    ​        ; ~- C, m5 l8 t) G4 I# T
    时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt
    - e" m& x+ P5 T9 ?6 n& @m
    0 `3 {, U$ W3 n2 f: @​       
    8 h5 H; E2 h7 I+ k. `. r9 H 是可以求出来的
    * j) e, O& S% K" f9 S" X9 i7 `1 L
    , Y+ M" Q! Y: |% K9 }% T( M

    * L& G# \3 J3 c+ F' }再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1  {- k! V+ c$ O$ a) H- B9 |
    病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三
    1 J( O# O$ q( h$ Z3 G" x% ?( d
    4 Q! X; [( v9 c: v& t
    9 `2 O! M$ B6 N0 _& F/ _% K
    模型三. }0 ?) I& t# N. x1 N% y
    假设:
      @& B+ ?) e0 K( K% B: ^/ V: b6 c5 D& I& O0 z' x- O
    8 b7 h) ~" M) t. |7 V8 E* l
    传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。
    " {% X) Q" M3 v. W& _$ t4 K病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} 4 ^$ E& x$ i+ q6 J
    μ( z: `4 K5 S& @" a8 l
    1+ ^) N% x! M" Q' f) ?" t0 c5 ~
    ​       
    & b, ~4 l& D) V- ~' P; _ 为感染期,
    % Z! e: ]/ [9 F2 D8 ~0 W% _模型
    # `( V+ B9 M/ Y( E这是减去了治愈人数之后的新增人数
    5 j0 K! M( B; ?, Z! h. c" S  y7 k# C+ u

    2 r' E0 [" X" I0 H' V3 t+ e  A. L2 J2 {) z$ D/ Z- W
    6 G* n4 f9 e( p: }7 Z+ v6 Z6 [
    σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
    * A& _5 L& I1 u
    2 Z/ @- A% X8 ]2 f

    % C  `8 F  t' J9 N, F3 W可以画出上面的图形分析下
    3 s6 @& @3 W9 K# Q/ h; k  y+ M* ]$ U6 U9 @( S1 s$ {

    ) f6 r0 `3 ?7 \  q; o, A2 s对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− " L4 {6 }% Z1 L, Z: a7 m& _+ \
    σ
    ' g/ R* ~$ C  W2 a: C1  A. `+ N+ V8 \" ~9 b
    ​       
    ! F5 Z1 I) l1 a+ O+ B4 T) p- c! m7 P 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1−
    " C: P; x# a4 y5 y% {1 t$ ]σ
    + P6 B, U" G5 j7 A/ D1 p2 a1; O$ E, i1 y, U( ]; J
    ​        ; d. l6 l% x0 E. ]6 D1 O
    时,d i / d t < 0 di/dt<0di/dt<0,i单调递增,且在d i / d t di/dtdi/dt最大时,i的斜率最大,增速最快;当i > 1 − 1 σ i>1-\frac{1}{\sigma}i>1−
    ; n6 H- C3 f4 Qσ
    6 Y7 h& g8 a' ^8 W) F1+ o0 \9 l8 z: J4 F
    ​        8 Y7 Z* V' A, i2 H
    ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。
    6 I1 h3 L3 A: V' B8 X  {8 i
    ' j5 Q/ _# q2 {* a* X  ^4 K

    $ \6 ]9 U# R$ }& {5 e/ t当然我们也可以画出i ii随t的函数图像. K& G& X, S) m* Y

    ; d; b: l( e. }. @9 a

    & o0 g+ b* e. ^  n) |1 l: R6 V先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i , t6 b5 h7 ~. G1 t, i2 m+ D2 z
    0: G" _/ Y3 ]* i
    ​       
    ' X+ u. C# N5 Z >1−
    # n: b& G/ v; e5 ]- y# N, X* gσ: d% R. J1 ]0 {2 t
    13 d3 v* }4 [# ]: ]' F
    ​       
    9 {" ~+ n2 i, k  L( }; f8 o& u4 p+ f d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的,8 G1 g9 c$ E' I6 w
    若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
    1 Y; o0 h1 g- m$ ^4 `0 ~& G2 z# E9 B0& ~$ G- y  z! T! ~: ]
    ​       
    ( k" ^( n0 r7 L% {/ N5 J <1−
    ( c# H' L0 D8 I& M) ^3 l$ k- Zσ
    8 g5 t2 L$ ?; {# k3 M6 C1
    4 k( R: k1 k4 @4 o7 H​       
    6 ^5 o; f( v7 ?8 F ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
    " @4 W0 ]1 v" \  N# {+ W$ Q8 O: F( ~* o& g

    5 I* C3 Y1 e7 F. K! e# [. ~σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0
    ' d7 a. o' Q8 ?: @, v" N! ?2 u% z8 y6 P
    $ _- {& e+ X( j0 x9 z
    4 r/ N3 {, i7 T& e/ U

    9 v5 s0 o4 I4 ^3 S. q& p1 {7 ]% A3 }
    ! K. o/ F7 E4 Q) P5 `
    综上:& R+ v, t) N, i" N% y
    想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数.
    " v( I: Z% [; k* }7 H/ y$ f8 B, V+ h
    ( _6 r0 I( e& T# ]8 O- Z$ O
    9 \6 v' z. c5 W
    这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。5 S' ~$ o3 `0 M
    & V( q; n- a0 U- H
    6 b3 l: c) t% I2 t! b: d" `* W
    模型四 SIR模型* R' |0 i+ F) j# L$ H- f" \9 t
    SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:* ?- q  x: Y1 I5 e0 l% a

    # j! L; |/ t2 [8 }- w$ ]6 \- O

    1 Q0 n7 X  e  b1 x: k. ^1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。/ m) U( a" I  C% r! H2 Z' N
    , b+ W8 \/ d0 V/ @; A3 X! E. N0 S

    & `) U8 d+ X/ H, m- o$ c3 t9 }/ w0 A8 N0 Y2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。% S3 j1 I+ I- W' C: h+ F- x! B
    % A7 e. e4 q( C: d( e8 I+ ?
    $ c3 C& o( ~/ {7 P" `# L3 o$ K& ]
    3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。8 [# g) f4 h3 @( }+ T
    , o- q5 d* l' ]. e' O/ Q
    1 C1 q8 a: o/ m# c3 |: m# i4 A
    假设:
    / h* N4 q$ `) D, k, V* J) S3 `+ h  W6 X$ Q2 z
    % ?# z) z0 P. j5 P" V7 j9 u* T! [" k
    传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed).
    3 W9 @! K5 \& C' r/ V总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).3 S- W1 R. \  |1 z& D7 c; `
    病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
    ! U# \8 R7 @2 Q9 i, r" _μ
    $ Y8 v% g8 S' y, u9 k  E1 \6 Yλ
    , P$ ^( u) [/ G* H" b2 h- T3 q​        : j6 j: V0 X8 d2 z0 @

    . t7 m4 g5 g5 `' s! c建模:; T7 q  v* n  T) ?" d8 {; d
    s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=16 E6 X. d8 D& f
    这个就是病人减去治愈的人,和上一个模型是一样的0 ^9 e8 x. G; z1 W, `! @
    / t$ {6 j/ a; o
    + u9 }1 ?6 E1 W% ^' J! I5 ?- ]7 c
    因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是* b' V( M( |3 _% ~; q

    / F+ w/ t3 i) K

    0 _4 }5 n* v6 E- V将上式化简为:
    $ ]: g  u6 c; Y6 d
    1 |8 w6 z7 u" Q

    % S: U7 v1 g8 }6 u+ `3 xi 0 + s 0 ≈ 1 i_0+s_0\approx 1i
    ! O/ {4 ^( E2 j$ u8 ^. Z04 ?) E' X7 c' p# R. D) u
    ​       
    7 e+ Q$ c1 U8 Q! C! R! L +s
    ; i) U. k. K3 X; \8 ^) @3 L0" s* `: T0 E* n9 [
    ​       
    1 h0 x. R7 B3 @9 p$ q; Y( S) n# } ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
    2 N* X4 ~9 a1 }; ?$ a% w: x& c  ?0- ~( @$ Y* {" C2 l- {
    ​       
    . n% `4 X4 K5 h( p1 i 很小), I5 W/ ?+ ?" o9 l" T. [9 T% B( E; y8 i* l

    8 }; W. B6 _3 |3 K
    : k9 o8 q- g! T5 o0 w; x% y5 w: j
    关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
      Z" ^$ G' y' O- q1 B$ Q. Z2 E  ]! X
    + D% E5 J+ [  w0 a$ M
    这里我们先设λ = 1 , μ = 0.5 , i 0 = 0.01 , s 0 = 0.99 \lambda =1, \mu=0.5, i_0=0.01,s_0=0.99λ=1,μ=0.5,i
    8 E( \% G6 s2 ?" t05 b; Y+ P* J, v
    ​        # w8 @& m4 \* |) N* [7 v, v
    =0.01,s 4 r4 p+ `# L3 a5 e8 [! _
    01 I* f/ N6 z' R! ~& W7 ~/ b' l, K
    ​        8 Y4 b6 _$ q+ z. ]  l' H
    =0.99* w3 b; z" y2 {9 R, x7 E& t
    也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r ! U/ v$ i1 w$ \: J& H7 {
    0+ N& f& A" e. C4 m
    ​        6 [/ Q, g! y1 r0 m! H
    =0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s
    $ k" X5 @3 K3 K1 w0 F
    ' w5 {0 u  D' g: [( s* R7 i
    1 H; G& ]; m7 x8 [( p1 x+ p
    ts=0:40;- O8 d4 H4 f/ D. ~1 v
    x0=[0.01, 0.99];+ D( w% a0 I* I$ D% y
    [t,x]=ode45('ill',ts,x0);
    ) U* s( m* k8 i) P+ e& ], Ir=1-x(:,1)-x(:,2);5 l/ g; u  V& M( K. o' t  `
    plot(t,x(:,1),t,x(:,2),ts,r),grid! e1 }3 g0 E: }0 \- @& A% i
    legend('i(t)','s(t)','r(t)')
    ' C$ u! Q5 H4 s5 r0 s# p% y' f, I+ n+ T- |

    & G  F1 n0 S3 Y2 ~$ Bfunction y=ill( t,x)5 z( V! @$ M. q7 @; p+ c8 J
    a=1;
    / |. D: J) w) f, y/ Zb=0.5;
    . |7 Z$ Y% C0 D1 U9 q$ [. N* Ty=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];6 g% E. c6 s8 _1 j: i9 L! I
    1% y. z$ W- A* D5 p. V
    28 _2 |0 n5 O# u& h5 N) U
    3
    6 L6 z& Z( ]9 ^9 n4
    " ?+ K- j) e. G& {% ^" W$ k9 ^5
    ( R: L/ O! V3 B6
    $ S/ j. y3 B5 [: }4 Q7# j. o' ~. g4 x% U4 @7 _, I4 ^
    8- ~$ x5 u9 b+ I! C5 H( h/ I, d* Z
    93 q/ e0 k7 n1 B2 C! U9 f, l% w9 \3 d
    10
    9 N) q$ U$ `; X( D  v3 b111 r) B8 g/ E+ I  Z1 E( D8 M$ d

    , _6 M0 w9 y$ _+ l- p& b; M
    $ R5 C1 ^* C; n0 B( ?
    可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0.2 w4 E, f6 t: W# x! G3 i+ F
    结果分析' W5 W( ]6 ]7 I) o4 h
    先回顾一下参数
    * A  T, F5 ]0 ]9 m$ X; v接 触 率 λ ; 治 愈 率 μ ; 1 / μ   平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ   接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
    1 w( U* k# m2 s+ U) I, F& @/ b可以分析出:# R3 N; B" W6 |3 F  t- X& o* ]& G. ^
      |1 x% h6 I6 P: x& A
    ) I  K# Q# u; u# G7 ?5 g, P4 E
    随着卫生健康思想水平高,接触率λ \lambdaλ变小
    ' h5 l; k% ^& x% A; B1 g# [( m1 D6 v随着医疗水平的提高,治愈率μ \muμ增大
    & D' ^$ d* F! z; }, k# e( n接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播.
    1 P' n' }8 A7 c4 j) m5 e1 h我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果( k) g! m. _( y
    0 G' l) c5 n$ [; A3 x

    : B+ ]& ]& y3 r! Cts=0:40;$ ~4 x& c2 m, K8 a/ }
    x0=[0.01, 0.99];1 V, x6 {/ V0 H# C9 F
    [t,x]=ode45('ill',ts,x0);
    % I: _. F6 J2 a5 q1 i: Cr=1-x(:,1)-x(:,2);3 o$ ~' H* z# g2 Y
    plot(t,x(:,1),t,x(:,2),ts,r),grid
    . s5 U7 F* O( |legend('i(t)','s(t)','r(t)')7 j! i$ Y% t4 ?2 `2 R, X

    4 T5 T2 ?, A+ ?2 U

    - Q" m) l* N4 A; Ufunction y=ill( t,x)* k, o; ?1 B) R! R) @
    a=0.8;+ M+ W9 G5 Q, n8 a" d. O' _/ s
    b=0.6;; x! h- }. \/ p# n* I$ m: t$ Y1 v8 v
    y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)];
    5 L6 g1 Y7 z/ M5 e+ Z. v1
    6 K; K! {! G& {& V2
    ! R4 O# p. P0 M9 F. @5 k3+ ]+ J1 V2 _6 N5 C9 y$ ^
    4) V  Y+ Q6 G/ x7 X
    58 T8 x2 L. I4 \
    6$ E. |8 G' e! \: S% M! Q; V
    7
    / [' O6 v2 h; U+ f# s6 A$ h88 I" R- N$ k! ~# u2 w
    9( b  S* D$ }! Y# P  O4 u/ l$ ]
    10
    # b; y( U; ^* F6 B3 {; @% U1 |11
    " y8 s3 b$ m8 s% z
    ! K% R' o3 m3 ~* o

    ( W4 k& a2 p$ P综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
    " F* Y. Q6 T6 Q+ u* L3 m5 T. W1 g4 n; F' s9 I$ u+ _

    ' C6 k( ?' w9 y5 \实战建模3 H" T3 Q& i) [# c! H- P- }5 {
    数据处理
    & J! T( X" u! Q' X, k4 B5 A' L* T- ]0 i% {  \
    4 j- ~" k9 Y6 I% a
    首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征( s, w- @$ X0 U) v' G( ~, k( h: o9 o
    * E* w' O2 E; S2 K. t8 e+ ~. R& \
    , L+ s6 o, I9 B
    ' E/ X1 Y3 o! h. D7 }: M
    % U% d4 h1 V+ ^1 s6 D
    然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据, L1 \& y: m& p6 k7 G* y) a

    / t: |+ J, e$ E( ]" c
    # ~% q" S* H9 z

    # O" k9 f1 x" J! d9 E/ ]8 K( k2 \2 R

    ) ]& ^; _  e) K2 W然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征7 A% C+ e& G" z) J; h' u
    + D; `5 ]& ?* R. @6 T" ]
    5 j9 i; v' X6 B5 v
    对日期格式进行修改,值保留月和日,并与死亡人数的位置交换) R, [0 e' g* l* J7 M9 O& a0 o. ~# s9 s

    ' ^' Q' d9 |! f, ?: B

    5 e8 R- V1 ^2 M* q: N' m这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。
    & D8 l) X( q  `+ q  Q感染人数示意图
    & H) Z7 S; N, g- y' H) \% \+ X& I/ Y  q5 Y( P. Z: O
    & C9 U3 y2 N3 _
    治愈人数示意图/ l* i6 K& n1 u) S, [

    % d0 j  U" ?. K/ T% P9 y# e
    0 [- H8 [2 A& K6 b1 O, j4 x& N

    ) U8 y0 y  `$ L0 |& u2 C

    # r8 F6 c; t" F5 p7 o/ D3 j5 l现存患者数量图" G! @5 Y* y4 ~7 T
    + w' X8 {! i3 Q7 P" B3 N: t+ O
    7 |; S1 K7 z4 \9 b4 [7 [8 }" W
    死亡人数示意图# \; o, r6 f6 c; |( ]& Q4 b
    0 k/ O1 m) J' f% e5 A

    # M% a8 A  P: K  g2 z: b1 K  s- S$ c
    7 b1 x$ F0 [: S# T
    经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
    . ]1 {7 B6 z& ~7 h# e, _/ F$ S% D将上面清理过的数据存放到csv文件中
    + S7 @: o% ]; {. H: n  @% D/ W% ?" U/ c. g) B) l
    : ?  M+ b1 u( z% v$ J! I6 Y
    模型建立
    $ n. ?9 W% _7 R模型假设
    * Y$ ~0 e5 n" r# P( y/ v/ [经过上面数据的分析,我们大体可以进行如下假设:& N4 ~' m6 W" j) B
    1.由于不存在封闭情况,考虑开放体系。
    . e2 w( Q" i! h* @) O. I+ K2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
    9 {) c; d9 d  i4 v( F) r! @3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N" o& P# j, s- C) ?" a7 s
    4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。; n/ Z& A2 `( q
    5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.0 P. ]: S( n8 I3 ^
    6.设病人每天治愈的比例为 μ \muμ(日治愈率)7 k' }1 ]: R6 {) \
    7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t).
    4 C: b2 J( _8 Y1 O$ ~6 s5 G( E+ b% `
    ( {7 E3 F* [3 E* S9 e
    模型一% b# m6 I. w+ F8 f4 U( w) c9 y9 Q+ }
    2 y& U5 b. e+ l) l

    + i1 _$ W$ x+ y1 W' H2 ^  w分析可以得到移出者r(t)=治愈人数+死亡人数
    $ T: N. C3 s0 @/ Q. Y& A8 w% i通过python数据处理,我们算出了r(t)的值,并将其可视化3 F& G2 o; B  N% R; b; z
    ! g) P+ V% g3 V% v. N

    ; p. w9 }5 Y' I/ x% k' y, j7 v" H3 N# j# G6 [

    0 W3 ]/ p7 n, v9 R我用MATLAB对其进行了拟合,拟合图像为
    , M6 X& J; ?/ h; [( u
    , A) M: w/ B$ Z" W' N" T4 R

    " W9 K+ H+ N8 D
    . Z9 E. N$ Y0 f% @
    8 g. q& z4 _6 J
    % F' w5 a; F  s& T0 a

    8 ]+ H  S: `. F# l5 V分析可以得到患者 i(t)=患病总数-移出者
    - Q6 h: X& c& Q; [- D2 X可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示
    5 l! f3 v  g1 @  e, V* S% C0 z6 Z
    + W4 l7 E: p+ q* v

    5 O4 m  c) s, \3 N1 _5 T通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为# m) b1 |2 q- W

    1 z: c4 d; J6 }. }  O: z& t8 r2 g

    0 ]. p1 y2 s# I& Q; W! f& N% M8 Q3 B7 \, m3 o+ C

    0 W/ Y) B7 ^/ ~2 M$ u  V, c5 F
    / Z0 \8 H  T% Q7 @9 c! j. ^2 @
    为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有
    8 T* J: W$ F- t+ Y( v, X6 ?( n; v1 i( f9 o! Q

      e9 d" K5 k1 |6 Q) `& s/ n& |+ j可以推导出每日新增病例的表达式5 T3 a& Q+ w$ h" k! S: i

    ; l9 g$ L) O& C2 R

    4 b1 W/ A+ k; [+ Y9 r/ F# j: W% a* ]" J0 I

    ' L; q0 B- v  A6 r/ s$ ~% }& H" |3 E. w5 s3 `' a+ O9 K

    ) W3 c8 B# A% V. f4 w/ @0 u, V由以上两个公式可以推导出以下两个微分方程  j# G; a5 x- c" N, ]8 a( Y: c; F

    1 t; x( b2 q' W1 h
    2 q$ h$ j, ~4 U! {
    ! c& u4 ^5 s0 G& [; B/ I# `

    + A6 J  |9 o% P可以知道初值3 [! a- D9 w$ E3 v0 l! r' T2 _2 [
    i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i
    3 T+ S! x( u) Q( c2 _( F1 j" R! y; A0 H' }09 k( n/ ~& _. `% f
    ​       
    0 H/ h! U) N: S, t2 o! q; ^ .s(0)=s
    * I" H7 Z7 L1 ]& A0
    : b) y0 s" H# v) e​        . x* w/ [: L3 K6 ^: L# w( B8 x1 ~

    ' s( |0 M( t( X5 g因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:1 a( T; g' U0 j
    i 0 + s 0 = 1 i_0+s_0=1i $ S. m$ N$ ]# t& E4 ^& i
    0. p& w6 j) u" w' C
    ​       
    0 h8 m/ D+ E3 L. z +s
      ?4 H( J( u0 Z5 [# b( `: }# }6 x03 t. Y* x2 Q* c! ^2 A" w0 O7 K
    ​       
    # N* [5 ?" B5 r =1
    1 i0 h) D0 e7 @! B$ C4 t通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像
    ' v- ?8 s( o' J3 X6 C2 K; m* K8 b; F1 A9 R

    3 o' V% m% F" [
    / v. F9 C) _3 W% s# {
    , z9 H3 `% s8 ?  R- A
    MATLAB程序如下
    - ]8 o0 Q0 Q  s6 jts=0:40;
    9 T* G* `; Y' K5 Z4 `% r6 sx0=[0.01, 0.99];5 f1 E: i4 o( O8 X& f
    [t,x]=ode45(‘ill’,ts,x0);
    7 P" s, l0 X' Qr=1-x(:,1)-x(:,2);' ]+ U; a: P5 p3 |; Z
    plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2))
    # p8 U3 v+ i6 e7 a4 r9 xlegend(‘i(t)’,‘s(t)’,‘r(t)’)
    . R' ~& V8 n$ E5 I1 u& K
    0 T' E2 T5 p, H- p

    1 T) j$ ], F( K% C, y. v3 [6 `function y=ill( t,x)
    4 L/ l. W0 ?; m5 p! |0 W6 ea=1;
    * j6 o. D0 |, E% Zb=0.5;  k; A6 C, w* M/ B; b
    y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];* g- n! ~1 H5 O4 _0 w
    3 n$ N$ U, I1 M1 C% K5 S2 }- ?
    5 S2 u! f# h# ~2 T
    结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
    / d' {, M( d9 E: |/ r
    / X' m% L3 E7 T. V; J1 B' N

    9 R- @0 d* `4 H# a. V  A: d; `+ a- O: D' }
    模型二
    . o& `- ], M( a/ l$ o" |+ y: ], s8 j
    5 P; ~8 E1 t3 W6 h/ l, U( u

    3 a1 T) u7 [3 |, ~6 D实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..0 R8 [, f8 F# V
    (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)" Q; j( y" p+ Z  z7 r+ `1 t5 a; R
    有 d i / d t = λ ( t ) s ( t ) i ( t ) − ( t ) i ( t ) di/dt=\lambda (t)s(t)i(t) - (t)i(t)di/dt=λ(t)s(t)i(t)−(t)i(t)/ q# T4 ?8 R" A2 ^2 m) l
    因为s远大于i, r,s(t)视为常数,所以有( `- z0 h% s4 c7 {, P' z7 b, ?
    / y3 @+ T, b  n. y- K: I
    - t, [: |* T! w% U0 l
    ( q) W3 T# s* Z% S7 c

    4 U7 A* I8 f% J6 l0 C3 q/ b% d取差分近似导数7 D' X! `4 L$ _1 U- Z5 ?1 T& n
    6 K1 x1 _3 E" ~8 I% O$ ^
    ' M1 @* A9 j1 K5 p. s5 E8 F, y
    ' E0 E# H: g: t8 E8 s
    9 |3 L1 [* X7 L! \4 a9 q/ I
    我们可以先用真实数据对(t)进行展示并进行拟合
    6 ^) t  Q; q2 y; u) e
    , G4 Z* O/ a' J" L

    9 w% m$ ~- H4 t0 T0 e& g0 T7 L0 }2 {: P
    $ ?. I+ y7 h9 |5 Q
    7 J6 H9 W& W/ |0 G
    当然同样的方法对(t)进行拟合
    & t2 `: r2 p3 W6 }& h
    9 b+ o, ]8 u- Z6 B9 c

    7 Q2 ~# \5 [3 u8 R4 ^% j1 \1 M做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!
    & e% d" D" Q+ |) J冲国奖8 M; l( j1 d/ z9 W  x
    冲国奖
    $ Z* ^9 }2 V' t5 @/ ^# V冲国奖
    ' W- R$ q4 p2 o- {' e0 S9 `————————————————
    1 t0 ?7 H6 p) t+ \! D版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ r; Y( f* `& ?% x
    原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
    4 V5 q: t2 ~7 N$ V6 G0 ~: H: J7 w6 `& {1 p+ c
      q* W* K! b4 {0 x4 S1 l
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-8-4 11:14 , Processed in 0.397847 second(s), 50 queries .

    回顶部