详解实现经典SIR传染病模型的MATLAB代码

作者:分开不是尽头 | 创建时间: 2023-05-13
SIR模型是传染病模型中最经典的模型,该模型广泛用于医学、交通物流、信息传播等领域的仿真研究。SIR模型中的S表示易感者,I表示感染者,R表示移出者。如何用MATLAB软件实现SIR模型是广大科研工作者面临的问题,下面详细介绍一个用MATL...
详解实现经典SIR传染病模型的MATLAB代码

操作方法

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

然后是编一个模型的代码,保存为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的值可根据自己的情况设定。

再编写一个运行的m文件,可命名为sirrun.m,代码如下。ode45是求解常微分方程最常的函数。其中@sir是sir函数的句柄,[0,40]是t的范围,[0.04 0.95 0.01]分别是I、S和R的初始值。

运行的结果如下 ,其中红绿线表示S,蓝线表示I,线表示R。

运行完也会显示结果数据,由于数据较长,这里只截图一部分,如下:

温馨提示

注意代码要用半角字符输入。
如果对你有帮助,请点下方支持一下,谢谢。
点击展开全文

更多推荐