【数学建模】传染病SIR模型

article/2025/9/26 10:46:04

SIR模型

经典的SIR模型是一种发明于上个世纪早期的经典传染病模型,此模型能够较为粗略地展示出一种传染病的发病到结束的过程,其核心在于微分方程,其中三个主要量S是易感人群,I是感染人群,R是恢复人群

这三个量都是跟随时间变化的函数,即可以表示为,其中的t我们设定为一个单位时间,我们即有如下的公式:

在这里插入图片描述

然而要列出此种类似的方程我们需要一部分的理想化条件,这些理想化条件是比较重要的,

1.首先即城市的总人数不变,即:

S ( t ) + I ( t ) + R ( t ) = K S(t)+I(t)+R(t)=K S(t)+I(t)+R(t)=K
K为一个常数值,一个恒定量。

2.假设 t 时刻单位时间内,一个病人能传染的易感者数目与此环境内易感者总数s(t)成正比,设定比例系数为β,从而在t时刻单位时间内被所有病人传染的人数为βs(t)i(t)

3.t 时刻,单位时间内从染病者中移出的人数与病人数量成正比,比例系数为γ,单位时间内移出者的数量为γi(t)

故我们可以得知其作用的机制为:易感人数和系数以及感染人数同时作用于总的易感人数,同时恢复人数和恢复系数又对感染人数起到影响。但是同时这又是一个单向性的机制。

基于以上三个条件的假设,我们可以获得其人数变化的机制,也即

1.易感个体的下降率为(注:此处为负数):

在这里插入图片描述

2.感染个体的增长率为:

在这里插入图片描述

3.恢复个体的增长率为:

在这里插入图片描述

我们利用微分方程可以表示如下:(SIR核心的微分方程)

在这里插入图片描述

详细可参考知乎:经典传染病的SIR模型(基于MATLAB)

MATLAB实现

转自:SIR模型实现(matlab)

function dydt = odefun(t,y,A,B)
dydt = zeros(2,1);
dydt(1) = A*y(1)*y(2) - B*y(1);
dydt(2) = -A*y(1)*y(2);
end 
clc
clear
close all;
A = 0.4;
B = 0.1;
I = 0.4;
S = 0.5;%ode
tspan = [0 50];
y0 = [I S];
[t, y] = ode45(@(t,y)odefun(t,y,A,B), tspan, y0);
r = 1-y(:,1)-y(:,2);%euler
n = size(r,1);
h = 50 / (n-1);
t_0 = [0:h:50]';
y_i = zeros(n,1);
y_s = zeros(n,1);
y_i(1) = I;
y_s(1) = S;
for i = 1:n-1y_i(i+1) = h*[A*y_i(i)*y_s(i) - B*y_i(i)]+y_i(i);y_s(i+1) = h*[-A*y_i(i)*y_s(i)]+y_s(i);
end
r_0 = 1 - y_i(:,1) - y_s(:,1);%画图
subplot(2,2,1);
plot(t,y(:,1),'-o',t,y(:,2),'-.',t,r,'g');
hold on;
legend('生病人数:i(t)','健康人数:s(t)','移除人数:r(t)','Location','Best'); 
ylabel('占人口比例%');
xlabel('时间t');
str = ['接触数λ/μ:',num2str(A/B),' 初始生病人数:',num2str(I),',初始健康人数:',num2str(S)];
text(15,0.4,str,'FontSize',10);
title('SIR模型(ode)');subplot(2,2,2);
plot(t_0,y_i,'-o',t_0,y_s,'-.',t_0,r_0,'g');
hold on;
legend('生病人数:i(t)','健康人数:s(t)','移除人数:r(t)','Location','Best'); 
ylabel('占人口比例%');
xlabel('时间t');
str = ['接触数λ/μ:',num2str(A/B),' 初始生病人数:',num2str(I),',初始健康人数:',num2str(S)];
text(15,0.4,str,'FontSize',10);
title('SIR模型(euler)');subplot(2,2,3);
plot(t_0,y_i,'r-',t,y(:,1),'-.');
diff = sum(abs(y_i - y(:,1)));
str1 = ['生病人数对比图i(t),    误差:',num2str(diff)];
title(str1);
legend('euler','ode','Location','Best'); 
ylabel('占人口比例%');
xlabel('时间t');subplot(2,2,4);
plot(t_0,y_s,'r-',t,y(:,2),'-.');
diff = sum(abs(y_s - y(:,2)));
str1 = ['健康人数对比图s(t),     误差:',num2str(diff)];
title(str1);
legend('euler','ode','Location','Best'); 
ylabel('占人口比例%');
xlabel('时间t');

在这里插入图片描述

python实现

转自:建立传染病SIR模型代码
其中β为感染率,γ为药物有效性,TS和ND分别为时间间隔和结束时间,TN为区域内人口数(单位为百万)

import scipy.integrate as spi
import numpy as np
import matplotlib.pyplot as pltbeta = 7e-3
gamma = 4e-3
TS = 1.0
ND = 1000.0
TN = 4.2
S0 = 0.998*TN
I0 = 0.002*TN
INPUT = (S0, I0, 0.0)def diff_eqs(INP, t):Y = np.zeros((3))V = INPY[0] = - beta * V[0] * V[1]Y[1] = beta * V[0] * V[1] - gamma * V[1]Y[2] = gamma * V[1]return Yt_start = 0.0
t_end = ND
t_inc = TS
t_range = np.arange(t_start, t_end + t_inc, t_inc)
RES = spi.odeint(diff_eqs, INPUT, t_range)print(RES)
with open('SIR.txt', 'w') as f:for each in RES:f.write(str(each))f.write('\n')
f.close()
# Ploting
plt.subplot(111)
plt.plot(RES[:, 1], '-r', label='Infectious')
plt.plot(RES[:, 0], '-g', label='Susceptibles')
plt.plot(RES[:, 2], '-k', label='Recovereds')
plt.legend(loc=0)
plt.title('SIR')
plt.xlabel('Time (day)')
plt.ylabel('Infectious Susceptibles and Recovereds (million)')
plt.show()

在这里插入图片描述


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

相关文章

SIR模型简单了解(Susceptible Infected Recovered Model)

SIR模型定义 SIR模型是一种传播模型,是信息传播过程的抽象描述。 SIR模型是传染病模型中最经典的模型,其中S表示易感者,I表示感染者,R表示移除者。 S:Susceptible,易感者 I:Infective&#xf…

【保姆级教程】使用python实现SIR模型(包含数据集的制作与导入及最终结果的可视化)

目录 一、SIR模型介绍 二、Python实现SIR模型 1.制作自己的数据集的两种方法(csv格式) (1)excel转为csv格式 (2)通过python对csv格式文件进行内容修改 2.导入数据集 (1)具体代码如下…

SIR模型和Python实现

一、SIR模型介绍 SIR模型时传染病中最基础最核心的模型,研究的是某个封闭地区的疫情传播规律。 SIR模型的动力学关系如下图: 健康人数S的变化与 健康人数S和正感人数I的乘积(代表健康人数和正感人数的接触)成正比,其…

SIR传染病模型(微分方程系列1)

一:基本参数 SIR模型是常见的一种描述传染病传播的数学模型,其基本假设是将人群分为以下三类: S:(Susceptible):易感人群,指未得病者,但缺乏免疫能力,与感病者接触后容易受到感染。 I:(Infective):患病人…

【整站下载器】小飞兔整站下载V5.0

小飞兔整站下载是一款只需输入一个网址就能下载一个网站的软件,它可以从Internet的任何地方抓回你想要的任何文件,整站下载主要是用来快速搭建网站、深层分析网站、网站克隆等。

【小飞兔整站下载】整站下载器哪个好用_整站下载工具哪个好

小飞兔整站下载是一款可以下载整个网站内容的软件,你只要输入一个网址,软件能自动分析网站链接、图片、样式、文件等资源,并能将整个网站下载到本地,能在本地正常跳转、浏览。 官网:https://xft.fzxgj.top/ 直接上图…

快速获取一个网站的所有资源,图片,html,css,js等等

今天介绍一款软件,可以快速获取一个网站的所有资源,图片,html,css,js… 以获取某车官网为例 我来展示一下这个软件的功能. 1、输入网站地址 2、下载文件 到此,爬取网站就结束了,有些网站的资源使用的是国外的js,css,速度会有些差异,但效果都是一样的.爬取下来就能使用.放…

小飞升值记——(5)

目录 一:学习痕迹 二:学习结语 一:学习痕迹 二:学习结语 1.注意断句 2.注意refill的读音,重音在后面

根据url一键爬取前端页面资源文件,恐怖如斯-----小飞兔

前言 有一天你在网上发现一个很好看的前端页面,你想要弄下来在自己的项目上使用,于是你去查看源码,复制html代码和资源文件,过程非常的麻烦,而且很可能缺胳膊少腿,这里我给大家推荐一款可以一键爬取前端页面资源文件的工具给大家,希望对大家有所帮助. 下载 https://download.cs…

小飞兔整站下载如何设置特殊标签?

小飞兔整站下载如何设置特殊标签? 为什么提供自定义标签的功能?如何设置自定义标签? 为什么提供自定义标签的功能? 随着html5网站的快速发展,很多网站做了格式各样的特殊标签,而我们需要匹配特殊标签的资源…

c语言兔子繁殖问题pia,上海虹口幼升小转学报名,在喂养幼兔的时候我们要注意。...

上海虹口幼升小转学报名,在喂养幼兔的时候我们要注意,在喂养幼兔的时候我们要注意,不能直接用自来水为给幼兔喝,因为幼鸡初期的消化食物是很慢的,做好室内清洁卫生并对猫咪进行隔离幼猫在有猫癣的时候,这样…

最新版本 Stable Diffusion 开源 AI 绘画工具之汉化篇

✨ 目录 🎈 汉化预览🎈 下载插件方法一🎈 下载插件方法二🎈 下载插件方法三🎈 简单汉化🎈 双语汉化 🎈 汉化预览 在上一篇文章中,我们安装好了 Stable Diffusion 开源 AI 绘画工具但…

StyleGAN 调整面部表情,让虚拟人脸更生动

✨ 目录 🎈 人脸表情🎈 调整步骤🎈 调整结果🎈 人脸表情 通过上一篇文章 StyleGAN 生成的人脸:https://tinygeeker.blog.csdn.net/article/details/129667295人脸图片都是比较中规中矩的,如果能够给人脸增加一些表情的话,会让人脸显得更加的自然和逼真那么调整人脸的…

springMVC小bug webapp/.html访问不到

我们要访问 test.html 启动tomcat 404 web服务器中也有一个web。xml 父servlet:是给所有web.xml准备服务静态资源的 但是子类也是 一个/ 这个/会覆盖父xml 父类有jsp不会拦截,子类没有重写所有会访问.jsp 两个解决方法:方法1&#…

运用帝国CMS建站仿站的简单教程(初学者进)

帝国CMS是一款管理网站的软件系统,主要就是将网站生成模板(核心操作为创建变量和模板并调用)并通过该系统在网站上发布新信息,它具有许多的功能,细节方面也有很多,这里就不一一展示了,主要就是简…

计算机毕业设计制作模仿网站的期末作业通过神器——各种扒站方法(网站,软件)

官网链接:点我进入在线扒站 扒站完尽快下载,详情官网查看。 以下是一些需要下载的扒站工具 名字:teleport ultra 下载:Teleport 官网 名字:仿站小工具 小飞兔 下载:小飞兔官网 名字:Interne…

小飞兔整站下载V16.5-站点克隆工具

简介: 小飞兔网站克隆神器,一键复制克隆网站、小白必备! 有了这个东西,看到自己喜欢的网站直接复制下了,再用dw修改内容,省事多了。 网盘下载地址: https://zijieyunpan.cn/AtqSxg3OdJe 图片…

【参赛作品4】初窥openGauss 之参数自调优(X-Tuner)

TPC-H 是一个面向分析型业务(AP)的基准测试,它由一系列热点查询组成,这些热点查询都是高度复杂的,因此执行时间往往都比较长。 在本次实验测试中,将手动向数据库加载TPC-H数据,并保存在名为 tpch 的数据库中。默认TPC-…

亲测好用的油管音乐播放器:Tuner Mac版

Tuner for YouTube music Mac版是一款优质的youtube音乐播放器,Tuner支持快速搜索想要听的音乐,支持创建自定义播放列表、在线播放等功能,另外Tuner for YouTube music mac版还提供了画中画功能,你可以直接观看视频,还…

读论文---Clip微调---CLIP Itself is a Strong Fine-tuner

标题 摘要 Recent studies have shown that CLIP has achieved remarkable success in performing zero-shot inference while its fine-tuning performance is not satisfactory. In this paper, we identify that fine-tuning performance is significantly impacted by hyp…