, r3 u% K5 v7 |S 类(Susceptible),易感者,指缺乏免疫能力的健康人,与感染者接触后容易受到感染; 5 }4 k m2 {$ ^) b$ b" c6 V ; o, P6 D+ C( j3 Q0 U3 N4 W: S. s( H# M) ]* o: p8 f: ^8 D
E 类(Exposed),暴露者,指接触过感染者但暂无传染性的人,适用于存在潜伏期的传染病; 2 x) S8 ]7 m, c0 I* K & m) s( o! G0 Z& N4 R: _) m 6 P5 i/ ~% ?' |- vI 类(Infectious),患病者,指具有传染性的患病者,可以传播给 S 类成员将其变为 E 类或 I 类成员;3 o! r5 }( I/ _$ l( @% s9 U
* P( w/ `7 X3 n ~3 q, ]9 B6 S+ \$ E2 [5 j9 V. y+ n
R 类(Recovered),康复者,指病愈后具有免疫力的人。如果免疫期有限,仍可以重新变为 S 类成员,进而被感染;如果是终身免疫,则不能再变为 S类、E类或 I 类成员。3 i L2 n8 ^1 S% N' d" _4 J) t
+ z' H7 ?, O1 U2 Z% B- x9 r" o4 X3 Q/ @ # g! q9 `: F! A5 W5 X# 设置模型参数# ~: q: @8 h3 {3 O9 I/ |% g
number = 1e7 # 总人数, E; A! _7 ?* k" l) ~# z1 k
lamda = 1.0 # 日接触率, 患病者每天有效接触的易感者的平均人数 . j1 U: \; U9 p; ]0 Y [; ~# Smu1 = 0.5 # 日治愈率, 每天被治愈的患病者人数占患病者总数的比例' y1 \* H2 |/ Y3 W& Y% K# J2 F
y0 = i0 = 1e-6 # 患病者比例的初值% e. D q' K1 m
tEnd = 50 # 预测日期长度4 y$ u. h: ?0 K0 x; I$ D/ L
t = np.arange(0.0,tEnd,1) # (start,stop,step)% D; X( k$ {% x& K% O$ S
' h8 n! {: ]2 f \5 W) ^( `2 x: F
3 w1 T* b* n! [: Y5 gyAnaly = 1/(1+(1/i0-1)*np.exp(-lamda*t)) # 微分方程的解析解 * O" l0 R" \# I' i+ l: i( w9 a* ]yInteg = odeint(dy_dt, y0, t, args=(lamda,mu1)) # 求解微分方程初值问题# Z7 V' {- r; y$ O5 u+ E* z V
yDeriv = lamda * yInteg *(1-yInteg)9 Z# t: [, V8 W: @, j% X3 ]
3 ^3 \" U* ?0 @1 f+ M- c, o! a
$ {5 l3 w1 R0 [% y( r! M
# 绘图7 ^% L7 c4 b( r5 n) c
plt.plot(t, yAnaly, '-ob', label='analytic')7 x, T/ \5 U& \% w$ G& C! d% M7 a
plt.plot(t, yInteg, ':.r', label='numerical') % O7 g4 w4 c8 @5 _, @+ F5 N" zplt.plot(t, yDeriv, '-g', label='dy_dt')4 E( y4 W% e N/ Z
plt.title("Comparison between analytic and numerical solutions") ' f4 i ?5 B) _5 o2 B3 c( @plt.legend(loc='right')' A r% j+ A- x! \
plt.axis([0, 50, -0.1, 1.1]) # V: W7 n8 ` e3 n3 Z2 c+ c" qplt.show() . m' y1 a4 m* V v1 0 f, {; M1 o1 S; v O4 L) B. j. c2- _8 w8 @1 b7 w6 O% v
3 8 W- q6 h( w! [) z% P4 d" i4 , t- o! D6 B( @2 i5# f/ ?6 o9 U2 g
6: X, G+ F/ G* t3 _ N3 O
7 & }/ c: O& T' o3 l+ G8 - U3 y4 A) z" b9 : n6 e8 ]: m, |: p o0 R108 q5 x. \) h0 B3 P
11 2 h% @ r2 n1 q# ?12( v! F# N+ R% q( G* {+ ~
13, V! ?0 d2 ]% V7 T4 `8 ]7 l6 @
14 * ?0 T/ q6 k+ ?$ r& O6 Z15 $ x4 M% h! {7 D5 N16- b1 f- [7 s8 I9 A8 M9 C! B
17. q! T _) @; m3 J) S _
184 J8 z; q3 B1 R/ q- u; n
19% {6 \! I! u% v
20 2 N% Y+ U c3 d& Z3 h211 F; \- h, v: u/ G9 u' `+ T: K
22' Z, N; X* ]2 P3 S' W: Z# P+ V. |
23 " E: b. }0 ^ ^6 b+ ~24( [: s6 V# [1 L. B$ _
252 z+ i/ i3 I% H, M" Y
260 G2 h1 K- \2 Y y& N/ t
27, A0 a5 `$ H2 i) M3 Q+ P( Y. U O0 v
28 + b% w' I- A) @' j29 ' ?% F5 B( z9 J2 Q0 v; H7 g" |, u/ C: R
/ G. ~: J6 w0 ?. ?- t5 ]8 `3.4 解析解与数值解的比较 : {3 }) y8 l4 l/ X, Y , Z$ x. K- N& m2 w 5 P0 R9 `2 e$ v, r3 W本图为例程 2.3 的运行结果,图中对解析解(蓝色)与使用 odeint() 得到的数值解(红色)进行比较。在该例中,无法观察到解析解与数值解的差异,表明数值解的误差很小。/ L, x; m5 X4 `% B
# }- e, y6 `* `! `9 a: m* U7 `3 G9 n
9 C3 @5 f$ W( Q& G# |* M7 @0 O- f图中 d i / d t di/dtdi/dt 具有最大值,最大值表示疫情增长的高潮,达到最大值后 d i / d t di/dtdi/dt 逐渐减小,但患病者比例很快增长到 100%,表明所有人都被感染成为患者。4 O, V- e. X" u* f# ~/ ]+ ]4 F
! s6 S4 z6 Q. `9 v9 |
: G/ L$ l4 \1 t( T; Z这是特定参数的结果,还是模型的必然趋势,需要对参数的影响进行更详细的研究。+ V; r N$ I/ q3 o
6 r' Y! {) _' k0 |- _+ h% K) P5 U+ L8 s
0 `* ]1 B* x E: _
( F# u: B" F+ Z& g4 h. ?
4. SI 模型参数的影响 # u/ u' @) E5 E+ _2 R对于 SI 模型,只有日接触率 λ \lambdaλ 和患病者比例的初值 i 0 i_0i 7 B5 _# g* g; W L
01 n7 }: F+ V* t( n3 c* s* K
4 C$ C7 N' Q2 h# a6 k
会影响模型的结果,其它参数如总人数 N 并没有影响。* P( K* P+ X+ c& a% f
8 n# m$ {. K; k6 c- I+ M5 k1 o
6 }! f) q3 p1 j4.1 日接触率对 SI 模型的影响/ G! k0 D8 T4 j6 E5 F+ m
* c4 v6 K9 K+ M' V6 h( \
* I# b! \; l3 n) B, A
对不同日接触率的比较表明: / V: F1 y% E- h+ T2 B8 J6 O! r1 a4 H6 ]8 T; |; d5 R
4 p; a7 ^/ P1 q% H
日接触率越大,疫情从发生到爆发的时间越短,爆发过程的增长速度也越快。9 V% _3 o- x5 n9 S' v2 J
不论日接触率多大,患病者的比例最终都会增长到 1,表明所有人都被感染成为患者。3 T% _# ~! H* x
不论日接触率多大,都具有缓慢发展、爆发、增长放缓 3 个阶段,进入爆发阶段后患病者的比例急剧增长,疫情就很难控制了。 8 \( F5 e9 Z$ a- n 9 ] f2 H3 T _ d( _) f # s" S5 {7 @0 v H# e7 Q- I3 B* {6 `5 a4.2 患病者比例的初值对 SI 模型的影响- z! o9 n) S/ i- T
2 c9 q" D; a4 P
7 h/ s: w- Z0 N. \" L' R对患病者比例初值的比较表明,患病者初值的人数或比例只影响疫情爆发期到来的快慢,对疫情传播的过程和结果几乎没有影响。6 i2 v& f3 x. H# x
8 c& ?/ n y: A: l- Z6 I9 D- N5 W% _. ^6 i4 ~
这与我们直观的经验不太一致,一个原因是 SI 模型本身存在不足,另一方面也说明如果对传染病不加控制,即使开始患病人数很少,经过一段时间的传播后也终将会引起爆发。 ; N6 U1 x5 p8 `3 d \5 q 9 a( E5 n+ h7 ^3 d 2 h8 r2 f& S0 _% i' `4.3 SI 模型结果讨论 : H5 W6 A+ u8 Q: o- E% [' p$ z; C在 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) 增加最快。由此可以预报传染病高潮的到来,即为医院的门诊量最大的一天,卫生部门要重点关注。 ; `9 C$ S9 I6 ~" k8 e6 at m t_mt " `* ^# l; x: a# W) M- n1 ~
m ' A/ T9 q9 ]5 M / |9 v% ^3 n3 r0 H9 {9 I' j. g d
与 λ \lambdaλ 成反比。日接触率 λ \lambdaλ 反映卫生水平、防控手段,提高卫生水平、强化防控手段,降低病人的日接触率,可以推迟传染病高潮的到来。+ ~5 V. Y! f3 K2 w2 }2 C
当 t → ∞ t \to \inftyt→∞ 时 i → 1 i \to 1i→1 ,表明所有人最终都会被传染而变成病人。这完全不符合实际情况,表明该模型太不讲 politics 了,只能适用于美帝国家建模。 : g1 B8 V9 L" sSI 模型非常明显而严重的缺陷,是该模型没有考虑患病者可以治愈,因此只能是健康人患病,而患病者不能恢复健康(甚至也不会死亡,而是不断传播疫情),所以终将全部被传染。 : p# ~2 j$ Y0 M' f- \7 h———————————————— ) R1 r& |1 M" e6 g版权声明:本文为CSDN博主「youcans」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 ' z4 e) `0 s5 B3 G7 b7 F原文链接:https://blog.csdn.net/youcans/article/details/117740466 $ ]8 R/ m3 m2 M+ g, p9 t8 O+ t0 N7 P; Y
# n- R( x# X |$ T6 A6 Q4 g: s