实验题目 传染病模型的数值模拟分析
实验目的 会编程求常微分方程(组)的数值解,辅助分析传染病的蔓延和控制
实验学时 2
实验软件 Matlab
原理方法 M文件的编写,常微分方程数值解的求解,不同参数、初值情况下解的对比分析。
实验内容 数值解辅助分析常微分方程(组)。
实验步骤:
1.建立传染病的SIS模型
2.计算不同参数和初值情况下的方程数值解并作图,对比分析传染病传播变化趋势。
3.建立传染病的SIR模型
4.计算不同参数和初值情况下的方程组数值解并作图(包括相平面图),对比分析传染病传播变化趋势,及应对策略。
解答:
1.建立传染病的SIS模型
B = 0.6;
gama = 0.4;
N = 1000;
S0 = 800;
I0 = 200;
odefun = @(t, y) [gama*y(2) - B*y(1)*y(2)/N; B*y(1)*y(2)/N - gama*y(2)];
tspan = [0 50];
y0 = [S0; I0];
[t, y] = ode45(odefun, tspan, y0);
figure;
plot(t, y(:,1), 'b', t, y(:,2), 'r', 'LineWidth', 2);
xlabel('时间');
ylabel('人数');
legend('s', 'i');
title('SIS模型');
3.建立传染病的SIR模型
function sir_model()
beta = 0.3;
gamma = 0.1;
S0 = 0.9;
I0 = 0.1;
R0 = 0;
y0 = [S0, I0, R0];
tspan = [0, 100];
[t, y] = ode45(@sir_ode, tspan, y0);
plot(t, y);
legend('s', 'i', 'r');
xlabel('时间');
ylabel('人口数量');
title('SIR模型');
grid on;
end
function dydt = sir_ode(t, y)
beta = 0.3;
gamma = 0.1;
S = y(1);
I = y(2);
R = y(3);
dSdt = -beta * S * I;
dIdt = beta * S * I - gamma * I;
dRdt = gamma * I;
dydt = [dSdt; dIdt; dRdt];
end