k0 y. g/ [5 z0 h' w+ L/ ZPython小白的数学建模课-A3.12个新冠疫情数模竞赛赛题及短评2 L+ y7 n# x5 T4 }: m
Python小白的数学建模课-B2. 新冠疫情 SI模型 - I" z2 k! D1 LPython小白的数学建模课-B3. 新冠疫情 SIS模型& n& a' \ e$ Z
Python小白的数学建模课-B4. 新冠疫情 SIR模型! D8 Y; I3 M3 {3 }% Y; n3 u
Python小白的数学建模课-B5. 新冠疫情 SEIR模型 + U4 v6 x6 K0 e A' ?6 Q* j% wPython小白的数学建模课-B6. 新冠疫情 SEIR改进模型# b! L! [) \# d
Python数模笔记-PuLP库 & z5 s, l, X0 Z+ h/ o) h% J6 I( R9 O! G
3 j0 ~. f5 A( L" a
; m+ Q" E! X$ c) p( x3 R ) l) t! D1 a& G1 M! b' g u- w2. 疫情传播 SI 模型5 i- y: w2 H/ q, ~
2.1 SI 模型的适用范围, M( z( J$ K% X! c- Y0 H6 T
SI 模型适用于只有易感者和患病者两类人群,且无法治愈的疾病,例如 T型病、僵尸。7 c' Q9 U2 U4 \, L% y9 i! \) |& K Y8 V
0 Z1 a" V0 \/ O3 |3 {+ D, K' D3 G& T! [5 s! a; e
, r9 j, ^! Q' V8 C, W* y# v2 J- I ! E: n% r+ ?6 l4 @5 e5 T3 N2.2 SI 模型的假设 1 m* |& Q* I1 U考察地区的总人数 N 不变,即不考虑生死或迁移;- \, a1 G6 V& s& w9 b
人群分为易感者(S类)和患病者(I类)两类; 9 Q& B$ ]" I! |% S易感者(S类)与患病者(I类)有效接触即被感染,变为患病者,无潜伏期、无治愈情况、无免疫力;7 r8 b1 t6 h! r$ w! Y( R
每个患病者每天有效接触的易感者的平均人数(日接触数)是 λ \lambdaλ,称为日接触率; 3 K# w2 p" e9 i" S8 l( E0 S将第 t 天时 S类、I 类人群的占比记为 s ( t ) s(t)s(t)、i ( t ) i(t)i(t),数量为 S ( t ) S(t)S(t)、I ( t ) I(t)I(t);初始日期 t = 0 t=0t=0 时, S类、I 类人群占比的初值为 s 0 s_0s + X+ |3 a6 b3 ~1 H& F! l01 ~5 k7 R+ i' J H! S1 s
* i2 Z. [: a8 R# f9 w3 p$ k: j
、i 0 i_0i / y- x8 c/ C, l08 y5 \4 a" U1 g& [ e
; _2 ?: V' h' \& h4 q/ s4 W
。 3 A" ?/ l6 x' P( S: S c2.3 SI 模型的微分方程 9 Q$ H" l4 P% E( H: P! Q由8 B# m, @. ~# W" `/ [% T
N d i d t = N λ s i N\frac{di}{dt} = N\lambda s i $ ]- G, c; W# _N / L n* u G# Q8 `
dt $ s+ F2 s2 b( H( wdi & ]) d; P1 h. w" U6 b 7 R% i% Q" @* C! W1 {
=Nλsi - E2 f' I. w& v. R% A1 P4 A3 i# b% v3 I. M. a
# _+ c1 C9 J; F% Q( e9 w e
得: 8 H; b0 V& P' d+ H2 _; Td i d t = λ i ( 1 − i ) , i ( 0 ) = i 0 \frac{di}{dt} = \lambda i (1-i),\ i(0) = i_05 h; V# d2 ~! L5 {
dt6 d6 X3 S: @0 k9 m% d0 T
di9 i, U6 P% Y2 |7 @( q
% L7 f- q; T; M" t+ ]$ R
=λi(1−i), i(0)=i ' H( j. J& \: @
08 t6 ~& {0 V% l1 K
9 c+ r- ]/ r& M $ J- b1 ?- C' c0 G
( w* r6 Y' i5 a# x& g
7 z; Z" r. O6 f. `; v l% Q# A! { M
这是 Logistic 模型,用分离变量法可以求出其解析解为: 3 H7 I8 i- ~& S: {i ( t ) = 1 1 + ( 1 / i 0 − 1 ) e − λ t I ( t ) = N i ( t ) i(t)=\frac{1}{1+(1/i_0 - 1)\ e^{-\lambda t}}\\ I(t)= N\ i(t) ' y# g" W8 @9 A) E6 I9 `i(t)= 9 F) \6 |# z( V: m, U: J) g$ K
1+(1/i 3 p* P! M% S9 h) I0# M+ c3 Q7 z, v0 V
+ _% d! q. }% ^/ c −1) e 0 Z9 S1 d) @! q
−λt & O* o; x. E \" @; ^ - M7 Z$ F% k0 O8 W1 : A6 c. y# m' x, E I # v% N% I0 g9 E( m7 w; J& M3 A . U& P! G3 f3 Y D- TI(t)=N i(t) ) _5 b7 W" s- l: U, g! N' P7 M " d8 ~8 R8 R: H3 y2 a; v! k 1 {8 B- N) x7 N9 x/ Z" e- ^' v! T; K [1 J! X' x0 v
3 h6 u) |/ L( s ?6 x( A, y n3 x! M) d- z) tyAnaly = 1/(1+(1/i0-1)*np.exp(-lamda*t)) # 微分方程的解析解 % L+ n6 B- r4 GyInteg = odeint(dy_dt, y0, t, args=(lamda,mu1)) # 求解微分方程初值问题 9 Q7 |9 L9 o4 Q4 ryDeriv = lamda * yInteg *(1-yInteg) 9 }2 M) }! |6 D+ z4 t , R0 n' {4 u" n0 g. `, N . b ^! B* X0 B4 b' L# 绘图 7 X* R6 g& c* T' g( [plt.plot(t, yAnaly, '-ob', label='analytic')) P+ a9 U3 {# |! [7 G: s% s a# ?! e
plt.plot(t, yInteg, ':.r', label='numerical') & b" c0 h( z! g% L- ?' K1 ~plt.plot(t, yDeriv, '-g', label='dy_dt') # E' B% H1 p9 e* Kplt.title("Comparison between analytic and numerical solutions") $ J+ g7 Q4 y( E3 j5 Q+ ^& }plt.legend(loc='right') - Y( Q3 J4 ?9 Z1 rplt.axis([0, 50, -0.1, 1.1]) , i/ X6 p* u0 z% F; D& bplt.show() 0 e5 H- D: E: U" }) x0 V }1 ) G" Z0 e3 _% y3 w) x2 # U: z' Q6 G* V: Y; ]0 K, o/ B3 - f2 v' Z) t. D# U# O7 M47 v" [7 d& N+ A, m' v) z% B B6 t
5 / f6 J1 V: `- Y. B% s$ t6 8 I3 Z( z: R1 _/ w* [& C7 1 x F8 ?$ g% Q l) f( A! I8 / V& N8 S8 W5 k) {/ T5 Q90 d4 |4 j8 Z$ p4 N. b
10 5 g' S, Q9 I. C$ i1 C* F9 g119 i/ [5 x- E! W
12$ G' ?; [+ s/ K
13+ t2 ^" y* s a& g
14 " P$ v, j# J. U5 t5 a154 F1 s/ ^+ p. V' H- {5 V
169 S4 @6 H0 d- O$ }8 C4 n8 z
17 2 q1 Z9 x/ g3 |# a6 Z. n$ M18 8 ^- u S) y/ ~7 V7 }- y4 w19 3 d; W" }1 P4 ]! b: |20) B; }/ `$ ^3 c4 _% R5 _
21, k2 ]1 f, a1 d5 u9 `( K
229 r8 R2 e- G {( @' P
230 d4 e$ `! E1 v P8 [5 s2 x/ r
24+ O- a5 ]( e7 q0 F N) N+ V
25# v ?1 S4 P2 z6 E& e* n4 s
26 0 W8 J' Z6 x e27* t5 p5 R2 L. _; d9 B
28( @, I& y- }8 `2 [' `0 E
29$ W, p; ^. ?: E0 P% I
4 r% z5 _( Q1 l, \
! J: G# b2 o0 u3 c* m* t
3.4 解析解与数值解的比较! L: _, e, d( l+ K* ] {
# k, v* q; G7 Y# E( l Z- i& c( I1 }/ }* {1 G! g$ j2 M
本图为例程 2.3 的运行结果,图中对解析解(蓝色)与使用 odeint() 得到的数值解(红色)进行比较。在该例中,无法观察到解析解与数值解的差异,表明数值解的误差很小。 $ Q6 ?, j5 b- I- V. E* }& G5 t! y
$ P A7 q! S4 k- A) G6 _
图中 d i / d t di/dtdi/dt 具有最大值,最大值表示疫情增长的高潮,达到最大值后 d i / d t di/dtdi/dt 逐渐减小,但患病者比例很快增长到 100%,表明所有人都被感染成为患者。 : y. \ Z2 B/ | H. u( G 4 P8 O- A! p& c5 h7 w2 E* e0 }8 S' a
这是特定参数的结果,还是模型的必然趋势,需要对参数的影响进行更详细的研究。 " @3 s' R) h+ o; _4 m. A9 |+ n ~5 j$ n, m
* x5 f; X6 c8 g3 t. k- @6 l3 o) j2 @6 T7 h. l
4 i% p/ q; s$ a- j
4. SI 模型参数的影响& W/ z- R2 {' s' B8 `8 M5 a
对于 SI 模型,只有日接触率 λ \lambdaλ 和患病者比例的初值 i 0 i_0i 8 r' l# a' o2 V
01 V5 k: N6 T- N9 ]* C* C, X
- c3 [: @. N1 p9 `7 e
会影响模型的结果,其它参数如总人数 N 并没有影响。 3 B! h. z+ ]2 T; W( ]' ? ; A+ M. ~' y* v* B/ R: o& H' @1 `% r9 \% w* |' P* y
4.1 日接触率对 SI 模型的影响, D3 C0 |! i# O1 K( t% O( e2 ]
) r6 B3 V" j2 p) s9 r6 s
* A* {. Y8 e' a6 t对不同日接触率的比较表明:9 H) D: ~+ a4 m& A
" G8 P+ D, N$ ]( z( ]# q9 U3 ?! L
. N) Z/ i+ e, V- w4 v日接触率越大,疫情从发生到爆发的时间越短,爆发过程的增长速度也越快。* f& Z$ P. K. T$ g# {
不论日接触率多大,患病者的比例最终都会增长到 1,表明所有人都被感染成为患者。 / E) ?' [! }8 p$ @+ p- j3 o y不论日接触率多大,都具有缓慢发展、爆发、增长放缓 3 个阶段,进入爆发阶段后患病者的比例急剧增长,疫情就很难控制了。 : ?5 ?( \& V% i! j3 d( h& h1 w. Q& G7 |5 @# D( i' o8 W
3 W3 @0 X' j: [
4.2 患病者比例的初值对 SI 模型的影响 h8 y. r$ a; z- Z* q7 x# S$ L3 P' P! H. A/ c3 i. f
# K1 }; D# }2 U- l4 n& M对患病者比例初值的比较表明,患病者初值的人数或比例只影响疫情爆发期到来的快慢,对疫情传播的过程和结果几乎没有影响。 ) I- ^& j5 z: Z$ f) C3 O* }) l, S6 F' R0 `% q/ F! b0 L
- g! _8 K$ t/ v
这与我们直观的经验不太一致,一个原因是 SI 模型本身存在不足,另一方面也说明如果对传染病不加控制,即使开始患病人数很少,经过一段时间的传播后也终将会引起爆发。 7 N2 v$ T, t7 I" I+ A7 |! {( M( @9 c
% q* S% w% k4 R5 ^! _1 X4.3 SI 模型结果讨论 , T. V9 ]9 w6 z5 }在 i ( t ) = 0.5 , I ( t ) = N / 2 i(t)=0.5,\ I(t) = N/2i(t)=0.5, I(t)=N/2 时 $ di/dt$ 达到最大值,病人数目 I ( t ) I(t)I(t) 增加最快。由此可以预报传染病高潮的到来,即为医院的门诊量最大的一天,卫生部门要重点关注。 7 t" O# Q7 p1 I( Ht m t_mt 5 [; ^$ i4 L. w2 l' |
m : A: y) M( F2 u* ?- z $ W% e' U7 S& ]
与 λ \lambdaλ 成反比。日接触率 λ \lambdaλ 反映卫生水平、防控手段,提高卫生水平、强化防控手段,降低病人的日接触率,可以推迟传染病高潮的到来。4 Q7 p7 t- {2 R3 x
当 t → ∞ t \to \inftyt→∞ 时 i → 1 i \to 1i→1 ,表明所有人最终都会被传染而变成病人。这完全不符合实际情况,表明该模型太不讲 politics 了,只能适用于美帝国家建模。/ m) y- m7 }8 `0 V5 ^$ x, B) z* v
SI 模型非常明显而严重的缺陷,是该模型没有考虑患病者可以治愈,因此只能是健康人患病,而患病者不能恢复健康(甚至也不会死亡,而是不断传播疫情),所以终将全部被传染。 ( b* P& ~ B2 a' s2 l( u3 w————————————————6 L& j9 p, W4 D2 ], A+ b
版权声明:本文为CSDN博主「youcans」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。6 j W |$ M# ?% H- Y) r( r3 y
原文链接:https://blog.csdn.net/youcans/article/details/117740466/ ]6 L, y6 D" I& K