数学模型:传染病模型

article/2025/9/25 15:38:50

传染病模型

  • 需要考虑的问题
  • 基本方法
  • 模型1
  • 模型2(SI模型)
  • 模型3(SIS模型)
  • 模型4(SIR模型)

需要考虑的问题

  • 描述传染病的传播过程
  • 分析受感染人数的变化规律
  • 预报传染病高潮到来的时刻
  • 预防传染病蔓延的手段

基本方法

不需要从医学的角度分析各种传染病的特殊机理,而是按照传播过程的一般规律建立数学模型。

模型1

感染人数i随着时间t的变化率。
思考过程:病人越多,接触的人越多,感染的人越多。由此可以得到一个所需因素:病人每天接触到的人数λ。

假设:每个病人每天有效接触(足以使人治病)人数为λ

建模: i ( t + Δ t ) − i ( t ) = λ i ( t ) Δ t i(t+Δt)-i(t)=λi(t)Δt i(t+Δt)i(t)=λi(t)Δt
由上面的模型可以得到
d i d t = λ i \frac{di}{dt}=λi dtdi=λi
i ( 0 ) = i 0 i(0)=i_0 i(0)=i0
整理得出 i ( t ) = i 0 e λ t i(t)=i_0e^{λt} i(t)=i0eλt

t→∞时得出的是i→∞,表示t趋近于无穷大时,全部的人都会得病,但是这很明显不符合实际的情况。短期可能可以使用该模型,但长期的传染病不可以使用。

模型2(SI模型)

区分已感染者(病人)和未感染者(健康人)

假设:

  • 总人数N不变,病人和健康的人的比例分别为i(t),s(t)。
  • 每个病人每天都有效接触人数为λ,且使接触的健康人治病。 [λ:日接触率]

建模 N [ i ( t + Δ t ) − i ( t ) ] = [ λ s ( t ) ] N i ( t ) Δ t N[i(t+Δt)-i(t)]=[λs(t)]Ni(t)Δt N[i(t+Δt)i(t)]=[λs(t)]Ni(t)Δt

d i d t = λ s i \frac{di}{dt}=λsi dtdi=λsi

s ( t ) + i ( t ) = 1 s(t)+i(t)=1 s(t)+i(t)=1

讲上述条件整理得到
{ d i d t = λ s i i ( 0 ) = i 0 \left\{ \begin{aligned} \frac{di}{dt}=λsi\\ i(0)=i_0\\ \end{aligned} \right. dtdi=λsii(0)=i0
以上的模型叫做:Logistic模型

简单分析:i=0时导数为0,增长率为了0,当i=1时即全部是病人时增长率也为0,符合实际情况的假设。

此模型的解为: 1 1 + ( 1 i 0 − 1 ) e − λ t \frac{1}{1+(\frac{1}{i_0}-1)e^{-λt}} 1+(i011)eλt1

在这里插入图片描述

tm是传染病高潮到来时刻

模型2的缺陷:没有考虑有的病人是可以治愈的。

模型3(SIS模型)

前提: 传染病无免疫性——病人治愈成功为健康人,健康人可再次感染。
新增假设:

  • 病人每天被治愈的比例为μ,μ为日治愈率。

建模: N [ i ( t + Δ t ) − i ( t ) ] = λ N s ( t ) i ( t ) − μ N i ( t ) Δ t N[i(t+Δt)-i(t)]=λNs(t)i(t)-μNi(t)Δt N[i(t+Δt)i(t)]=λNs(t)i(t)μNi(t)Δt
其中 μ N i ( t ) Δ t μNi(t)Δt μNi(t)Δt是治愈的人数

整理得
{ d i d t = λ i ( 1 − i ) − μ i i ( 0 ) = i 0 \left\{ \begin{aligned} \frac{di}{dt}&=λi(1-i)-μi\\ i(0)&=i_0\\ \end{aligned} \right. dtdii(0)=λi(1i)μi=i0

用 σ = λ / μ 代 入 上 面 的 式 子 得 出 d i d t = − λ i [ i − ( 1 − 1 σ ) ] 用σ=λ/μ代入上面的式子得出\frac{di}{dt}=-λi[i-(1-\frac{1}{σ})] σ=λ/μdtdi=λi[i(1σ1)]
其中λ表示日接触率1/μ表示感染期[μ表示一个人一天内被治好的概率,1/μ表示平均得多久的病才会被治好],σ表示一个感染期内每个病人的有效接触人数,称为接触数。
在这里插入图片描述

模型4(SIR模型)

前提: 传染病有免疫性——病人治愈后立即移除感染系统,称为移出者。
假设

  • 总人数N不变,病人、健康人和移出者的比例分别为i(t),s(t),r(t).
  • 病人的日接触率λ,日治愈率μ,接触数σ=λ/μ

建模
第一个方程还是前面模型3中治愈的方程:
N [ i ( t + Δ t ) − i ( t ) ] = λ N s ( t ) i ( t ) − μ N i ( t ) Δ t N[i(t+Δt)-i(t)]=λNs(t)i(t)-μNi(t)Δt N[i(t+Δt)i(t)]=λNs(t)i(t)μNi(t)Δt
第二个方程是健康人的变化,健康人和病人之间的变化关系:
N [ s ( t + Δ t ) − s ( t ) ] = − λ N s ( t ) i ( t ) − μ N i ( t ) Δ t N[s(t+Δt)-s(t)]=-λNs(t)i(t)-μNi(t)Δt N[s(t+Δt)s(t)]=λNs(t)i(t)μNi(t)Δt
即可得到
{ d i d t = λ s i − μ i d s d t = − λ s i i ( 0 ) = i 0 s ( 0 ) = s 0 \left\{ \begin{aligned} \frac{di}{dt}&=λsi-μi\\ \frac{ds}{dt}&=-λsi\\ i(0)&=i_0\\ s(0)&=s_0 \end{aligned} \right. dtdidtdsi(0)s(0)=λsiμi=λsi=i0=s0

此方程没有解析解,但观察上面的两个微分方程,发现右边都与t无关,两者相除左边消去dt,只研究两者变量之间的关系:
i 0 + s 0 ≈ 1 ( 通 常 r ( 0 ) = r 0 很 小 ) i_0+s_0≈1(通常r(0)=r_0很小) i0+s01r(0)=r0
可以先做数值计算,再在相平面上研究解析解性质。

设λ=1,μ=0.3,i0=0.02,s0=0.98,用MATLAB计算作图i(t),s(t)及i(s)。
在这里插入图片描述相轨线的分析:
N [ s ( t + Δ t ) − s ( t ) ] = − λ N s ( t ) i ( t ) − μ N i ( t ) Δ t N[s(t+Δt)-s(t)]=-λNs(t)i(t)-μNi(t)Δt N[s(t+Δt)s(t)]=λNs(t)i(t)μNi(t)Δt

即可得到
KaTeX parse error: Expected group after '\right' at end of input: …ligned} \right

求解出相轨线为
i ( s ) = ( s 0 + i 0 ) − s + 1 σ l n s s 0 i(s)=(s_0+i_0)-s+\frac{1}{σ}ln\frac{s}{s_0} i(s)=(s0+i0)s+σ1lns0s
在这里插入图片描述可以发现i是由一个最大值,在s=1/σ的时候达到。

  • s0>1/σ时i(t)先上升后下降至0 [传染病蔓延]
  • s0<1/σ时i(t)单调降至0 [传染病蔓延]

传染病不蔓延的条件——s0<1/σ

预防传染病蔓延的手段:

  • 提高阈值:降低σ(λ/μ)
    →降低λ(日接触率):隔离
    →提高μ:提高医疗水平
  • 降低s0
    s0+i0+r0=1,i0为感染比例,使得s0下降的方法就应该为提高r0,也就是进行群体免疫(打疫苗)。

通过具体数据观察病情蔓延变化:
在这里插入图片描述在这里插入图片描述
σ的估计
( s 0 + i 0 ) − s ∞ + 1 σ l n s ∞ s 0 (s_0+i_0)-s_∞+\frac{1}{σ}ln\frac{s_∞}{s_0} (s0+i0)s+σ1lns0s
刚刚开始的时候忽略i0,估计σ
σ = l n s 0 − l n s ∞ s 0 − s ∞ σ=\frac{lns_{0}-lns_∞}{s_0-s_∞} σ=s0slns0lns

被传染者比例估计
在这里插入图片描述


http://chatgpt.dhexx.cn/article/mgRY8VE1.shtml

相关文章

传染病模型知识储备

一、模型中的人群分类 S (Susceptible),易感者,指缺乏免疫能力健康人,与感染者接触后容易受到感染; E (Exposed),暴露者 ,指接触过感染者但暂无传染性的人,可用于存在潜伏期的传染病&#xff…

传染病模型-SIR

一、模型背景 传染病模型指传染病的基本数学模型,主要研究传染病的传播速度、空间范围、传播途径、动力学机理等问题,以指导对传染病的有效地预防和控制。常见的传染病模型按照传染病类型分为 SI、SIR、SIRS、SEIR 模型,本文着重介绍其中的SI…

C语言用函数、递归的方法求n的阶乘

函数fac代码 当n<1时&#xff0c;结果为1 当n>1时&#xff0c;n只要乘前一个n的阶乘值就是n的阶乘&#xff0c;即&#xff1a;n*fac(n-1) int fac(int n) {if(n<1)return 1;elsereturn n*fac(n-1); } 主函数代码 int main() {int n0;int ret0;scanf("%d&quo…

通过C语言实现函数的递归 ---自己调用自己

Hellow&#xff0c;我是jack&#xff0c;今天给大家分享的是C语言实现函数的递归调用。 在使用递归调用时&#xff0c;我们应明白以下几点&#xff1a; 1.存在限制条件 限制条件不存在时&#xff0c;不在递归 2.递归越来越接近结尾 3.递归层次不能太深 注意这几点就是让我们在…

C++语言基础--递归函数

对于很多编程初学者来说&#xff0c;递归算法是学习语言的最大障碍之一。可能也有一大部分人知道递归&#xff0c;也能看的懂递归&#xff0c;但在实际做题过程中&#xff0c;却不知道怎么使用 递归的定义 1、很官方的说法 递归&#xff0c;在数学与计算机科学中&#xff0c;…

11.函数(C语言)+递归函数(超清晰图解递归)

函数 1.函数是什么&#xff1f;2.库函数1&#xff09;库函数的基本知识2&#xff09;初识几个库函数 3.自定义函数自定义函数的组成 4.函数参数1 )实际参数&#xff08;实参&#xff09;&#xff1a;2) 形式参数&#xff08;形参&#xff09;&#xff1a; 5.函数调用1) 传值调用…

C语言之函数递归

前言   从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&#xff1f;"从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&…

C语言——函数递归

文章目录 前言递归的概念递归的两个必要条件例题1.递归实现阶乘2.递归实现strlen函数3.计算一个正整数各位数字的和4.递归实现整数n的整数k次方5.递归实现斐波那契数6.递归实现字符串逆序7.汉诺塔8.青蛙跳台阶9.将一个十进制数以二进制的形式打印 前言 本文总结了几个递归基础例…

C语言的递归函数

递归函数&#xff08;一&#xff09; 递归就是一个函数在它的函数体内调用它自身。 执行递归函数将反复调用其自身&#xff0c;每调用一次就进入新的一层。 注意递归函数必须有结束条件 递归函数&#xff08;二&#xff09; 5的阶乘这个例子进行一下剖析&#xff0c;看一看他…

函数递归调用(c语言为例)

定义:在调用一个函数的过程中又出现直接或间接调用该函数本身&#xff0c;称为函数的递归调用。 int fun(int x){return fun(x2);//在执行f函数的过程中又要调用f函数 } 在调用函数f的过程中&#xff0c;又要调用f函数&#xff0c;这是直接调用本函数&#xff0c;如图1 图 1 如…

【C语言】函数递归(详解)

文章目录 函数递归什么是递归&#xff1f;递归的俩个必要条件代码引例1栈溢出&#xff08;Stack Overflow&#xff09; 合理使用递归代码引例3代码引例4解释要合理使用递归 结束语 函数递归 程序调用自身的编程技巧称为递归 recursion&#xff09; 函数自己调用自己就是递归 …

php熔断,微服务-API熔断原理

伴随微服务&#xff0c;出现了很多新鲜的名词&#xff0c;其实剥去外衣并没有那么高大上。 今天要谈到的&#xff0c;叫做”熔断”&#xff0c;一个典型的开源实现是Hystrix(JAVA实现)。 背景 一个分布式系统中&#xff0c;服务间互相调用错综复杂&#xff0c;假设某个基础服务…

接口熔断 java_SpringCloud(五):服务熔断与熔断监控

一、概念部分 1.什么是熔断器? 熔断,就是断开与服务器的连接,熔断器是在服务不可用的时候主动断开,以免造成更多的雪崩效应,他是保护服务高可用的最后一道防线。 2.为什么需要熔断器? 为保证服务高可用,最先想到的是服务集群,但集群并不能完全的保证服务高可用, 当某个…

分布式系统服务熔断

# 服务熔断 - “熔断器”本身是一种开关装置&#xff0c;当某个服务单元发生故障之后&#xff0c;通过断路器(hystrix)的故障监控&#xff0c;某个异常条件被触发&#xff0c;直接熔断整个服务。向调用方法返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或…

微服务熔断

https://mp.weixin.qq.com/s/cxd0Fol4BBzx4v2qm-hlwQ 我这篇文章来的晚了些&#xff0c;因为hystrix已经进入维护模式。但已经有非常多的同学入坑了&#xff0c;那么本篇文章就是及时雨。本文将说明熔断使用的一些注意事项&#xff0c;可能会细的让你厌烦。 前半段&#xf…

【服务熔断】服务熔断完整说明

文章目录 1.创始人文档2.熔断机制3.原理总结4.断路器打开之后5.服务监控hystrixDashboarda.七色b.一圈c.一线d.单个图说明e.多个图说明 1.创始人文档 大神文档 2.熔断机制 熔断机制概述 熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用…

Istio的熔断

一、理解熔断   熔断&#xff08;Circuit Breaker&#xff09;&#xff0c;原是指当电流超过规定值时断开电路&#xff0c;进行短路保护或严重过载时的一种保护机制。后来熔断也广泛应用于金融领域&#xff0c;指当股指波幅达到规定的熔断点时&#xff0c;交易所为控制风险采…

hystrix熔断

熔断操作放在服务提供层&#xff0c;是在类的方法上&#xff0c;而降级是在消费者的接口层面设置 1.加入jar包 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId><version&…

服务熔断降级

之前给大家讲了很多服务之前的关系&#xff0c;今天主要给大家介绍&#xff0c;当服务出现问题时&#xff0c;我们该如何解决。 首先我们先进行一些场景分析&#xff1a; 场景一 服务提供端提供了A、B、C、D 4个服务&#xff0c;服务调用方调用服务时&#xff0c;D服务出现了…

Hystrix 服务熔断

目录 服务雪崩 一、什么是Hystrix 二、服务熔断 案例 三、服务降级 什么是服务降级 降级工厂类 设置fallbackFactory 开启feign.hystrix 四、服务熔断和降级的区别 五、DashBoard流监控 添加依赖 分布式系统面临的问题&#xff1a; 复杂分布式体系结构中的应用程序…