1.程序功能描述
基于龙格库塔算法的SIR病毒扩散预测,通过龙格库塔算法求解传染病模型的微分方程。输出易受感染人群数量曲线,感染人群数量曲线,康复人群数量曲线。
2.测试软件版本以及运行结果展示
MATLAB2022a版本运行
3.核心程序
```Time1 = 1; % 设定时间区间的起始点a为1
Time2 = 215; % 设定时间区间的终止点b为215
Ra0 = 2.79; % 设定基本再生数R_0为2.79
Popu = 9969510; % 设定总人口数
Popv = 2387785; % 设定已接种疫苗的人数
Seck0 = 116; % 设定初始感染者人数
Recv0 = 1232727; % 设定初始康复者人数
gamma = 1/10; % 设定康复率gamma为1/10
Seck1 = Popu - Popv - Recv0; % 计算初始易感者人数
beta = (Ra0gamma)/(Seck1); % 计算感染率beta
% 设定初始状态向量y,包括易感者、感染者和康复者
y = [Seck1, Seck0, Recv0];
f = @(t,y) [-betay(1)y(2); y(2)(betay(1) - gamma); gammay(2)]; % 定义微分方程组
[t,w] = func_rungekutta(Time1,Time2,360,y,f); % 使用Runge-Kutta方法求解微分方程组
figure(1) % 创建第一个图形窗口
hold on; % 保持当前图形,以便在同一图形上绘制多条曲线
plot(t,w,"LineWidth",2); % 绘制曲线,线宽为2
legend('易受感染','感染','恢复');
title('新冠-洛杉矶'); % 添加标题
xlabel('时间 (days)');
ylabel('人口');
```
4.本算法原理
SIR模型是传染病动力学中经典的数学模型之一,用于描述在封闭人群中疾病的传播过程。模型假设人群被分为三个互不相交的类别:易感者(Susceptible,记为S),感染者(Infected,记为I),和康复者(Recovered,记为R)。SIR模型通过一组常微分方程来描述这三类人群之间的动态变化。SIR模型可以用以下常微分方程组来表示:
SIR模型解释
第一个方程描述了易感者人数的减少,这是由于易感者与感染者接触后被感染。
第二个方程描述了感染者人数的变化,它由两部分组成:新感染的人数(正比于易感者和感染者的乘积)和康复的人数(正比于感染者人数)。
第三个方程描述了康复者人数的增加,它与感染者康复的人数相等。
初始条件和参数
为了求解SIR模型,需要设定初始条件 (S(0)),(I(0)),和 (R(0)),以及参数 (\beta) 和 (\gamma)。初始条件通常根据疫情爆发初期的观察数据来确定,而参数则需要通过拟合模型到实际数据来估计。
模型求解
SIR模型可以通过多种方法求解,包括解析解法和数值解法。对于非线性微分方程,通常使用数值解法,如欧拉法、龙格-库塔法等。在实际应用中,由于模型通常是非线性的,因此数值解法更为常用。
预测和控制
通过求解SIR模型,可以预测未来一段时间内感染者人数的变化趋势,从而为公共卫生决策提供支持。例如,可以预测疫情高峰到来的时间和规模,评估不同干预措施(如社交隔离、疫苗接种等)对疫情发展的影响。
模型局限性
尽管SIR模型在描述疾病传播方面非常有用,但它也有一些局限性。例如,它假设人群是均匀混合的,忽略了空间结构和人口异质性;它假设康复者不会再次感染,这在某些情况下可能不成立;此外,模型参数可能需要随着疫情的发展而调整。