日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

MATLAB 传染病模型

發布時間:2023/12/15 综合教程 44 生活家
生活随笔 收集整理的這篇文章主要介紹了 MATLAB 传染病模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近新型冠狀病毒疫情越來越嚴重了,待在家中沒法出去,學習一下經典傳染病模型。

這里總結了五個模型,分別是SI模型,SIS模型,SIR模型,SIRS模型,SEIR模型。

這幾種模型的特點先介紹一下。

首先定義SEIR:

S為易感者 (Susceptible),指未得病者,但缺乏免疫能力,與感染者接觸后容易受到感染;

E為暴露者 (Exposed),指接觸過感染者,但暫無能力傳染給其他人的人,對潛伏期長的傳染病適用;

I為感病者 (Infective),指染上傳染病的人,可以傳播給 S 類成員,將其變為 E 類或 I 類成員;

R為康復者 (Recovered),指被隔離或因病愈而具有免疫力的人。如免疫期有限,R 類成員可以重新變為 S 類。

一、SI模型

該模型只考慮易感者和感病者,感病者不斷去感染易感者。

隨著時間推移,該模型感染者越來越多直到所有人都感染。

其微分方程為:

其中beta為感染率。

二、SIS模型

該模型依然只考慮易感者和感病者,感病者不斷去感染易感者,這里感病者會得到治療恢復成易感者,不過恢復后依然可能得病。

隨著時間推移,該模型感染者和易感者會達到動態平衡。

其微分方程為:

其中beta為感染率,gamma為治愈率。

三、SIR模型

該模型考慮易感者、感病者與康復者,其中感病者不斷感染易感者,而感病者又不斷接受治療成為康復者,康復者因為得到抗體不會再成為易感者。

隨著時間推移,該模型康復者越來越多,最終所有人都成為康復者。

其微分方程為:

其中beta為感染率,gamma為治愈率。

四、SIRS模型

該模型考慮易感者、感病者與康復者,其中感病者不斷感染易感者,而感病者不斷接受治療成為康復者,康復者獲得抗體能夠抵抗一段時間,不過最終還是會成為易感者。

該模型和SIS模型很像,區別就是康復者能夠抵抗一段時間,也就是有一定的復感率,而SIS模型的復感率為1。

隨著時間推移,該模型同樣會達到一個動態平衡。

其微分方程為:

其中beta為感染率,gamma為治愈率,alpha為復感率。

五、SEIR模型

該模型四種參與者全部考慮,其中感病者不斷感染易感者,易感者得到病毒會成為潛伏者,潛伏者依然能夠使易感者感染,潛伏者有一定概率自己痊愈,感染者接受治療也能夠痊愈,痊愈后不再能夠感染該病。

隨著時間推移,該模型最終也是所有人都會成為康復者。

其微分方程為:

其中beta為感染率,gamma1為潛伏期康復率,gamma2為患者康復率,alpha為潛伏期轉陽率。

各模型matlab代碼如下,其中ode45為4階龍格庫塔法解微分方程,具體實現見上一篇文章:

main.m:

 1 clear all;
 2 close all;
 3 clc;
 4 
 5 %%SI模型
 6 [t,h] = ode45(@SI,[0 120],0.01);    %0.01為初始感染人口占比
 7 plot(t,h,'r');
 8 hold on;
 9 plot(t,1-h,'g');
10 legend('感染人口占比I','健康人口占比S');
11 title('SI模型')
12 
13 %%SIS模型
14 figure;
15 [t,h] = ode45(@SIS,[0 120],0.01);   %0.01為初始感染人口占比
16 plot(t,h,'r');
17 hold on;
18 plot(t,1-h,'g');
19 legend('感染人口占比I','健康人口占比S');
20 title('SIS模型')
21 
22 %%SIR模型
23 figure;
24 [t,h] = ode45(@SIR,[0 300],[0.01 0.99]);    %[初始感染人口占比 初始健康人口占比]
25 plot(t,h(:,1),'r',t,h(:,2),'b');
26 hold on;
27 plot(t,1-h(:,2),'g');
28 legend('感染人口占比I','健康人口占比S','治愈人口占比R');
29 title('SIR模型')
30 
31 %%SIRS模型
32 figure;
33 [t,h] = ode45(@SIRS,[0 300],[0.01 0.99 0]); %[初始感染人口占比 初始健康人口占比 初始治愈人口占比]
34 plot(t,h(:,1),'r',t,h(:,2),'b');
35 hold on;
36 plot(t,h(:,3),'g');
37 legend('感染人口占比I','健康人口占比S','治愈人口占比R');
38 title('SIRS模型')
39 
40 %%SEIR模型
41 figure;
42 [t,h] = ode45(@SEIR,[0 300],[0.01 0.98 0.01 0]);  %[初始感染人口占比 初始健康人口占比 初始潛伏人口占比 初始治愈人口占比]
43 plot(t,h(:,1),'r');
44 hold on;
45 plot(t,h(:,2),'b');
46 plot(t,h(:,3),'m');
47 plot(t,h(:,4),'g');
48 legend('感染人口占比I','健康人口占比S','潛伏人口占比E','治愈人口占比R');
49 title('SEIR模型')

SI.m:

1 function dy=SI(t,x)
2 beta = 0.1;    %感染率
3 dy=beta*x*(1-x);

SIS.m:

1 function dy=SIS(t,x)
2 beta = 0.1;    %感染率
3 gamma= 0.02;    %治愈率
4 dy=beta*x*(1-x)-gamma*x;

SIR.m:

1 function dy=SIR(t,x)
2 beta = 0.1;    %感染率
3 gamma = 0.02;    %治愈率
4 dy=[beta*x(1)*x(2)-gamma*x(1);
5     -beta*x(1)*x(2)];

SIRS.m:

1 function dy=SIRS(t,x)
2 beta = 0.1;      %感染率
3 gamma = 0.02;    %治愈率
4 alpha = 0.01;    %治愈復感率
5 dy=[beta*x(1)*x(2)-gamma*x(1);
6     -beta*x(1)*x(2)+alpha*x(3)
7     gamma*x(1) - alpha*x(3)];

SEIR.m:

1 function dy=SEIR(t,x)
2 beta = 0.1;         %感染率
3 gamma1 = 0.05;      %潛伏期治愈率
4 gamma2 = 0.02;      %患者治愈率
5 alpha = 0.5;        %潛伏期轉陽率
6 dy=[alpha*x(3) - gamma2*x(1);
7     -beta*x(1)*x(2);
8     beta*x(1)*x(2) - (alpha+gamma1)*x(3);
9     gamma1*x(3)+gamma2*x(1)];

模型結果如下:

SI模型:

SIS模型:

SIR模型:

SIRS模型:

SEIR模型:

總結

以上是生活随笔為你收集整理的MATLAB 传染病模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。