matlab传染病模型代码
时间: 2023-10-02 07:07:31 浏览: 73
下面是一个基本的SIR传染病模型的MATLAB代码示例:
```matlab
% 基本SIR传染病模型
% S: 易感者数量
% I: 感染者数量
% R: 恢复者数量
% beta: 传染率
% gamma: 恢复率
% t: 时间
% N: 总人口数
% y: 存储每个时间步的S、I、R数量
function dydt = SIRmodel(t, y, beta, gamma, N)
S = y(1);
I = y(2);
R = y(3);
dSdt = -beta * S * I / N;
dIdt = beta * S * I / N - gamma * I;
dRdt = gamma * I;
dydt = [dSdt; dIdt; dRdt];
end
% 示例用法
N = 1000; % 总人口数
I0 = 1; % 初始感染者数量
S0 = N - I0; % 初始易感者数量
R0 = 0; % 初始恢复者数量
beta = 0.3; % 传染率
gamma = 0.1; % 恢复率
tspan = [0 100]; % 时间范围
y0 = [S0; I0; R0]; % 初始状态
[t, y] = ode45(@(t, y)SIRmodel(t, y, beta, gamma, N), tspan, y0);
% 绘图
plot(t, y(:, 1), 'b', 'LineWidth', 2); % 易感者数量
hold on;
plot(t, y(:, 2), 'r', 'LineWidth', 2); % 感染者数量
plot(t, y(:, 3), 'g', 'LineWidth', 2); % 恢复者数量
xlim([0, 100]);
xlabel('时间');
ylabel('人数');
legend('易感者', '感染者', '恢复者');
```
这段代码使用ode45函数解决ODE方程。您可以更改beta和gamma的值,以探索它们对传染病传播的影响。
阅读全文