传染病模型知识储备

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

一、模型中的人群分类

S (Susceptible),易感者,指缺乏免疫能力健康人,与感染者接触后容易受到感染;

E (Exposed),暴露者 ,指接触过感染者但暂无传染性的人,可用于存在潜伏期的传染病;

I (Infectious),患病者,指有传染性的病人,可以传播给 S,将其变为 E 或 I ;

R (Recovered),康复者,指病愈后具有免疫力的人,如是终身免疫性传染病,则不可被重新变为 S 、E 或 I ,如果免疫期有限,就可以重新变为 S 类,进而被感染。

由于个体之间的接触而导致疾病传播的概率为β,疾病仅在感染个体和易感个体之间进行接触时才会以概率β将疾病传染给易感个体。在时刻t,易感个体的比例为S(t)/N,感染个体的数量为I(t),一次,易感个体的数量将以如下变化率减少ds/dt = -β*S(t)I(t)/N

二、四类传染病模型

艾滋传染模型(SI)

普通流感模型(SIS)

急性传染病模型(SIR)及其扩展模型(SIRS)

带潜伏着的恶性传染病模型(SEIR)

 1.艾滋传染模型(SI):

此情形所考虑的情形为:易感染者被感染

模型的建立:

 

  2.普通流感模型(SIS):

 由于流感病毒容易变异,所以没有能杜绝流感的体质存在,则该 模型为:感染,恢复为易感者,再感染,不断循环。

该模型与上一个模型的区别即就是感染者可以恢复为易感者,再次被感染

3.急性传染病模型及(SIR)其拓展模型(SIRS) 

这种模型刻画的传染病为:发病迅速,康复后含抗体不再被感染(单程),如:天花、麻 疹、腮腺炎等。

 如果再添加一个条件:将单程变为循环型,康复者可能再一次被感染。

 

4. 带潜伏期的恶性传染病模型(SEIR 

 这种模型刻画的传染病为:传染潜伏,确认感染,治疗康复后含抗体不再被感染(单程),如:SARS、SARI等。

 进⼀步需要考虑的问题:(⾼年级学⽣建议考虑⑥ - ⑨)

① 如果模型中“康复”的群体会再次被感染;
② 如果模型中含因病死亡的群体;
③ 如果潜伏者的潜伏期长短不⼀;
④ 如果含感染者分为隔离和未被隔离;
⑤ 如果潜伏者中有直接自己痊愈群体;
⑥ 如果潜伏者分为疑似并感染和疑似非感染(变系数问题);
⑦ 如果含超级感染者;
⑧ 如果已知目前的数据,可否反推出初期感染⼈数和日期;
⑨如果已知目前的数据,可否反推传播源;
通过对上述模型的完善,可以预测⼀个封闭地区(如:目前的湖北 省或武汉市)的疫情爆发情况:最⼤感染峰值、感染⼈数、治愈⼈数等。
但对于未实⾏封闭前的时期,我们就需要将地区看成图的节点,然 后需要考虑:
⑩节点之间的 流动 ,即区域之间的传染。 (注:区域间传染可考虑马尔科夫链、复杂⽹络等)

 三、传染病模型的求解

1.SI的求解

 (1)解析解

 2.用MATLAB求解LOGISTIC模型

Matlab求常微分方程组的解析解_y=520(2sinM-sin2M)的博客-CSDN博客_matlab求解微分方程组解析解

(1)dsolve 函数

dsolve函数用于求常微分方程组的精确解,也称为常微分方程的符号解。如果没有初始条件或边界条件,则求出通解;如果有,则求出特解。

1)函数格式  

Y = dsolve(‘eq1,eq2,…’ , ’cond1,cond2,…’ , ’Name’)

其中,‘eq1,eq2,…’:表示微分方程或微分方程组;

            ’cond1,cond2,…’:表示初始条件或边界条件;

            ‘Name’:表示变量。没有指定变量时,matlab默认的变量为t;

利用dsolve函数进行求解


(2)diff函数

diff函数式用于求导数和差分的.

无论是求导数还是差分,其原理是一样的.

这里简单介绍下其用法:

对连续求导

diff(X) , 求函数X的一阶导数;

diff(X,n) , 求函数X的n阶导 (n是具体整数);

diff(X,变量名), 求函数X的偏导数(对谁求偏导数,变量名就是谁)

diff(X,变量名,n) ,求函数X的n阶偏导数。

(3)代码解析

>> syms a b y(t) y0
>> eqn=diff(y,t)==a*y*(1-b*y);
>> cond=y(0)==y0;
>> ySol(t)=dsolve(eqn,cond)

 3.解的大致图像



4.数值解

(1)ode

ode是Matlab专门用于解微分方程的功能函数。该求解器有变步长(variable-step)和定步长(fixed-step)两种类型。不同类型有着不同的求解器,其中ode45求解器属于变步长的一种,采用Runge-Kutta算法;其他采用相同算法的变步长求解器还有ode23。

ode45表示采用四阶-五阶Runge-Kutta算法,它用4阶方法提供候选解,5阶方法控制误差,是一种自适应步长(变步长)的常微分方程数值解法,其整体截断误差为(Δx)^5。解决的是Nonstiff(非刚性)常微分方程。

ode45是解决数值解问题的首选方法,若长时间没结果,应该就是刚性的,可换用ode15s试试。

[t,y]=ode45(ode45,tspan,y0):

ode45- MathWorks 中国

(2)数值解

是相对于解析解而言退而求其次的说法,或者解析解很复杂而取得足够精确的位数的解。

解析解,是指通过严格的公式所求得的解。

数值解,是指给出一系列对应的自变量,采用数值方法求出的解。

解析法是常见的微积分技巧,如分离变量法等。解析解为一封闭形式的函数,因此对任一独立变量,皆可将其代入解析函数求得正确的相依变量。因此,解析解也称为闭式解。

当无法由微积分技巧求得解析解时,便只能利用数值分析的方式来求得其数值解了,数值方法变成了求解过程重要的媒介。

(3)龙格库塔法

是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。

1)算法

2)原理

3) 程序

function [T,X,dX] = ODE_RK4( Hfun,t,h,x0 )
% [T,X] = ODE_RK4( Hfun,t,h,x0 ) 4阶龙格-库塔法求解常微分方程
% Hfun为描述状态导数的函数句柄,格式为 dX = Hfun( t,X )
% 必须保证返回dX的格式为行向量
% t为时间节点,可为标量,时间范围为 T = 0:h:t
%             长2向量 ,时间范围为 T = t(1):h:t(2)
%             向量 ,时间范围为 T = t
% h为时间步长,在t的前两种情况下,必须给出h具体值
% 直接给出时间节点t时,h可用[]或任意值占位
% x0为状态量初始值  
% 算法:
%      K1  = Hfun( t(k-1),X(k-1) ) =  dX(k-1)
%      K2 =  Hfun( t(k-1)+h/2,X(k-1)+h*K1/2 )
%      K3 =  Hfun( t(k-1)+h/2,X(k-1)+h*K2/2 )
%      K4 =  Hfun( t(k-1)+h  ,X(k-1)+h*K3 )
%    X(k) =  X(k-1) + (h/6) * (K1 + 2*K2 + 2*K3 +K4)

 (4)MATLAB解析

  3.SIR的求解

  

#传染病模型为常微分方程模型

注意

本文题目来源为上海财经⼤学数学学院


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

相关文章

传染病模型-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; 复杂分布式体系结构中的应用程序…

sentinel 熔断降级

sentinel 熔断降级 官网&#xff1a;https://sentinelguard.io/zh-cn/docs/circuit-breaking.html 熔断降级 熔断降级&#xff1a;服务由于响应慢、异常等原因触发熔断策略后&#xff0c;快速失败&#xff0c;避免线程堆积造成服务雪崩&#xff08;熔断降级通常在调用端配置&am…