本站所有资源均为高质量资源,各种姿势下载。
下面是一个简单的MATLAB代码实现SIR模型:
function SIRModel(beta, gamma, N, I0, tmax)
% 参数说明:
% beta: 传播率
% gamma: 治愈率
% N: 总人口数
% I0: 初始感染人数
% tmax: 模拟的时间长度
% 初始化初始感染人数
S0 = N - I0;
R0 = 0;
% 初始化人群的数组
S = zeros(tmax, 1);
I = zeros(tmax, 1);
R = zeros(tmax, 1);
% 设置初始值
S(1) = S0;
I(1) = I0;
R(1) = R0;
% 模拟传播过程
for t = 1:tmax-1
S(t+1) = S(t) - beta*S(t)*I(t)/N;
I(t+1) = I(t) + beta*S(t)*I(t)/N - gamma*I(t);
R(t+1) = R(t) + gamma*I(t);
end
% 绘制图形
plot(1:tmax, S, 'b', 'LineWidth', 2);
hold on;
plot(1:tmax, I, 'r', 'LineWidth', 2);
plot(1:tmax, R, 'g', 'LineWidth', 2);
legend('Susceptible', 'Infected', 'Recovered');
xlabel('Time');
ylabel('Population');
title('SIR Model');
hold off;
end
这个函数可以通过传入不同的参数来模拟不同的SIR模型。参数beta
表示传播率,gamma
表示治愈率,N
表示总人口数,I0
表示初始感染人数,tmax
表示模拟的时间长度。
此函数将绘制出随时间变化的易感者(Susceptible)、感染者(Infected)和康复者(Recovered)的人数曲线。
你可以调用这个函数来进行SIR模型的模拟,如下所示:
beta = 0.3;
gamma = 0.1;
N = 1000;
I0 = 10;
tmax = 100;
SIRModel(beta, gamma, N, I0, tmax);
这将模拟一个传播率为0.3,治愈率为0.1,总人口数为1000,初始感染人数为10,模拟时间长度为100的SIR模型,并绘制出结果。
你可以根据需要调整参数来进行模拟,并进一步扩展这个函数以满足更复杂的SIR模型的需求。