+ v, [ ?* n- X$ c- Y! g假设: + F/ s$ v2 x/ C! j9 Q! {1 E# z5 \6 Y; K; Q" {
! q9 |$ ^) W" V& i- t& P9 f
传染病有免疫性如天花、麻疹等——病人治愈后移出感染系统,称移出者(Removed). . b0 l B% I, _) }; u5 |" E总人数N不变,健康人、病人和移出者的比例分别为s ( t ) , i ( t ) , r ( t ) s(t), i(t), r(t)s(t),i(t),r(t). 7 J0 f! h- O- r' C& U病人的日接触率为λ \lambdaλ , 日治愈率为μ \muμ, 接触数 σ = λ μ \sigma=\frac{\lambda}{\mu}σ= ( K$ K$ N# @( r8 M3 y
μ 0 g$ [# K- m- p: |7 b I$ Tλ % J+ {$ | b- Q- M2 `; d' m 0 `, r3 {4 i: u2 Q% D& P6 i- E; c" F
5 r( z: Z& _( v- Z! q# v
建模:5 P- j" ?& {* D9 y6 i
s ( t ) + i ( t ) + r ( t ) = 1 s(t)+ i(t)+ r(t)=1s(t)+i(t)+r(t)=1 5 C( `+ q1 j+ O) E这个就是病人减去治愈的人,和上一个模型是一样的! p; f$ Y8 ~; D R6 v
5 k+ X+ N0 G6 |$ X6 V3 J + }6 q' h. G: J% F% }! F: C因为有治愈后是有免疫性的,所以可能被感染的总人数要减少,减去移除者就是0 n: [! m. a. W4 U* p' x) d
5 R6 k$ L7 n" M$ r; ?- w6 k- E6 L; ?& @ + i' j0 K/ ]2 |' B1 \将上式化简为: 6 y. o# w* D' d9 P# n , m4 n# r0 i6 ?8 l % }/ N: V' z8 n; Vi 0 + s 0 ≈ 1 i_0+s_0\approx 1i # `+ A/ j" ^% M) V7 p
0& |" P" y7 C, c5 v/ O$ ?
! |: L" S7 a# o" z* b% [ +s 0 J, Z6 y# g0 [# O' O
0 # g" N' k8 t+ G 6 U+ w1 M! W: x. x3 N
≈1(通常r ( 0 ) = r 0 r(0)=r_0r(0)=r 4 c0 z' g% e! J/ P; S. D* Z
0) F! a* i0 M" G# C5 k- X# |
% c& u4 |+ y0 d% b" ]- l T 很小)9 [. P4 t( V! d- r" ?0 u
) M J# C I1 Z1 W- y: e
$ M9 h* C, }8 e% B9 A
关于i(t) , s(t) 的非线性微分方程组,没有解析解,只能通过数值计算得到s(t), i(t), r(t)的曲线,下面来看下曲线的数值解的MATLAB程序 0 W- N8 A% F5 `1 L; ]3 Z3 K8 P I' n
" }/ x* m$ d+ ^6 _$ c9 K这里我们先设λ = 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 3 L- ?3 G8 D. Q2 s
0% v# _3 {( X5 d9 V6 j; @: L
6 Q& H6 q; B4 _0 H& e
=0.01,s 4 o! H- @# v- U" f0 T06 f( M$ q0 `" F, C+ M) S5 S$ c# ~+ F
3 Z3 p$ W- y, y0 K
=0.99 & y! a0 k0 Y* u" u% L' M3 [6 R也就是平均一个病人人传染一个正常人,治愈率为0.5;开始的病人比例为0.01,正常人为0.99,设没有天生带有病毒抗体的人,所以r 0 = 0 r_0=0r / B! }6 z" g' _0 : x* Q, D3 x. u# ~, l 6 c) S$ v$ ]( z9 Q1 {. u2 F- c
=0,之后若果病人被治愈,则具有抗体了,有抗体的人为:r = 1 − i − s r=1-i-sr=1−i−s2 R' k& [+ K4 A
5 B q# ?. @/ J: j9 M8 Q# W
( b' R; ?& x) uts=0:40;4 a+ k. } s. \6 J+ p3 m8 R
x0=[0.01, 0.99]; ( M) h# v% E+ g. c7 Z8 N0 l4 K4 ]+ J* Z[t,x]=ode45('ill',ts,x0);. d' T# p1 m% H C& O6 y! v, b
r=1-x(:,1)-x(:,2);; ?7 K" W4 c+ N) t" a% k' B+ z& B
plot(t,x(:,1),t,x(:,2),ts,r),grid+ r: {/ a, I* \) C$ Q" z/ d
legend('i(t)','s(t)','r(t)')8 {6 u- q, A$ w! \4 O; u; G
% X- R" e6 t8 t: Y+ {首先,我用python爬虫爬取了丁香医生官方数据,一共5534条数据 特征包括感染、死亡、治愈的总数,当日感染、死亡、治愈新增,疑似病例,时间,省份等14个特征3 i9 h% L' Z: p$ v" m
: G" g, ~; R, r L# F! ~( C5 d) J7 x# E( o4 {
9 U" V/ ^6 T. m' f/ B# {0 c
. V7 \- c# K( i; T. v* _# c' z
然后用python进行数据提取,提取了较为典型的湖北省的数据作为我的参考依据 : t' o; u$ Y2 T9 a* U+ x; ?% T# a! `' C. c
5 f8 V# Q5 l0 M4 O. x L u( ~! x& H+ r3 {7 q: _. d
! s' O/ \9 t' B1 e, R( G8 ] y( k
然后用python对数据进行清洗,提取出了患病总数,现存患者总数,死亡总数,治愈总数,时间,省份这几个特征 + f2 c$ D5 D" d/ N. m0 P3 P8 i/ O7 V& h( H, o B
5 g; n2 B! L, c: K' A+ Y$ O对日期格式进行修改,值保留月和日,并与死亡人数的位置交换 F4 x2 Y1 ?1 E. Z) {
2 F" l2 m) v1 P$ q: f( @4 A$ r2 w/ @2 {7 W. O u
这里我用python对提取的四个特征分别进行了数据分析(主要包括计算最值,平均值等,),并把1.20日作为第一天,7.02日作为最后一天也就是第165天,做了可视化可视化处理。$ ~" {( B1 U2 O6 s& X D$ ?
感染人数示意图0 H" w" x5 e' p; U+ o9 r3 q! W% i
" u* ]: C! \1 j3 u/ N( r5 v( z
- F6 B b* z1 |! O7 U: I5 F治愈人数示意图 ' J: T# Q. b, V" O $ w: G* M/ {7 s' r, N8 n) } 0 d8 E5 H. v" |2 v0 y2 r4 a/ x# J* y Y {0 v; E3 A/ w9 ?9 i
( D3 w- q4 k( N. a* }
现存患者数量图( w ]* u. ]3 t) \' @! O$ R
2 ]% D0 x Q* I% X
k% T9 p, @/ N( |* l$ D/ |8 j
死亡人数示意图 5 `7 C0 Q1 a/ n3 m. z / q# I3 z5 s2 u* r H! Z6 E% v * V6 O- L+ Z4 {4 z, z' l5 W- n" T1 c; ?1 ]1 v: L
1 r# Q! k0 G `. R
经过上面的图片与describe数据分析,我们发现有一天是异常的,患者多出了平时的十倍左右,经过查阅资料,这天因加强了检测标准,所以增多了很多。为了避免这个数据的影响我们选择将这一天删去(或者用平均数或中位数代替也可) / V {5 V* i3 j. I' D4 ^& }$ L. F将上面清理过的数据存放到csv文件中 / o" n* q7 f+ q, G- t" m. n& C/ J8 u! V# j. g. c8 M
! |) A. A6 a# @( X" j
模型建立: s+ t3 X8 M: @; M
模型假设; g [* k" _' x+ q$ U, ?% e9 A
经过上面数据的分析,我们大体可以进行如下假设: 8 X+ s: b, i+ v' ]$ d7 c; f1.由于不存在封闭情况,考虑开放体系。 % G% n& c/ E/ F" j2.目前数据以天为单位发布,因此不考虑连续变化情况,只考虑离散的方程。, L4 ~2 H: {7 d( U1 _: |& A
3.新型冠状病毒的治愈人数和死亡人数相对较 小,因此只考虑 Susceptible(易感)和 Infected(感染) 两类人群。设易感人群总数为N & [/ j; v$ S7 q( W u4.经专家鉴定新冠病毒患者治愈后至少六个月之内不会再被感染,所以设治愈后移出易感人群。 * _# b+ @8 l2 ]( s( r0 q5.设每个病人每天有效接触人数为 λ \lambdaλ(日接触率),且使接触的健康人致病.- _% C7 _" H5 S
6.设病人每天治愈的比例为 μ \muμ(日治愈率) . C X! P) s5 J" }: e7.时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). * ]' c8 ^# @: Q+ T& H9 v - Q# q: Q8 G6 Y$ g% R 9 y* X) x6 \) o% |. A: d" {4 s" {模型一9 M c, ]; _ Y- n% z
* C$ x( T4 Q. i8 D- B- V( ^8 J- u, V0 W9 g% Y+ X( C7 L w
分析可以得到移出者r(t)=治愈人数+死亡人数5 D* }- a; l, ]/ M0 Q t' ?
通过python数据处理,我们算出了r(t)的值,并将其可视化 % [% J! m0 h0 h5 ~- U, A: L9 Y- {4 A% i8 G2 Q6 P
! |" r5 ~1 D; T ) G. R$ T& L+ A9 k+ H+ J% O4 k6 X
我用MATLAB对其进行了拟合,拟合图像为 - e8 @- d: {; y* ?3 e( `$ c & d" ?8 f. c. l* f8 e3 f$ w, n# ^ . ?, T: L0 a* q& Z) @" C* T' { ! F0 q3 h0 a* s( t3 v$ b. D * e2 O) f- t+ D- t; s/ t% z% q+ T
, S. Z: o: O4 T. M
分析可以得到患者 i(t)=患病总数-移出者% S% d5 K" x4 K$ K
可以通过csv文件的currentConfirmedCount 直接获得i(t)数据,当然也可以通过 i(t)=confirmedCountv - r(t)获得,对此我也做了可视化展示0 w- V& S7 p7 `
7 N u+ Z: f: _+ P% b+ u( k: k3 _( M+ m
通过MATLAB程序对其进行拟合,可以得到r(t)的函数图像大致为- W( S( R# g/ `4 X" ]$ I( k, U9 k
' R5 m A3 d3 h! @, M; g
: x) S4 Z9 ~' G1 A2 P; X " j( k. ?0 `! {2 x+ f! ?: r" K4 P' m% Q$ z
& B2 I8 \5 A7 R. A4 A7 ]2 w% S
) x1 I1 q- Y4 U$ ^$ a* c为了方便,利于公式推导,我们先设时刻t健康人、病人和移出者的数量分别为 s(t), i(t), r(t). 所以有 8 V6 }" R( f6 H0 B 4 T4 L, X! S- [* \4 b8 p; j6 q* n n, v
可以推导出每日新增病例的表达式5 S$ \# O: a$ V# r: y- L
/ E$ v4 K4 I: ]5 N1 N; L
6 |. D" j& M# U" [: q& |' g& @5 j6 ^5 K9 U% T
/ i* e, H! a9 `7 e$ V
/ v2 A9 l1 }9 F$ w 7 W# Q! P/ W+ c6 _# P由以上两个公式可以推导出以下两个微分方程 ( `% |! O" v( k: b- t7 Y, \& x. z* c( D6 P
. g1 w: I/ e% Y. l/ _ s" J' B3 T: P& R6 U1 Y3 n
Q0 _4 @% `5 F" g可以知道初值: F a" \! k+ d8 F% T
i ( 0 ) = i 0 . s ( 0 ) = s 0 i(0)=i_0.s(0)=s_0i(0)=i 2 {9 \: ?# @. Z- X, r! O
04 D# V8 m, V, f" i% g/ D, t
" a. d3 v ?: m
.s(0)=s 1 x4 o# d; f9 U: K* j, X05 Y, c) O& e% G* n1 i9 o* ?
$ ^2 u8 p; N' J) d9 y$ V
- Z n7 M# ^2 Z2 T z/ q9 j" b因为一开始治愈的和死亡的肯定很少,所以r0可以看为0,于是就有: 1 O; Q4 ^& }* {; t3 ?i 0 + s 0 = 1 i_0+s_0=1i 7 l" x+ k. C5 d9 y
0 . l! [0 X5 p& o 5 C! |1 `0 y. M: N9 W +s , d& @+ B" I* k! y0 @( }
0 $ E/ n" F( }# X& E 1 c, Y! P3 a( `. T1 V# {$ L
=18 h# o0 \' v. m
通过解以上微分方程我们可以根据经验假设λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)的值分别为1和0.5(也就是每个患者可能使1个正常人患病,患者可能有0.5的概率被治愈);由于一开始患者肯定比正常人少很多,所以我们设i0=0.01,s0=0.99。对其求解可以得到s(t), i(t), r(t),的变化图像6 q! H! ]7 M5 u! a
2 h8 H4 |: N* G
7 k0 P# z$ ]' S5 E6 \3 j# R
6 i5 [ X9 b n# C
" }. s5 v' ?6 Y6 j$ `
MATLAB程序如下 ) l4 A1 t$ C$ l; y1 Lts=0:40; `" q, B' I, |; R7 p% J/ t Yx0=[0.01, 0.99];' P6 k; {1 P; h6 Y' l2 K V
[t,x]=ode45(‘ill’,ts,x0); ) v) s, W" \! D1 t6 U: xr=1-x(:,1)-x(:,2);, o! H5 H* n* W
plot(t,x(:,1),t,x(:,2),ts,r,ts,x(:,1)/x(:,2)) 4 o. F" w; Y$ q3 Klegend(‘i(t)’,‘s(t)’,‘r(t)’) 9 z/ c5 v; y) u5 B& x* z - D* i3 n0 B: y/ w 1 ~1 e5 Z: ^$ \- U8 t* kfunction y=ill( t,x); D/ S$ Z6 \4 i% U* R+ |4 M
a=1; X( R B4 i' q& [+ U1 cb=0.5; $ B& N+ d0 D) A& w6 L0 @* \y=[ax(1)x(2)-bx(1);-ax(1)*x(2)]; # ?; @6 d6 [$ `4 |* e9 [, M9 R8 e# l. ^6 S4 a
0 ~6 s! N7 h0 v) w _5 G# r2 ^
结果分析:患病人数肯定有个高潮,但之后高潮就会减弱,并逐步降低为0。随着医疗卫生条件的不断提升,患者的 λ \lambdaλ(日接触率)肯定降低,μ \muμ (日治愈率)肯定上升,所以我们可以把λ \lambdaλ调一点为0.8,μ \muμ调高一点为0.6,可以得到以下趋势图。所以应对传染病很关键的一点是我们要提高医疗卫生条件2 d1 i8 V5 P/ K2 u8 N% E
% P0 `# W8 t: G( |( b4 T ; u% u- I2 V3 ^0 U" q X2 y: _. [0 O. \# e, q
模型二7 Z. m- o1 c9 |9 V% `7 p
& ^) c) v3 S. R6 T$ _2 A$ b4 r
1 U& I% n2 e! L( |
实际上,λ \lambdaλ (日接触率)和 μ \muμ(日治愈率)都是随着时间变化的,这里我们设s(t), i(t), r(t) 为第t天健康人、病人、移除者(病愈与死亡之和)的数量, s(t)+ i(t)+r(t)=N..7 q/ H9 h/ L& Q7 b& V+ `1 r
(t), (t) ~第t天感染率, 移除率(治愈率与死亡率之和). M# c! K( [( a' Y, j
有 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)4 Q- |9 A8 e8 O1 a! G
因为s远大于i, r,s(t)视为常数,所以有 ; j" E4 Z. M7 [8 k! a2 L" f9 ]- S# ?# } r* ~; [; g( [
/ A A( g6 d0 o$ t! ]1 l; [9 E
1 a9 J0 f( |; ^3 B
, _, Z- s6 l v6 {) Q, x
取差分近似导数 / ^. N5 g0 r8 Y! y( m1 b1 N3 x, w# D& c6 t
& y/ Z8 M0 U2 z9 a! Z0 Z( I" o/ X9 ~" b. U" M7 y
) y6 S, C6 I/ c/ z( r4 q
我们可以先用真实数据对(t)进行展示并进行拟合0 h h. ?0 Q, t. y# N5 q3 N
4 e+ n0 _) Y* Q
$ J- N; L) U3 h/ o: a& y. p1 y
3 l- u" d$ y4 _, k, o% g& ?
9 R4 l- U1 o3 d5 s+ m. S# A" V. F当然同样的方法对(t)进行拟合 ( N# J( \6 i7 o8 [/ I1 |. J$ c7 w. m
+ }1 F* D5 L1 v6 ^, Z0 |0 Z
做不出来了,好难,光这些东西就弄了四天,到了数学建模国赛得多难多累啊,哎,让我这个小白手足无措。毕竟还没有正规的培训,这个模型等期末考完试一定好好做做!!!6 I& q( E7 Y+ W' w* \0 y$ {- ^
冲国奖 / |: Z9 b, x& }冲国奖 ' |7 b$ s4 L: ^( e% F3 U' f W. l冲国奖$ o2 z+ x! h7 c
———————————————— $ p. a. R$ x ?: X版权声明:本文为CSDN博主「小白不白嘿嘿嘿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。( U/ ~2 h% u8 L/ A+ Q2 \
原文链接:https://blog.csdn.net/weixin_45755332/article/details/107094630) V" S7 [5 A! m7 Q& p) o$ G! i
$ j9 z; _) t% C: p6 i
7 K; r% P1 Y! c- e0 f: a