目录

2025-01-15-数学建模微分方程模型传染病模型

数学建模微分方程模型——传染病模型

病毒也疯狂:细说传染病微分方程模型的那些事儿

“数学是打开科学大门的钥匙,而微分方程则是理解世界变化的密码。”

大家好!今天我们要聊一聊一个既严肃又有趣的话题——传染病微分方程模型。别急,听起来高大上,其实一点也不枯燥。坐稳了,带你穿越数学的时空隧道,揭秘传染病模型的奥秘!

一、前言

传染病模型成为了热门话题。但你知道这些模型是怎么建立的吗?它们背后的数学原理是什么?别担心,即使你数学只学到九九乘法表,今天也能听懂!

二、传染病模型的基本概念

1.1 SIR模型

首先登场的是我们的主角—— SIR模型 。SIR代表易感者(Susceptible)、感染者(Infected)和康复者(Recovered)。

1.1.1 模型假设
  • 人口固定 :没有出生和死亡。
  • 均匀混合 :每个人都有可能接触到其他人。
  • 立即感染 :易感者接触感染者后立即成为感染者。
1.1.2 微分方程

数学表达如下:

{ d S d t

− β S I d I d t

β S I − γ I d R d t

γ I \begin{cases} \frac{dS}{dt} = -\beta SI \ \frac{dI}{dt} = \beta SI - \gamma I \ \frac{dR}{dt} = \gamma I \end{cases}

d

t

d

S

=

βS

I

d

t

d

I

=

βS

I

γ

I

d

t

d

R

=

γ

I

其中:

  • S S

    S :易感者人数

  • I I

    I :感染者人数

  • R R

    R :康复者人数

  • β \beta

    β :传染率

  • γ \gamma

    γ :康复率

1.2 模型解析

  • **传染率

    β \beta

    β** :一个感染者每天能感染的易感者人数。

  • **基本再生数

    R 0

    β γ R_0 = \dfrac{\beta}{\gamma}

    R

    0

    =

    γ

    β

    ​** :一个感染者在感染期内能感染的人数。

三、实例分析:SIR模型在传染病中的应用

让我们通过一个具体的例子,看看SIR模型是如何运作的。

3.1 参数设定

假设:

  • 总人口

    N

    10000 N = 10000

    N

    =

    10000

  • 初始感染者

    I 0

    1 I_0 = 1

    I

    0

    =

    1

  • 初始易感者

    S 0

    N − I 0

    9999 S_0 = N - I_0 = 9999

    S

    0

    =

    N

    I

    0

    =

    9999

  • 初始康复者

    R 0

    0 R_0 = 0

    R

    0

    =

    0

  • 传染率

    β

    0.3 \beta = 0.3

    β

    =

    0.3

  • 康复率

    γ

    0.1 \gamma = 0.1

    γ

    =

    0.1

3.2 MATLAB代码实现

好了,数学说完了,下面进入实战环节!让我们用MATLAB来模拟这个过程。

% SIR模型模拟
clear; clc; close all;

% 参数设置
N = 10000;      % 总人口
beta = 0.3;     % 传染率
gamma = 0.1;    % 康复率
I0 = 1;         % 初始感染者
S0 = N - I0;    % 初始易感者
R0 = 0;         % 初始康复者
tspan = [0 160];% 模拟时间

% 初始条件
y0 = [S0; I0; R0];

% 微分方程
function dydt = sir_equations(t, y)
    S = y(1);
    I = y(2);
    R = y(3);
    N = S + I + R;
    beta = 0.3;
    gamma = 0.1;
    dSdt = -beta * S * I / N;
    dIdt = beta * S * I / N - gamma * I;
    dRdt = gamma * I;
    dydt = [dSdt; dIdt; dRdt];
end

% 求解微分方程
[t, y] = ode45(@sir_equations, tspan, y0);

% 提取结果
S = y(:,1);
I = y(:,2);
R = y(:,3);

% 数据可视化
plot(t, S, 'b', 'LineWidth', 1); hold on;
plot(t, I, 'r', 'LineWidth', 1);
plot(t, R, 'g', 'LineWidth', 1);
xlabel('时间');
ylabel('人数');
title('SIR模型模拟传染病传播');
legend('易感者', '感染者', '康复者');
grid on;

3.3 结果分析

运行代码后,我们得到如下图像:

https://i-blog.csdnimg.cn/direct/ae124e4afa634897bf64142a769253b4.png#pic_center

  • 感染者人数 在第50天左右达到峰值。
  • 易感者人数 逐渐减少。
  • 康复者人数 逐渐增加。

四、深入探讨:模型的改进与扩展

4.1 SEIR模型

考虑潜伏期的影响,引入暴露者(Exposed),得到 SEIR模型

4.1.1 微分方程

{ d S d t

− β S I d E d t

β S I − σ E d I d t

σ E − γ I d R d t

γ I \begin{cases} \frac{dS}{dt} = -\beta SI \ \frac{dE}{dt} = \beta SI - \sigma E \ \frac{dI}{dt} = \sigma E - \gamma I \ \frac{dR}{dt} = \gamma I \end{cases}

d

t

d

S

=

βS

I

d

t

d

E

=

βS

I

σ

E

d

t

d

I

=

σ

E

γ

I

d

t

d

R

=

γ

I

其中

σ \sigma

σ 是潜伏率。

4.2 MATLAB代码实现

% SEIR模型模拟
clear; clc; close all;

% 参数设置
N = 10000;      
beta = 0.3;     
gamma = 0.1;    
sigma = 0.2;    
I0 = 1;         
E0 = 0;         
S0 = N - I0 - E0; 
R0 = 0;         
tspan = [0 160];

% 初始条件
y0 = [S0; E0; I0; R0];

% 微分方程
function dydt = seir_equations(t, y)
    S = y(1);
    E = y(2);
    I = y(3);
    R = y(4);
    N = S + E + I + R;
    beta = 0.3;
    gamma = 0.1;
    sigma = 0.2;
    dSdt = -beta * S * I / N;
    dEdt = beta * S * I / N - sigma * E;
    dIdt = sigma * E - gamma * I;
    dRdt = gamma * I;
    dydt = [dSdt; dEdt; dIdt; dRdt];
end

% 求解微分方程
[t, y] = ode45(@seir_equations, tspan, y0);

% 提取结果
S = y(:,1);
E = y(:,2);
I = y(:,3);
R = y(:,4);

% 数据可视化
plot(t, S, 'b', 'LineWidth', 1); hold on;
plot(t, E, 'm', 'LineWidth', 1);
plot(t, I, 'r', 'LineWidth', 1);
plot(t, R, 'g', 'LineWidth', 1);
xlabel('时间');
ylabel('人数');
title('SEIR模型模拟传染病传播');
legend('易感者', '潜伏者', '感染者', '康复者');
grid on;

4.3 结果分析

https://i-blog.csdnimg.cn/direct/7a925f3a7fb14c96ba15ff5e3c21fb71.png#pic_center

  • 潜伏者人数 的引入,使得感染者的峰值出现时间延后。
  • 模型更加贴近现实。

五、参数敏感性分析

5.1 传染率 β \beta β 的影响

通过改变

β \beta

β 值,观察感染者人数的变化。

5.2 MATLAB代码实现

% 参数敏感性分析
beta_values = [0.1, 0.3, 0.5];
colors = {'r', 'g', 'b'};

for i = 1:length(beta_values)
    beta = beta_values(i);
    % 其余代码同上,只需修改beta的值
    % ...
    % 在循环内绘制感染者曲线
    plot(t, I, 'Color', colors{i}, 'LineWidth', 2); hold on;
end

legend('\beta=0.1', '\beta=0.3', '\beta=0.5');

5.3 结果分析

  • 传染率越高 ,感染者峰值越高,疫情爆发越快。
  • 控制传染率是防控疫情的关键。

六、模型的局限性与改进方向

6.1 模型假设的局限

  • 人口固定 :现实中存在出生、死亡和迁移。
  • 均匀混合 :忽略了社交网络结构。
  • 参数恒定 :传染率和康复率可能随时间变化。

6.2 改进方向

  • 引入年龄结构 :不同年龄段的传染率不同。
  • 考虑地理因素 :使用空间模型。
  • 参数动态调整 :结合实时数据,使用机器学习方法。

七、总结

通过今天的分享,我们了解了传染病微分方程模型的基本原理和应用。数学模型虽然有一定的局限性,但在疫情防控中发挥了重要作用。希望大家能对数学建模产生兴趣,用数学的力量为社会做出贡献!

八、参考文献

  1. Kermack, W. O., & McKendrick, A. G. (1927). A Contribution to the Mathematical Theory of Epidemics . Proceedings of the Royal Society A .
  2. Hethcote, H. W. (2000). The Mathematics of Infectious Diseases . SIAM Review .

标签

  • 数学建模
  • MATLAB
  • 微分方程模型
  • 传染病模型

最后

感谢大家的耐心阅读!下次再见,祝大家身体健康,远离病毒,天天开心!非常感谢您抽出时间来阅读我的文章!您的意见非常宝贵。文中可能有些地方表达得不够准确或错误,如果您遇到有需要改进或调整的地方。如果有任何问题或建议,请随时告诉我,我会非常感激。再次感谢您的阅读!

订阅与关注

如果你对数学建模、MATLAB感兴趣,欢迎订阅我的博客,获取最新的技术文章和研究动态。也可以通过以下方式与我交流:

  • 📧 邮箱:

版权信息

© 2024 [Cherngul]. 保留所有权利。

68747470733a2f2f62:6c6f672e6373646e2e6e65742f6d305f37343936383436302f:61727469636c652f64657461696c732f313433313839323737