首頁 > 其他

詳解實現經典SIR傳染病模型的MATLAB程式碼

2019-12-25 11:05:31

SIR模型是傳染病模型中最經典的模型,該模型廣泛用於醫學、交通物流、資訊傳播等領域的模擬研究。SIR模型中的S表示易感者,I表示感染者,R表示移出者。如何用MATLAB軟體實現SIR模型是廣大科研工作者面臨的問題,下面詳細介紹一個用MATLAB實現SIR的例子。


1

首先是SIR傳染病模型,也就是三個微分方程,如圖。其中中的S表示易感者,I表示感染者,R表示移出者。a表示易感者的感染概率,b表示感染者的恢復概率,也就是移出率。


2

然後是編一個模型的程式碼,儲存為sir.m。根據ode45()函數對微分方程的形式要求, y=sir(t,x)實際上是 y'=sir(t,x), y必須是列向量(所以注意sir.m第3行末有個'號)。y(1) = dy1/dt, y(2)=dy2/dt故sir.m第3行意思就是dy1/dt = a* y1*y2-b*y1, dy2/dt= -a*y1*y2,dy3/dt=b*y1,正是sir模型方程(y1=i, y2=s,y3=r)。a和b的值可根據自己的情況設定。


3

再編寫一個執行的m檔案,可命名為sirrun.m,程式碼如下。ode45是求解常微分方程最常的函數。其中@sir是sir函數的控制代碼,[0,40]是t的範圍,[0.04 0.95 0.01]分別是I、S和R的初始值。


4

執行的結果如下 ,其中紅綠線表示S,藍線表示I,線表示R。


5

執行完也會顯示結果資料,由於資料較長,這裡只截圖一部分,如下:



IT145.com E-mail:sddin#qq.com