热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

sir模型初始值_经典传染病的SIR模型(基于MATLAB)

经典的SIR模型是一种发明于上个世纪早期的经典传染病模型,此模型能够较为粗略地展示出一种传染病的发病到结束的过程,其核心在于微分方程,本次

经典的SIR模型是一种发明于上个世纪早期的经典传染病模型,此模型能够较为粗略地展示出一种传染病的发病到结束的过程,其核心在于微分方程,本次我们利用matlab来对此方程进行

其中三个主要量

S是易感人群

I是感染人群

R是恢复人群

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

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

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

K为一个常数值,一个恒定量。

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

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

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

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

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

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

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

我们利用微分方程可以表示如下:

SIR核心的微分方程

我们对此类方程利用matlab编写SIR函数

其代码为:sir 函数的matlab code

其中a即为参数,b也为参数,这是可以调整设置的参数,故对于此微分方程的求解,我们利用matlab内建的函数ode45,来进行求解,我们可以参照ode45()函数的使用范例

进行调用

即[t,x]=ode45(@sir,[0:1:400],[1 116000 0]);

此处的[0:1:400]的为时间的取值范围,这里我们以天为单位,取了0到40等41个点,也即41天。

此处的[1 740000 0]分别为S(t),I(t),R(t)的初始值。

我们利用如下代码:

[t,x]=ode45(@sir,[0:1:180],[1 116000 0]);

>> hold on;

>> plot(t,x(:,1),'o-');

>> plot(t,x(:,2),'*-');

>> plot(t,x(:,3),'d-');

legend('感染人数','易感人数','恢复人数');

title('SIR模型图');

xlabel('天数(days)');

ylabel('总人数');

获得图像如下:

SIR模型图

模型总结:此模型能够较好地模拟一个从传染病的过程,但是前提在于人能够恢复,并且获得终生免疫能力:SIR模型示意图

由图可知,此模型为单向模型,易感人数在不断地往感染人数输入,而同时最后感染人数也在单向往恢复人数输入,所以易感人数和感染人数最后均会下降到0,而与此同时,所有人均会成为恢复人数,此即为此模型的局限性。

SANGHUSUN

2020.01.27



推荐阅读
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了MicroATX(也称Mini ATX)和MATX主板规格,探讨了它们的结构特点、应用场景及对电脑系统成本和性能的影响。同时,文章还涵盖了相关操作系统的实用技巧,如蓝牙设备图标删除、磁盘管理等。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细介绍如何在VSCode中配置自定义代码片段,使其具备与IDEA相似的代码生成快捷键功能。通过具体的Java和HTML代码片段示例,展示配置步骤及效果。 ... [详细]
  • 本文介绍了如何使用 Python 的 Bokeh 库在图表上绘制菱形标记。Bokeh 是一个强大的交互式数据可视化工具,支持丰富的图形自定义选项。 ... [详细]
  • 本题要求将由小写字母组成的字符串划分为多个片段,确保每个字母只出现在一个片段中。目标是生成尽可能多的片段,并返回每个片段的长度列表。本文将详细解释问题描述、解题思路及代码实现。 ... [详细]
  • 本文介绍如何调整Element UI组件的边框样式,以确保内容与边框之间有足够的间距,并展示如何通过CSS实现更好的布局效果。 ... [详细]
  • 本文将介绍网易NEC CSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。 ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 本文介绍了如何使用 Python 的 Matplotlib 和 Pandas 库进行数据可视化。通过示例代码展示了折线图、柱状图和水平柱状图的创建方法,并解释了图表参数设置的具体细节。 ... [详细]
  • 利用生成对抗网络生成多标签离散电子健康记录
    本文探讨了通过生成对抗网络(GAN)生成合成电子健康记录(EHR)的方法,旨在解决隐私保护问题并促进医学研究。论文地址为:https://arxiv.org/abs/1703.06490v1。该方法通过生成高维离散变量的综合EHR数据,显著提升了医学研究中的数据可用性和安全性。 ... [详细]
  • 本文探讨了如何在iOS开发环境中,特别是在Xcode 6.1中,设置和应用自定义文本样式。我们将详细介绍实现方法,并提供一些实用的技巧。 ... [详细]
author-avatar
php辉子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有