SI模型matlab代码实现作图
时间: 2023-06-17 07:02:38 浏览: 69
以下是SI模型的Matlab代码实现及作图:
```matlab
clear all;
clc;
% 定义参数
beta = 0.01; % 感染率
N = 1000; % 总人口数
I0 = 10; % 初始感染人数
tspan = [0 100]; % 时间范围
% 定义初始值
y0 = [N-I0, I0];
% 定义ODE函数
f = @(t,y) [-beta*y(1)*y(2)/N, beta*y(1)*y(2)/N];
% 解ODE方程
[t,y] = ode45(f, tspan, y0);
% 作图
plot(t, y(:,1), 'r', t, y(:,2), 'b', 'LineWidth', 2);
xlabel('时间');
ylabel('人数');
title('SI模型');
legend('易感人数', '感染人数');
```
运行代码后,会得到一个SI模型的人数随时间变化的图像,其中红色线表示易感人数,蓝色线表示感染人数。可以根据实际情况调整参数,得到不同的模拟结果。
相关问题
si传染病模型matlab代码
以下是SI模型的MATLAB代码示例:
```
% 设置模型参数
beta = 0.5; % 传染率
N = 1000; % 总人口数
I0 = 1; % 初始感染人数
T = 100; % 模拟时间
% 初始化模型状态
S = N - I0; % 初始易感人数
I = I0; % 初始感染人数
% 运行模拟
for t = 1:T
% 计算新感染人数
newI = round(beta * S * I / N);
% 更新状态变量
S = S - newI;
I = I + newI;
% 绘制图形
plot(t, S, 'bo', t, I, 'ro');
xlabel('时间');
ylabel('人数');
legend('易感者', '感染者');
drawnow;
end
```
该代码使用SI模型来模拟传染病的传播。其中,beta是传染率,N是总人口数,I0是初始感染人数,T是模拟时间。代码中使用for循环来迭代模型状态,每次计算新感染人数,更新状态变量,并绘制图形。最后,运行模拟并输出结果。
SI传染病模型matlab代码
以下是一个简单的SI传染病模型的MATLAB代码:
```matlab
% 参数设置
beta = 0.5; % 传染率
N = 1000; % 总人口数
I0 = 10; % 初始感染人数
T = 100; % 模拟时间
% 初始化
S(1) = N - I0;
I(1) = I0;
% 模拟SI模型
for t = 2:T
S(t) = S(t-1) - beta*S(t-1)*I(t-1)/N;
I(t) = I(t-1) + beta*S(t-1)*I(t-1)/N;
end
% 绘制图像
plot(1:T, S, 'b-', 1:T, I, 'r-');
xlabel('时间');
ylabel('人数');
legend('易感者', '感染者');
```
该代码使用欧拉方法对SI传染病模型进行了数值模拟,并绘制了易感者和感染者的人数随时间的变化曲线。其中,参数beta表示传染率,N表示总人口数,I0表示初始感染人数,T表示模拟时间。在模拟过程中,我们使用S和I两个数组分别记录每个时刻的易感者和感染者人数。