在线时间 1630 小时 最后登录 2024-1-29 注册时间 2017-5-16 听众数 82 收听数 1 能力 120 分 体力 564698 点 威望 12 点 阅读权限 255 积分 174632 相册 1 日志 0 记录 0 帖子 5313 主题 5273 精华 3 分享 0 好友 163
TA的每日心情 开心 2021-8-11 17:59
签到天数: 17 天
[LV.4]偶尔看看III
网络挑战赛参赛者
网络挑战赛参赛者
自我介绍 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
群组 : 2018美赛大象算法课程
群组 : 2018美赛护航培训课程
群组 : 2019年 数学中国站长建
群组 : 2019年数据分析师课程
群组 : 2018年大象老师国赛优
1 G3 P: {/ ]/ y 数学建模之传染病SIR模型(新冠真实数据)
( z @: I7 f7 I3 w3 u1 S5 `4 B 传染病模型的基本问题
, f# {7 P) ]' H0 [4 J 描述传染病的传播过程
& ]) K9 j! a0 [" D9 B+ G, F7 g( C 分析受感染人数的变化规律
2 ]6 _+ N; o4 D( l# H/ L 预报传染病高潮到来的时刻
# v- L7 A) h4 g* s 预防传染病蔓延的手段
! H5 D/ E, u; s4 Q( ]9 c8 B 按照传播过程的一般规律用机理分析方法建立模型
4 N+ w, `3 c" O% [9 u4 L 注:我们这里是介绍数学医学领域中基本的传染病模型。不从医学角度分析各种传染病的特殊机理,按照传播过程的规律建立微分方程模型.
* n; R4 k+ s% y2 m 0 M" B1 v4 h( W% L ]8 o# R& F' @
4 S# Y+ W& V* d
建立模型 ( S. E: k9 D& V2 \7 d$ k9 m
模型一 : N6 T' d+ ^' z* V' b
假设: / f7 S9 H/ \9 H0 Z" b' v% m8 m
2 e; H6 s- `' D% G
" I! g7 O# [( F% ^4 x! H( h7 v 设已知感染人数为i ( t ) i(t)i(t)(病人数量随时间变化) / P k" s- \1 q$ M* ?9 g+ Q1 h
设每个病人(单位时间)每天有效接触(足以使人治病)人数为λ \lambdaλ
5 @1 |9 a0 z6 }: B {, V 模型:
/ }4 k, x# ~! x s: \. y! [ 单位时间Δ t \Delta{t}Δt内,新 增 的 人 数 ( 现 有 − 原 有 ) = 原 有 的 × λ 新增的人数(现有-原有)=原有的 \times \lambda新增的人数(现有−原有)=原有的×λ,即
F* `7 O3 v* ?$ z4 r$ S6 {( V 5 p' v4 `; R- A1 y% k; l( w( J
% H7 p& V2 W( H3 V
i ( 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 3 K. v1 ?/ n1 V: A! R6 @' k# r
一开始的感染人数为i 0 i_0i
" ?. t, O, ^3 c0 X* l* W 0
9 h5 ^# j- v7 M
, Q8 x5 l- E7 R$ a8 w o
# r& _9 q9 t" ~& o/ v. C i ( 0 ) = i 0 i(0)=i_0i(0)=i
2 x! i. @/ H, S 0 & g9 N7 J5 v- T% r
- k7 D; ^: W0 G( I9 P
8 \, z9 z5 U) X: a) S3 M( @ 解微分方程可以得到 ' o, d6 b- ^' \: L
i ( t ) = i 0 e λ t i(t)=i_0e^{\lambda t}i(t)=i 9 X; t; c7 L. n' b( C" s/ D: g
0 ! Y) o0 t: p, V
/ X- ~/ e! e0 x% |9 h) x e
/ F- N, R1 N$ K k$ u+ k% W λt ! i, N( M( t& q" n
1 x2 c8 [0 T5 k5 w 所以可以可到当λ → ∞ \lambda \rightarrow \infinλ→∞时i ( t ) → ∞ i(t) \rightarrow \infini(t)→∞
: j. | W* O+ m; J 当然这是不可能的,因为我们考虑的因素太少了,首先一个是,若有效接触的是病人,则不能使病人数增加,所以必须区分已感染者(病人)和未感染者(健康人)看模型二来解决这个问题 ' U$ H' T; C$ h2 N/ Z
. w3 d+ {$ J# ^: g7 I( a # I6 O! Y1 K6 @+ h6 o" w
模型二
H" [' }" t: R/ h; E9 Y 假设:
# ~0 q( V: e6 ]/ F/ p! j " P% q, l7 E8 m/ z
) J$ j% F1 G7 ~ 将人群分为两类:易感染者(Susceptible,健康人)和已感染者(Infective, 病人). 4 W) {. ?9 n3 g- O, s8 d
总人数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
2 w* o+ k- S/ W$ p) B6 s; v/ \2 \/ J 每个病人每天有效接触人数为λ \lambdaλ(日接触率),且使接触的健康人致病. - `; G/ G+ V! c
建模: 1 Q3 w& e9 H- k, q9 c
每天新增的总人数为原有的人数乘以每个人可以传染的健康的人数,再乘Δ t \Delta tΔt
. Z: r4 y, O- e, L4 O; y! S ' ~7 ^% n/ V2 F) k9 y' {: s
h" v& B$ ?) d+ p* q7 |+ T) M0 P Δ t \Delta tΔt除过去,两遍N约分得到下面, 0 ?& V9 K$ ^' d/ h
- k2 i) r; U. ~8 @- y
% P! A2 _4 k v+ g! w+ H MATLAB解一下这个微分方程 - }4 O \6 I% A7 M9 q% s
% }# ~9 n0 O/ ~/ v6 Q
- v* H9 T3 Z; ~ y=dsolve('Dy=n*y*(1-y)','t');
& t3 ~! A( o( z$ I+ i3 z3 ^& R & A6 D* h0 J! E& d7 ^ |
. y+ o! \% f+ o4 a
y = + }- k8 d- \2 Z+ a) \! R; n
-1/(exp(C1 - n*t) - 1)
7 D- w* G6 [3 H3 V 0 + _! G4 M! P1 f/ v
1 9 E" l# ?) m( V" |/ l0 z2 L$ |
1
2 ^: d" X# O9 k 2
' j9 L' M# o2 B* T+ C [! n 3 : v( l- s- K7 \: F' ~
4
' H5 A. l6 O/ H. U. I' Z 5 * o0 v5 ], M- B) K
6 $ d& z3 T9 ?8 w! ~' Z: V: d. ^
写规范点就是这个函数
+ f, q! g% Z+ T) }
Y% ?, N5 h. t/ X6 V3 S; g6 T0 q
9 R* v2 |" |6 e$ o' S, i$ m) X3 c 函数图像大致为
! ]0 t9 a8 X9 S( T. K2 z8 _( z2 I & Y7 R) S0 @; N) u5 n. R
3 g9 f& s$ X$ L. N( |" ^: I# A
可以看出t = t m t=t_mt=t
, |$ e8 c6 z2 x) g9 [( \ m
7 Q" v2 o) ?' a
; J$ }, a% [' \# P- z# G 时这里图像的斜率有个最大值,其也就是传染的最快的时候,即传染病的高潮时刻,当然t m t_mt ' z! z! `3 m" v3 x% J+ F2 }* ~4 R
m ( {: u* w6 D7 \3 @+ L' z
% e$ t2 s) ~# M& b- n8 S' ~
是可以求出来的 3 h; e1 x, K+ [+ f
4 M& `* ^5 |& l: G
+ [) P& W- H% |" K6 M0 E 再看原式,当t → ∞ t\rightarrow \infint→∞时i → 1 i\rightarrow 1i→1 t1 J# m$ a3 w
病人的比例为1,当然这也是不可能的,因为我们还没有考虑有没有可能治愈,看模型三 4 ~, Z4 m+ h0 O6 v3 q8 c
/ G* |( G) @7 L( c
) E2 }; m6 N0 T# Q$ a% ~ 模型三
- L. j0 H( T8 L* |: r$ c) Y3 Q 假设:
" T& r/ A2 ?9 v# M3 B' V
2 _3 Y2 t* B$ z0 f! N! ]3 m" O
9 }! f( O& P. | 传染病无免疫性如伤风、痢疾等——病人治愈成为健康人,健康人可再次被感染。 - O* ]( V6 w8 N' ]9 l
病人每天治愈的比例为μ \muμ (日治愈率),1 μ \frac{1}{\mu} # R# H3 h/ d- P6 G7 e
μ
0 }9 P: P/ U5 l8 Z- x* l 1 * F4 F) B' W/ [. s$ f
$ t* B2 B: U9 m4 E
为感染期,
! Y5 m# s- H; N" ~+ g0 d" W 模型
7 Z, I9 P( O, C U9 A% l; t# O* u" s 这是减去了治愈人数之后的新增人数
9 }; j/ K* o$ d2 O0 q2 C+ d- A, G) `1 j
; n0 d. q( s& o, \1 h( v2 h1 C& A 7 b$ W+ r% q; G& H! G" H, L6 T
5 s- {9 _ H5 c/ n: |( J( s
9 V4 O3 y/ q9 J% e7 Q6 ` l: j C- H
σ \sigmaσ 为一个感染期内每个病人的有效接触人数,称为接触数
2 p& R8 |' q$ {' ?* g0 e
5 L& h w0 S* d" P/ w
) `% R6 F5 G! j0 m! @# B* y 可以画出上面的图形分析下
; Y& L$ K+ @, V' c' d2 v & ~* ~& g- \. g+ m
* x0 {- W0 _, I' Q# j 对上面的公式进行分析,可以得到,当i = 1 − 1 σ i=1-\frac{1}{\sigma}i=1− 8 m+ I" G* F4 x$ s9 q$ G/ _
σ
" a" o% |/ f5 \" V8 C3 r 1
1 W8 w6 j8 B7 Y' N- [; U0 R9 f
3 ^0 a1 E1 c, t* L1 q0 f8 I& R 时,i ii对t的导数为0这也就到了i ii的最大值;当0 < i < 1 − 1 σ 0<i<1-\frac{1}{\sigma}0<i<1− / b; y% T! |7 h' S
σ
) z7 e$ z/ s: J9 }% a, @ 1 6 }- B4 s4 B8 D/ J, a8 y* I
; b! @, W1 p1 D; X 时,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−
0 _5 ^7 K* R4 E, Q3 P( t+ M σ 9 E$ q6 @9 P" K& k" a2 O' u2 l
1 ) Z& Z9 v+ J' n( \7 K, j
7 T& d( U" Y i! l& [" i) T+ b ,d i / d t < 0 di/dt<0di/dt<0,i是单调递减的。 " V2 m2 h# {: n
0 G, C9 j% Q# F7 ~, V
: O# k. ^, q ~* |. g& N" s 当然我们也可以画出i ii随t的函数图像 . A0 \/ X* Q; b- z
) |" |: F" G* @# _ 6 c% h" |2 I9 V+ y' v$ S
先看红线,若初始条件i 0 > 1 − 1 σ i_0>1-\frac{1}{\sigma}i
) w3 y; x0 v! O" L/ D" [ 0 t1 A& {% M- ^' r) Y9 W1 `. i. U. c
. q/ @3 b* f; e0 f& f >1− j/ v4 W% @* H2 R# \
σ
( j1 r% v2 I0 t2 \! Q3 V, t 1 , c) g9 v8 c1 ^
! ^1 G) b2 b( u, o$ Q( J8 l/ D d i / d t < 0 di/dt<0di/dt<0,i就是单调递减的, 7 k0 Z' z: y+ I6 M- d$ G
若若初始条件i 0 < 1 − 1 σ i_0<1-\frac{1}{\sigma}i
( X" l, s" t |* L+ z7 V 0 . s, ]! F' E; P% v+ I8 ~
) c) a" b" D& Q7 y0 o <1− ( I6 \' B5 C! _" ]* [4 r
σ
@3 t' L& h% P- G8 m 1
& F3 j( W. x9 B, e: M $ f6 e5 p a- z/ e4 @$ s
,i就是递增的,可以看到i对t的导数图像有一个最大值,下面的黑线就有一个增加速率最快的一个值,按S形曲线增长
y: }1 f0 k* u; N0 D) ? : x' O5 }/ Y; F$ K& x4 u4 R
( }6 m/ G, d2 C σ = < 1 \sigma =<1σ=<1时d i / d t < 0 di/dt<0di/dt<0 i肯定是单调下降的,最终降到0 5 p# U' P) i* ^% p8 v) B
+ k" ^( [- M: U& z1 N. S( s
* X1 h/ _; o% N/ N
2 `5 j1 C) d9 E
: S0 U" H0 F+ i/ z7 t0 o 综上:
6 j. n1 y% L" Q- } 想让患病者越来越少,σ \sigmaσ必须小于等于1,即感染期内有效接触使健康者感染的人数不超过原有的病人数. w' E- q5 T0 Z1 H
3 z6 t3 J5 j f2 J# i8 Y- Y2 ?
; @" L- w; j8 H 这里我们分析的是感染之后还能感染的情况,但有些病毒感染之后会在体内生成抗体,就不会再被感染了,下面我们分析这种情况。
5 V9 l9 }0 H, s9 F$ o o1 N' I % e/ M' w% a5 u" A- \- j
/ O/ ?6 j- W' ^" y2 Q! U 模型四 SIR模型
. [1 Z: [6 c K/ a7 ~# _& x7 r" C) k SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类: & @$ t6 z3 X2 m6 I1 t5 I# B+ b- r8 `6 w
% {! F1 y! O2 a: B2 _! \
; v( D( G+ u! a% k! i7 M
1 易感人群(Susceptible):指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。 , o6 j* C2 b5 q$ i% `- E& m2 q1 L" R! ]
1 }: O$ l0 ` d: d! @ / a# P" e$ T7 P9 w. ]- V: C
2 感染人群(Infective):指染上传染病的人,他可以传播给易感人群。
- s- L1 i! m1 A' m! J. Y; n0 ^3 M# C ; I2 {" R4 Z3 ^3 X
B R) s- J) }. N2 H9 F
3 移除人群(Removed):被移出系统的人。因病愈(具有免疫力)或死亡的人。这部分人不再参与感染和被感染过程。
& o ]- M5 k; A' ]4 g 4 i( E7 Z/ U* \
6 H4 l/ c- o& D: e( e* b
假设: ( s5 Q( J# l* B& \2 [
& L+ A0 w- B( y3 s
# N* [( h( h. L, ^5 u# L$ Z$ f 传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed). 5 h0 p4 \/ d3 V/ _. Z
总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t).
9 q x! F5 C$ `4 {# j' m2 ?. Q1 N 病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ=
( e; E, f0 O0 N! n) L# R' R μ
5 M) _8 c6 i1 v {0 p" r l λ 0 l% W E3 b# E
! J& x6 s% F6 }1 C B! L( }2 ?! O
" T( B4 H1 _$ ^2 Y# P- u 建模:
7 Y0 F+ ?% M+ X s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1
+ I1 k/ ^. I+ Y4 i 这个就是病人减去治愈的人,和上一个模型是一样的 . H! l4 H6 e- p4 F0 U
8 j& @) |" [% O! x+ k ' Y3 g; { I! `( R" i2 b& e
因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是 # K1 t3 W, N. u1 @
1 H# \- s1 \' B6 i
' D: N3 p2 E0 C6 S& [* J1 W( X 将上式化简为: + t8 A: N9 P G$ W1 M" c
0 G c2 l" z5 h& o8 X: {+ `" O
$ q' K0 j, e5 [0 p4 F i 0 + s 0 ≈ 1 i_0+s_0\approx 1i
7 u8 k2 c- N! [2 _( y+ O 0 / H( B* q! h- F6 R# K3 U9 _) c/ T) s. ?
4 q4 K1 r2 _0 t% j0 F5 J +s
3 |3 x( ]2 C7 U. h: [% Z 0
' [5 w' D f0 k( p1 I3 a
% B, Y: A& {" S; [! v0 f ≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r
+ f* Y9 q' T3 |! }# G4 ]# i: l1 \) a0 n 0 & w3 Q# S3 Q6 t2 N
5 k+ W5 A! d" J' z& ]8 |0 q
很小) " i" E2 V4 e6 p* y7 t/ e
8 |; `( r& a+ S% w
% X7 ~3 G. V% K. Y1 |) \1 j 关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序
5 T7 E/ X& S3 ~3 Z! L) Y1 q , [( ~" Y2 R" J7 f% H9 j. K
. Q ]1 a9 }3 E' S9 w
这里我们先设λ = 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 . ~# D- ]& Y8 ~$ W4 h
0 # w% i+ f. E! G! A% z
/ R2 W. {6 y& U) \6 _: L =0.01,s
" z+ U6 {1 v( S* E 0
. Y/ H* I: u6 e. m! F. c
( ?+ t+ u; K+ k% C =0.99
7 _. e+ L0 A1 h! ~: b 也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r 6 u9 V# m. p6 G! Z& O4 P% p9 I2 r4 v
0
8 d% O( x: V3 O# e4 Z1 y 4 @0 V( L5 n% U: S W' ^, s
=0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s & V+ {0 N) y; a
8 u/ S, z1 Q4 N7 p
3 y6 R" X6 z; U! X8 N% o1 h
ts=0:40; ! D* B/ O2 f& }! @& a- i. @( w
x0=[0.01, 0.99]; 4 R/ X$ h* q. L" c+ ^9 q1 K
[t,x]=ode45('ill',ts,x0);
; I! a2 T7 F: i- ^* i, l& n r=1-x(:,1)-x(:,2); $ {/ b) D& e9 k4 d
plot(t,x(:,1),t,x(:,2),ts,r),grid ; j, G8 ~6 }& P1 W2 Z( J& `+ D H
legend('i(t)','s(t)','r(t)') ; O3 J3 x, X/ E9 e8 r+ ?: h
' k& O0 i: [) \1 A" R$ C# X # c6 C4 U2 M% y, P
function y=ill( t,x)
% l5 W$ @1 o! d# Y$ w! t a=1; / b5 o O/ G$ f" L
b=0.5; " V1 ~8 n( |+ {& o
y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)]; ! N4 f/ X0 A5 x+ I
1 8 b& ]/ W- ? I7 t* `2 S' o
2 6 a& I, s, {( d" N% z. L4 H4 @7 Q
3 & L8 w8 k2 T$ {& A( Z
4
; Y5 n6 U7 \7 J1 K* x5 ] 5
# \* r" l$ s9 T8 d* ] 6 ) @8 x% E9 e& R3 [" {
7 % J8 |( F" b5 b' x+ V6 R& m
8 . `7 Y3 V' p1 {- Y2 z; { A, s
9
1 w& o. s u$ Q5 k: {7 H8 W1 W# R 10 # B. i6 x$ i, |! _, V
11 $ e0 H2 O( |+ L& C
4 @* l% O+ r6 `6 K
P0 d' w, C' m; `1 V1 h
可以看出:s(t)单调减,r(t)单调增,都趋于稳定, i(t)先增后减趋于0. 7 t' x. H: K4 D7 R- u8 o
结果分析
! u9 Y8 ~" o; [% J: D 先回顾一下参数
4 Q3 v- `8 A# \ 接 触 率 λ ; 治 愈 率 μ ; 1 / μ 平 均 传 染 期 ( 病 人 治 愈 所 需 平 均 时 间 ) ; σ = λ / μ 接 触 数 ( 感 染 期 内 每 个 病 人 有 效 接 触 人 数 ) 接触率 \lambda;治愈率 \mu ; 1/ \mu~平均传染期 (病人治愈所需平均时间);\sigma =\lambda/\mu~接触数 (感染期内每个病人有效接触人数)接触率λ;治愈率μ;1/μ 平均传染期(病人治愈所需平均时间);σ=λ/μ 接触数(感染期内每个病人有效接触人数)
7 g, |, n/ M1 F" X! W: [ 可以分析出:
% s: s& @, w' u7 L ) T& J A, V; U, d' t1 E
+ s5 I! C8 y7 e: J- I5 z' P 随着卫生健康思想水平高,接触率λ \lambdaλ变小 ! ?, l1 V5 G Z- M! M3 z
随着医疗水平的提高,治愈率μ \muμ增大 ) q, {1 A; d# E- _- M6 i
接触数σ = λ / μ \sigma =\lambda/\muσ=λ/μ减小——有助于控制传播. , C9 o; t8 }5 T- `
我们可以试试稍微减少一下λ \lambdaλ,增大μ \muμ,来看下效果
1 s% V* F1 o, ]# W , q; j7 Y ^* f' k8 D9 l f, X8 B
# b9 S1 D- }6 x
ts=0:40; % {" M l9 c# i! v* e1 \5 p$ h6 l
x0=[0.01, 0.99]; % B2 X, Y/ ]7 e4 D; ]$ z- q! K2 j
[t,x]=ode45('ill',ts,x0);
/ O6 h1 y& f, H; p' m r=1-x(:,1)-x(:,2);
' n" [7 w, {6 {$ E" s# V" I plot(t,x(:,1),t,x(:,2),ts,r),grid
6 y' M* H3 N. ]- c2 v( @ legend('i(t)','s(t)','r(t)')
) N1 Q3 g; _5 p/ ~; G W" G
4 J3 _1 T+ K2 S6 E% R + ^* h, m- ^, p* Y
function y=ill( t,x) + @ ~4 ]- k6 H: m* C1 n
a=0.8;
" G! a& V) l1 D- }! u! M b=0.6; $ a( v& W4 z6 i, e' x. i1 Y* b
y=[a*x(1)*x(2)-b*x(1);-a*x(1)*x(2)]; 2 F; X2 ^: a+ _2 I5 L% C
1
& F0 x: a! I @ 2
$ \: e, ? E) [8 G" | 3
6 ^3 ]" W+ G2 w8 k5 o& ^5 W 4
- N& b, h. a( J0 p5 b! S! a6 p( f, K 5
$ P6 ^" f2 i1 s4 N. D 6 # o. t% q1 D9 S4 \
7 4 Z7 ]! W3 k# `
8
7 y0 W1 B3 ]3 p5 R. P 9 ; ?. m/ m. d+ f
10
4 v: r1 c, h# ], W 11 ( `: Z p# f3 K- ^4 n* C( a. [8 y
1 C4 G; k/ h; m" x2 q$ q2 y
% u7 f2 F$ a2 q% A7 L0 @ 综上我们可以得出结论:想要减少传染病的传播,我们就要在接触数σ \sigmaσ上下功夫。
1 W' B/ I1 L4 x) S, \2 @. A1 m" C & F4 Z2 X8 ~& l. n8 A1 `
& r! S& a% N( R6 f4 h V3 I; c
实战建模 9 U; }( ~' k$ z ]$ [
数据处理
$ v3 A# Y* j9 M2 `1 \ ?
5 I% k U' x4 s% E* h( T
4 T( q* s: u$ o; n3 ?% [ 首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征 $ A! s+ C9 ]9 x& [7 Q* ^/ {1 u
- y5 u# o# i2 K
2 q; ] z/ U% ]' X+ w1 P
. i4 I3 T# V, a! V
5 k6 s+ q3 C9 U* f7 p 然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据 3 ^* ?! p4 X/ W- U; k: m
/ g) v# ~- x0 z8 Q1 ?' P: D$ e# }8 x
! O( J8 q; E5 Y$ \
) {$ h H7 f5 }5 ~% y - s7 O3 T: g5 B" y6 n
然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征 " l" [: P# y% T' l$ s7 g% _
/ b8 M% H) U4 v1 x* D
9 X, f4 s" a0 N+ \
对日期格式进行修改,值保留月和日,并与死亡人数的位置交换 # i _: B) Y# C, H
% T0 M/ O1 L/ N) h 4 e3 g- Q* x( k. I
这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。 # \1 Z6 H& M$ J& w- z9 G9 V
感染人数示意图 2 r% R( u( J# I% T1 Z0 [2 t
+ j. k6 Y0 a2 L) e' h; o" i
2 r6 C4 r" `- c& I5 l9 ?
治愈人数示意图 8 N% i ]8 }! N6 T8 S
9 |/ c' i: E: r: n' W8 {. p
1 D' a4 U5 r" W8 b+ M
* X( p9 i F: X2 o, Z. k' I
" p) L6 W+ M! O
现存患者数量图 7 E2 D* `/ P: l$ D
2 b7 v/ ^7 X8 A, _1 \$ T : j2 o' r& H- [. R2 d
死亡人数示意图 5 v& g t- L0 ?1 x
$ U M# G# t3 n- S$ z3 N) F1 Q$ }$ a
* r; n4 Y. i P0 t& O6 i # I( z r: h! z1 q
% {, P! y# Y) q' j! |# ?& Z7 ^
经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可)
C5 f2 g0 Y4 I" i 将上面清理过的数据存放到csv文件中
}' r! R% k2 x ! H4 F. V* l( \9 X! J
* M; Q; r }4 |0 J/ w, e 模型建立
- c8 \* | ] D/ ?! K* L* H# T 模型假设
" t( ^! u. U6 a- i% V 经过上面数据的分析,我们大体可以进行如下假设: / P" Q& _2 f3 y/ f# X
1.由于不存在封闭情况,考虑开放体系。 - `$ w+ j; u8 G5 ?1 E, L
2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。
4 t. i! ]/ V |3 Y5 H) V 3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N + C* m5 ?8 F/ y, D! p& d# ^2 E
4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。 ; U9 S: j5 [! h) q( C: M' ~8 V
5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.
( @/ z/ y9 x: a- Z 6.设病人每天治愈的比例为 μ \muμ(日治愈率)
+ o1 V' u W$ \) g 7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). ' a0 a: Q3 f4 }) b- U
) h7 c9 V2 m7 C2 K. I " A% j2 h5 }% t( p
模型一
, Q% D9 n5 y8 ~% U# p % j, u& O$ [7 |! |9 r
. K# k, ~! v& a
分析可以得到移出者r(t)=治愈人数+死亡人数 . k t! Y9 M- A( g
通过python数据处理,我们算出了r(t)的值,并将其可视化
+ E$ [$ n, \9 Z. V1 o$ L
$ k+ M. |; V9 a- s. `' _. I/ _ ( U) U7 k* t4 Z0 I# } w' t/ d5 n
6 U; o) V9 h& l! b/ y
" X8 a7 H% c0 U% y7 }+ v5 T/ l 我用MATLAB对其进行了拟合,拟合图像为
- ?$ C3 {. f1 a2 ?
/ E% [" B9 B% B+ T
# E& t T0 w, h5 X
3 ~- M2 W9 u8 g/ D1 g1 h
_' ?% Q' S w3 l' @) z! d$ Y% B 8 {! J' u7 K, \
% ^1 a, \: D* r3 s$ O& Y 分析可以得到患者 i(t)=患病总数-移出者
7 I) z% p' S" w( }# V1 o 可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示 0 P- c* u& F$ m
6 I) D$ e4 b/ t5 v% ?
$ w. K$ L3 p6 @9 v* k 通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为
' }5 E; s5 ~ y3 N1 i: _4 T $ q# ]% V* Z1 {* Z T
1 M D/ e* p+ j( C C
* t4 _7 C5 {, n: \& g# c4 h/ O
' @4 j( W8 @' m: _3 Y8 V ' \8 l; o! y2 B+ w+ ]1 M5 h
; ~0 M! w. G2 e3 l6 I6 }( a
为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有 ) Y- H* ]) X/ k# y7 {9 [: P
! ~0 o+ `. g/ R% y
( ?' E4 S3 I8 \2 s 可以推导出每日新增病例的表达式
c9 Y4 P; @* P: n. m % s3 I9 X6 u+ N6 V8 q- n5 `
8 P q" N& r" z
) p0 l! Q$ Q' h! H L9 g
1 `* O9 d% N2 i1 D
4 R$ W5 y, Q7 Z8 B- p3 k
5 |4 B, o. n3 a6 ?& y3 A 由以上两个公式可以推导出以下两个微分方程 % A/ A, m7 w+ F0 P
) _2 P* {' d( J# p+ `
8 `, |9 E; T w }+ M+ {
- {% |3 a. _9 G1 Z + _" T# ^& _! e( P& k8 L& P! X
可以知道初值
# p% o/ L- \8 T* C i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 9 o5 [( ~ q) K
0
$ |$ @. R. j/ M6 p, t3 R 6 L& V+ u- _9 v4 I
.s(0)=s 4 d) g4 e" Q# z% D: n' d
0 : m# E1 ^- k' _, J2 J/ _
8 r4 Z* J7 L/ z& B" [( {
1 d7 o5 j' y* m: z& T% h" E0 W 因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有:
f6 F8 Y# e, L# j$ M5 s i 0 + s 0 = 1 i_0+s_0=1i $ N3 z- j; S, e i+ ?7 E
0
* Q1 G7 k0 h( i& @, i- \ 4 a- ~& G+ P7 Z
+s 6 x- e& b" B( F
0
# G0 x! S9 k- [ l2 _1 f# g! E
" }5 W# x' O* j; P6 c =1
0 [1 Y& B' v2 E$ h( E( G: U% | 通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像 . B5 K8 @2 a7 G" a1 g) }
8 @; ?3 f( B2 i- o3 x5 v2 v
* f6 R7 N/ y. f7 D7 P8 I : w P% q, b' X7 d2 c7 G; u/ I
9 b' F( A4 z9 w/ s4 o L MATLAB程序如下
+ h& u6 N. N+ |+ m7 x ts=0:40;
k+ Z: a9 Q/ _! r6 U x0=[0.01, 0.99]; # _, u: X+ }! F* D% g, I
[t,x]=ode45(‘ill’,ts,x0);
2 v8 I2 h6 T0 [ r=1-x(:,1)-x(:,2); & \) q, R; S5 [. G# d; R6 }& V
plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2)) / q, a, K1 \# ?9 Q9 w
legend(‘i(t)’,‘s(t)’,‘r(t)’) 3 g* {8 }, ~3 y `, {$ f
3 W" J3 L% u: j) f5 d1 G
7 C+ i4 } z' o. N' N5 v9 J
function y=ill( t,x)
! g% I: X5 g- L$ e* ] a=1;
5 W+ I5 m R* {* i x b=0.5; , {9 e% b( ?' B8 t; O2 n6 s
y=[ax(1)x(2)-bx(1);-ax(1)*x(2)];
, P# ~4 O6 c Y4 } 4 L4 {" ~$ X8 g% c# E
' f8 r5 k2 d- p3 U 结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件
' P7 A, F( P" G2 F
5 V( a3 Q2 P9 O9 `" q 6 m9 \# n6 A+ l/ ]$ z2 n/ T% j
8 J3 a& p+ Q# p% l0 [' u. z
模型二
" E; p( c% K9 V1 J# `) t+ e) h 4 C+ w- l2 A8 P
5 A5 e9 {2 j) d7 b9 c! K
实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..
1 c- F# ]2 p6 n @+ ? (t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和)
' ~" l; u( G: j% L; l N3 l 有 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)
6 K% L( Z; y' a8 z6 u# O9 q3 g 因为s远大于i, r,s(t)视为常数,所以有 * v* X2 k0 ]' W* f! U* ]: q& ]+ K, i
& m$ C8 s$ C6 t* t# Z8 I z9 z: | " d! K( X4 g9 \- V' X, I5 p) G# ^' p
# [2 X& [4 Y3 b# A, R4 D
6 `. x7 E. \, w, K% p- N9 _# }, v 取差分近似导数 4 x0 o: t' h2 V+ j
3 q5 _; b9 B: e h 2 K: P) y# ` Y0 k
' Z1 k) p" J% A( {1 g
: R3 l+ D" O3 A" p- @7 `2 P 我们可以先用真实数据对(t)进行展示并进行拟合
X$ B+ C+ D) B! K) B' W y
8 w/ _ c* B- K, U5 i8 C ) J( {& r* _- U1 U* I% l
5 X e8 m; H6 u8 b$ F3 ?: G
- E- |6 |6 v6 P! W- s 当然同样的方法对(t)进行拟合 ! r) p+ @4 |) Q" p! y8 x
) ^ Q1 p. G! r$ O
! I z7 _# _9 m( ]1 v' g 做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!! - t/ q8 L$ o" C$ ~7 O- ^
冲国奖 0 J; ~" H6 ]4 t/ w/ G" S2 \3 t
冲国奖
6 c, s/ \: l! o" D: G! @ 冲国奖
5 @; S! O9 J2 `; u; T7 Y ————————————————
. `7 W: U$ {- q# l8 L' ^ 版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 % B* i: j& w: i% T
原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630
9 ^5 w( n, ~% r+ Y, }1 p + x6 W. U( L4 \& j
8 i3 U4 ~: G) |8 H- g, t
zan