用Matlab求SIR模型的数值解,分析变化规律
时间: 2024-04-02 11:36:11 浏览: 136
SIR模型是一种描述传染病传播过程的数学模型,其中S表示易感者,I表示感染者,R表示恢复或免疫者。SIR模型的微分方程组如下:
dS/dt = -βSI
dI/dt = βSI - γI
dR/dt = γI
其中,β表示感染率,γ表示恢复率。为了求解SIR模型的数值解,可以使用ode45函数。下面是一个简单的MATLAB程序,用于求解SIR模型的数值解:
```
function sir()
% SIR模型的数值解
% 参数设置
beta = 0.3;
gamma = 0.2;
tspan = [0 200];
y0 = [0.99; 0.01; 0];
% 求解微分方程组
[t, y] = ode45(@sir_equations, tspan, y0);
% 绘制图像
plot(t, y(:,1), '-r', t, y(:,2), '-g', t, y(:,3), '-b');
legend('S', 'I', 'R');
xlabel('时间');
ylabel('人数');
% 微分方程组
function dydt = sir_equations(t, y)
dydt = [-beta*y(1)*y(2); beta*y(1)*y(2)-gamma*y(2); gamma*y(2)];
end
end
```
程序中,先设置了SIR模型的参数,包括感染率β和恢复率γ,时间区间tspan和初始值y0。然后,使用ode45函数求解微分方程组,并绘制S、I、R三者随时间变化的图像。
运行程序,可以得到S、I、R三者随时间变化的图像。从图像中可以看出,感染者数量一开始增加,然后达到峰值后逐渐减少,最终收敛到一个稳定值。易感者数量和免疫者数量则呈相反的趋势,一开始数量较高,然后逐渐减少,最终收敛到一个稳定值。这个稳定值取决于感染率和恢复率的大小。当感染率大于恢复率时,稳定值中感染者数量较高;当恢复率大于感染率时,稳定值中易感者和免疫者数量较高。
阅读全文