* |9 Y& @# D$ G 数学建模之传染病SIR模型(新冠真实数据)8 B3 U0 q9 k; N% P3 e
传染病模型的基本问题 # f+ t" @5 w7 k/ @2 X9 `3 e( M描述传染病的传播过程 % v- x. {8 |. ?; L. O分析受感染人数的变化规律& f) h$ f+ y) O, Q' y( z
预报传染病高潮到来的时刻 ( i- j2 K" N8 Y7 n7 E% t5 E预防传染病蔓延的手段 3 c6 U, h, t8 j' W4 N9 M K s" i按照传播过程的一般规律用机理分析方法建立模型 $ T: q! V/ o) N h, A4 K注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.& e; e& o8 M8 @- @/ E; _2 S" \
: P2 B* |4 N4 b
# }9 R9 J7 c5 h% j' M建立模型- H/ O8 R7 k' E
模型一6 ~9 r5 v$ ~5 H
假设: + F# Q5 {( ~3 P$ J# ` - l( ^* X$ W$ d7 p& i& z A1 w1 G7 m2 ~" P! F
设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化) ) U- U! o) i7 T% M5 F设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ+ S; t" `9 o# i | e
模型:0 u1 U$ B w% ^4 V1 J9 i
单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即 3 ~8 F* [: c ]8 ] n4 T5 S! q* J+ q7 ~0 ?* l7 v: S" \
5 V+ e% v( @0 f1 C" qi ( 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 M: w0 {& V1 f
一开始的感染人数为i 0 i_0i / M9 _5 q% o" k5 j% j7 u0 9 l6 {6 w' r4 K, J$ r' k( O% }- { ' W% t; I4 f V4 }% }
0 B3 u& E6 Y! Q
i ( 0 ) = i 0 i(0)=i_0i(0)=i % T. c9 w* o* v7 M4 C0 6 U! r$ @) J; b. V7 a 1 W! j: |; W" ?! C( ~ 0 u( ]8 ]( O0 R* `& E1 P0 x解微分方程可以得到 * B* |$ g a1 S2 ] B6 K" ui ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i ( C0 k( z- d! D5 u. Q0 ( L9 ]! D. A; o : G3 D$ J$ n5 F P0 z. H/ t
e 8 S7 Q: k0 y- F4 A) Y8 Z- d. Qλt$ X" }0 X( P7 M# f# Q' w7 L% J
" X9 q& i; n, l" ?' o X T
所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞ ( A2 R& o g( `8 ~" l+ E; F当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题' c f7 B: B# j' P K5 l# o) F
" E) U2 {( C% q- _& d5 [+ u; D$ K; ]* E3 P. {: A1 x6 V! }4 ~+ G
模型二0 X6 E- B, S' [' n5 V$ k' p
假设:- \0 Q! t" w; ]3 [5 I" |2 t% T6 u
; ]8 _; M T, b/ v6 g$ P7 C* Q 0 q4 D" l1 } | g将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人).) g8 n- h( c" a3 T5 j$ J/ p( \# j1 K
总人数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 y1 m. U) n) g/ b* T7 i每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病.2 z8 U- a0 d, d0 @
建模: ( R0 D7 R- j" P. H3 u每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt! A8 ?3 Z. E7 \* {+ W; j
. \& F3 D/ y+ B2 x9 p0 p3 } 8 Q# g6 Z$ [0 d' _. mΔ t \Delta tΔt除过去,两遍N约分得到下面,6 W2 F$ W, M4 ?% x" Z# A8 l+ @- m
* K3 P9 w: m1 @) \/ A s
( w- U- J8 K) x5 z8 q, o
MATLAB解一下这个微分方程" V% |* X8 |2 }$ l7 o3 d
+ W6 a; z) q7 `7 v+ p + S8 b, p; ~4 p3 D. Z b% fy=dsolve('Dy=n*y*(1-y)','t');% j% `- Q1 M6 h V3 `: H- I* b; y
/ J; I9 I- B/ H: p
: C, l! O* g' c4 H- g9 d$ S; Wy =. K* [1 W) w# s* F. N# R A
-1/(exp(C1 - n*t) - 1)8 H9 t7 s9 S( \
0 . y# q5 Y2 b1 d6 Z2 `8 d 1* a5 H7 D* O6 F, G+ e1 `! \
15 A o, R, V! L
2 4 W/ S, h. j5 U" j6 ?5 ~6 [3 % P% N5 e. a# f8 z* ]6 d: |4 ) T* y4 f+ l/ _) W6 i- L) p53 x" O3 f8 ?/ d' I
6 6 S9 W# E4 A' p写规范点就是这个函数 {: t* |0 g* h, a+ ?
" o& ^/ S# v c ! F$ l0 q0 }0 } u函数图像大致为 ) @; L) J0 @* @0 }0 ^ , \3 i* Q3 {" x# \ 6 d/ d- k; u, x9 N可以看出t = t m t=t_mt=t 8 m1 L1 {: `5 b \, H7 M! F
m+ V+ K0 s1 [4 F# Z* v6 t
8 F9 h# @2 a" J: A9 W. \' v+ K 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt 0 [4 L \8 h- i
m9 E" Y! C( u* }: W
( v: {7 r% z) T- f
是可以求出来的% L" ?3 u1 g7 p4 T/ a6 n
$ ?$ I8 X! n: m2 I/ \4 w. m2 g2 h7 j
再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1 w; g2 A8 S( }/ y
病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三 6 `# f# U0 x, m; m* L7 {0 T B5 x& X [6 {8 C2 `' E- Z
& _- o D! b0 w& d: n模型三0 h2 H2 }' K a
假设: - y$ T1 s: ^7 h$ G3 {: J / z2 w1 N- N5 U6 N; W7 D9 F. X& P# s8 ?6 D, ~9 i3 Y
传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。1 e4 o* H% `' B& M& M+ _ l7 e
病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} 6 M3 m* n& L5 r6 k
μ 0 Z1 d" N _5 e- ~1$ S: s+ s- b) w5 T0 d3 t8 s7 j
* Y5 [. m. H# Z/ M& c, R 为感染期,( L7 V$ E! o* u
模型% r V+ V$ V. X
这是减去了治愈人数之后的新增人数- O. K* M) o1 n, E% L
9 b6 H: X0 I4 t. f/ k
4 l+ A P) x2 g2 L' Y& H j% X e " p" e3 f6 M f' h. b4 A/ u- B8 o9 C% ~( u- {5 R
σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数 9 d! { r9 o2 Y! _3 I* _2 M7 m. m! i S# k& Q
* ` S' o7 N1 ?. J/ v3 B7 f可以画出上面的图形分析下# k% F7 E5 Z3 Y4 {. C2 O
# {- ?& O0 Y+ Z B; @8 M2 w+ w% B( M* b, D' C3 E
对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− " I7 L! P7 S/ @8 w0 Bσ$ k* {0 F4 [4 Z. g$ [
1 ) ?, x: y" B! S1 y6 x# | 5 M! o* q5 F4 i1 u5 x* f9 ~2 d. m
时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− 0 ?* ?, D& B2 w4 R$ P) |4 I
σ2 ?+ ~8 g4 s$ Q }
1. u/ ~8 ~/ s! F2 T1 J0 U
: i! g2 ]0 D# E
时,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− 5 L+ o1 Q& \6 a! b3 q! A& C- ?- ^; Qσ6 `6 p- J7 V) N7 x* p
1* a% _7 \$ q* y+ f) W
; f. g7 y2 b S u ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。) d, s0 q, S. S8 G. N
5 e3 n4 b' X: i
1 \' M" {7 v" {4 D( I3 I+ S2 j- @
当然我们也可以画出i ii随t的函数图像; c2 n3 Q9 {7 R- j' _
3 B5 A6 n- ^9 @
3 Q5 t6 p1 n. y) q先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i - T1 t" Q z) J2 ~0 l$ }; _$ K( L& L8 T0 ?# J 9 B K: I& |& Q6 t# p4 H& w7 Z: r >1− 2 Z3 m1 B! W. o" q x+ b) k
σ 1 |9 E' R# W7 l( ]. F3 Z1 2 y# t& D2 q, [& g. M . o9 I9 ~. M' a3 b
d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的, + Q l, p! l* R- J2 L9 R8 W: o% ?若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i + a# l8 D# d* B4 F02 Z6 }) G. b6 q) l- Z, b
) U) I3 D d1 I* ^" z <1− ! |# w! t' {: t3 m. J
σ 5 y" n1 g: j; g$ _- V. l3 D! R- q1( c, a8 |) \% Z# ~' P7 l9 _8 c
- u2 @! D6 k: q' c3 m& S7 _ ,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长& F( ~" U5 Z- [! c3 Z; _. z# p0 D }# s
; b/ e1 E( P3 W: j
( q5 J" ` H3 j& u8 o
σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0: H8 H0 V4 q4 x2 d$ l( Y
! o$ M- ]& O$ G7 S 4 C* |8 \) l9 f' l7 c7 S 4 }' {) d* {7 h* g) }4 `/ |! n0 y' X& d) a- z
综上: - L# K/ ~- V' q0 [' v1 I想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数. / v6 i+ G2 y# Y2 h7 h 3 `% [1 Q# P3 _! ~& U0 A- J) l7 O- ?& p) J( e
这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。8 B8 Q+ p- Q, p( h- E. ]* m
2 ?8 [3 d! n+ i i" k $ b, P5 w5 i9 ?' P c# J. y模型四 SIR模型 4 A9 S6 l& y" o8 @6 r) ?' b9 XSIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类:1 l- _: U* {; I/ X' a
! [, S9 o1 ]4 g& k' C2 t
. Z; \2 U2 m- O4 z1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。* K% E6 O0 u c: ^$ A4 _1 F
; H2 @( h4 s! p" X$ N , c0 M K; L- s/ h2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。 : O7 V) }1 C$ W: M. s ' C- _- ~! @5 L* E3 o2 G: ^5 [9 e' Q# X4 ^7 S; q2 L
3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。 # k6 P( ^) G: |, d, ? % @8 @7 j( c, o# R' f# z% u3 V* O% @3 C6 ~: ~; L
假设: ) r" |" \* z! S% m" G3 C- }1 l) |) r, h
# {' R% k1 k& i1 h
传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed). ; l, C/ d9 J, I总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t). 8 e6 r2 L% V% y1 p* \; O+ e* y病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= 8 K5 w4 |% V8 l# n% ?# ]0 d
μ3 t! n0 ^8 O0 a% d+ L
λ + P6 d! O& h4 H5 D ( w8 P( F! G. Z, S# E$ M 8 V- c* |8 o) @
建模:8 Z5 V+ C; l- q1 @& q0 a
s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1% U. n1 _; s3 d1 r+ M7 {( ^+ N
这个就是病人减去治愈的人,和上一个模型是一样的 * P0 a D, v% e! @7 L! G, F6 o . f6 w9 [. y2 U2 A6 H4 _3 _1 y$ P( W
因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是 4 J! s* m& Y- o9 ^ - r: X$ c1 E- y Y 0 `( w# L9 c' L, W" V0 T将上式化简为:) h6 T! p! u" p) Y* s
1 ^, F+ b) Y* k. z
6 [& B8 `" m0 e4 y " [" k+ {1 b8 D0 `, i: \ x2 Q+ @
/ e, y0 I- I/ F
为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有9 r( S/ t. Y* U4 j# t, ]% t
# [+ o* D, P5 j* D Y. l/ `
# F! o- m( K# i4 e. V
可以推导出每日新增病例的表达式 & |, p7 J I) s$ l1 c/ K# d" W1 ?/ l3 Q3 N* z' K7 E+ i& a% ~! @
" J! _5 r" M5 n! y {9 e
1 f/ ]# G4 J4 k* f1 t4 ?1 | , M, ^2 c1 y2 d6 i( b& {, W) h / T) \, R6 s7 Z- n, U6 b & H) W/ r4 F- s! W* Q由以上两个公式可以推导出以下两个微分方程 + ?: _; y6 w' q8 N' U* e5 ~ 4 v; a. F$ m6 M! C6 E* g; V2 ~ ^9 M7 V- r
) `* L& I; I' T) d% M2 j9 n/ L: o/ m1 Q4 y# [ F( A
可以知道初值, w# U& O+ K7 A
i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 6 v/ y. _0 e2 Z7 E2 v# g; ?0 i1 w$ l% W- J3 M 7 l/ {% q5 _, o9 i4 i
.s(0)=s ' y8 H1 K6 U% C4 E0& F1 s2 \, ?7 W. l$ N
$ d; ^2 d7 \6 y' i1 j @! c . h. M- |/ H J/ g2 [- |! w
因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:# y: ?9 K, } `) S, C) y6 M5 X- L
i 0 + s 0 = 1 i_0+s_0=1i . q, f* X6 L; h8 F* ^8 E
0 - l; H4 _! Z& F K4 p! Y * k: G6 _2 X8 A+ `, C1 t: Q
+s / l2 j! u5 s7 |' |+ V
0 1 x4 _8 j- h; s! b$ s 4 t* L$ i" K6 ?$ \
=1 8 p @" {5 T( Q: W6 x4 j& v" R通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像 ) B& R. u& Z) u+ e* o1 j" U B6 M K/ {% `
2 d( a+ f: q4 D3 D/ ~$ ` - S! H) I) P. j- ?* Q. ` 5 x: ]6 }3 g: _& O* z9 B9 v q0 dMATLAB程序如下 " T3 F- M, F+ l* O7 pts=0:40;4 ~; x' w- G$ n2 P
x0=[0.01, 0.99]; # P7 b! v5 z; `% U2 g1 o# c( Y[t,x]=ode45(‘ill’,ts,x0);% b1 j% x3 |8 @0 ]! g9 m
r=1-x(:,1)-x(:,2); $ O0 S4 o5 g9 Q% M/ C9 s( g+ U8 {plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2)) V) ^( I8 Z- D6 N
legend(‘i(t)’,‘s(t)’,‘r(t)’)) s/ R [' S0 v% B0 ]* J6 h
$ o, G+ S" T1 V
+ H- Z* A" A+ g2 O t+ B% X/ r: Ffunction y=ill( t,x)* B U1 }2 h. D9 d* A" H2 j% H
a=1; ' R o) k; ]8 xb=0.5;. I0 K" V1 X6 R7 j8 b
y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];. R5 i& |4 l2 X5 |: f6 S
# v9 f3 J# [& E
' m# X- `' Z( t5 F# x8 s结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件 N) f. [2 s' g$ V+ } 2 O& A5 ^6 `8 J" ?$ k( l* v 9 P3 \4 A4 ?: n2 b* |: W0 a8 @9 a; G% h3 R: ` c! @2 E
模型二 - T: w0 L$ ? I8 [. g h: e' @3 S2 R. n6 p: c7 J
5 F. e# L5 Z& G实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N.. % c5 ^- ]0 R4 \3 m% W(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)8 ?+ j* L) L w; d( [! X
有 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)8 r1 \8 z& ~2 i9 M7 U6 P J
因为s远大于i, r,s(t)视为常数,所以有 5 p' f/ Y, q4 r( G( M8 c: u $ B, Y, o" Z h2 A! h5 y# ] X" Z4 } H
5 K( p1 p, X3 A, ]
t: s$ J! f! W" r9 v9 C/ J$ X" g3 V
取差分近似导数 ' v) ?* F' |7 l9 o, t' R- M N. T3 k 4 t; D. \4 j; ^% G+ v. Y$ p+ H2 H' O* Q
' ?0 P" _" H. z- y5 |2 x' K' e
" n" d U }. E% o% C- [4 s我们可以先用真实数据对(t)进行展示并进行拟合 ) ^; U; n0 o/ x" j3 q6 i% N6 D5 a) h $ J% q2 H2 i' k0 j" P$ d % B3 _* ?+ s* m( u. R0 g 2 B- t( u" |( Z$ I$ T* s7 z7 H9 `- h$ b) D2 Q
当然同样的方法对(t)进行拟合+ d- U' x6 L. ]. b4 g( k3 h p; n. w
8 O( b5 d0 m# c' _) q: J 2 n. w+ T) ^% h4 L5 D' T: z做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!' Q1 K% L2 C1 [: R3 r
冲国奖 & ^& t8 |; S+ V2 ?冲国奖 4 s- R: C+ l. z7 J- j2 u冲国奖! O& D! {7 J7 L2 Z) m* j7 L
————————————————# |% }* I8 n1 M/ J- T; o; O
版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 9 V5 K) x6 u; ~, _原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630& V: t7 v6 t2 T: M5 b m
7 `9 G; h6 _' U% [. a( ?% K8 y
# t; |7 a0 N7 f+ F) t! O" h- N. H