SIRS传染病模型求解及MATLAB实现
模型假设
1、总人数N不变。人群分为健康者、病人和移出者三类。t时刻三类人数量分别记为s(t),i(t)和r(t)。
2、病人的日接触率为,日治愈率为。
3、移出者康复后只有暂时免疫力,单位时间内将有的移出者丧失免疫而可能再次被感染。
模型构成
由假设1显然有
(1-1)
建立关于s(t),i(t)和r(t)的三个方程
(1-2)
记初始时刻的健康人、病人和移出者人的比例分别是,和,则SIRS模型的方程可以写作
(1-3)
方程(1-3)中无法求出s(t),i(t)和r(t)的解析解,我们先作稳定性分析。
稳定性分析
由于s(t)+i(t)+r(t)=N是一个常数,所以令r=N-s-i,则式(1-3)可以降阶为
(1-4)
引理1 令,则为方程(1-4)的正向不变集。
定义阈值,可以得到如下关于平衡点稳定性的结论:
定理1 如果,则方程(1-4)只有疾病消除平衡点,并且是全局渐进稳定的。
定理2 如果,则方程(1-4)存在唯一的,且全局渐进稳定的地方平衡点,其中 ,。
模型优化
根据阈值的定义和以上2个定理,就某一地区而言,当所研究的传染病的传染力不是很强,即传染率满足时,由疾病消除平衡点的全局稳定性可知传染病最终会在该地区消除的;而当所研究的传染病的传染力较强,即传染率满足时,由正平衡点的全局稳定性可知传染病会在该地区蔓延下去,成为地方病。希望通过采取人为的措施,即对传染病的动力系统进行有效的控制,使 时系统的疾病消除平衡点 具有很好的全局性态,这样疾病将最终消除,为此考虑如下的方程:
(1-5)
其中为控制项。
如果只考虑对染病者施加控制,在医学上一般采用的方法有2种:一种是用有效的药物对染病者进行治疗;另一种是将染病者隔离起来以避免染病者与易感者的接触。令和分别表示隔离率和治愈率,考虑如下形式的控制器:。
定理3对于方程(1-5),如果,施加控制,且,满足,,则全局渐近稳定。
数值计算
例 在方程(1-4)中,假设N=100, ,,则得到如下系统:
(1-6)
现分别在=0.001,=0.01时讨论其平衡点的稳定性:
当=0.001时,,方程(1-6)只有疾病消除平衡点 ,由定理1可知是全局渐近稳定的。
当=0.01时,,由定理2可知方程(1-6)有唯一的、全局渐近稳定的地方病平衡点,其中
,
假定3 个不同的初值:(30,70),(50,50),(80,20)。
当=0.001时,得到如图1的相空间曲线,由图可以看到,无论初值如何,最终都趋于。
%%子程序
function y=ill(t,x)
N=100;a=0.001;b=0.1;c=0.05;
y=[-a*x(1)*x(2)+5-c*x(1)-c*x(2),a*x(1)*x(2)-b*x(2)]';
%%运行的程序
[t,x]=ode45('ill',[0,100],[30,70]);
plot(x(:,1),x(:,2));
hold on
[t,x]=ode45('ill',[0,100],[50,50]);
plot(x(:,1),x(:,2));
hold on
[t,x]=ode45('ill',[0,100],[80,20]);
plot(x(:,1),x(:,2));
xlabel('s(t)');ylabel('i(t)')
legend('(30,70)','(50,50)','(80,20)')
当=0.01时,得到如图2的相空间曲线,由图可以看到,无论初值如何,最终都趋于。在这种情况下疾病不能最终被消除,成为该地区的地方病,为此考虑疾病的控制问题。
%%子程序
function y=ill(t,x)
N=100;a=0.01;b=0.1;c=0.05;
y=[-a*x(1)*x(2)+5-c*x(1)-c*x(2),a*x(1)*x(2)-b*x(2)]';
%%运行的程序
[t,x]=ode45('ill',[0,100],[30,70]);
plot(x(:,1),x(:,2));
hold on
[t,x]=ode45('ill',[0,100],[50,50]);
plot(x(:,1),x(:,2));
hold on
[t,x]=ode45('ill',[0,100],[80,20]);
plot(x(:,1),x(:,2));
xlabel('s(t)');ylabel('i(t)')
legend('(30,70)','(50,50)','(80,20)')
当=0.01时,为使疾病消除平衡点全局渐近稳定,需要对病人施加有效的控制,考虑如下的系统:
(1-7)
由定理3,取,并令隔离率,治愈率,仿真得到如图3的相空间曲线。由图3可知,方程(1-7)的平衡点( 100,0) 全局渐近稳定,也就是说,当=0.01时,控制使方程(1-7)的疾病消除平衡点全局渐近稳定。
%%子程序
function y=ill(t,x)
N=100;a=0.01;b=0.1;c=0.05;k1=0.9;k2=0.01;
y=[-a*x(1)*x(2)+5-c*x(1)-c*x(2),a*x(1)*x(2)-b*x(2)-k1*a*x(1)*x(2)-k2*x(2)]';
%%运行的程序
[t,x]=ode45('ill',[0,100],[30,70]);
plot(x(:,1),x(:,2));
hold on
[t,x]=ode45('ill',[0,100],[50,50]);
plot(x(:,1),x(:,2));
hold on
[t,x]=ode45('ill',[0,100],[80,20]);
plot(x(:,1),x(:,2));
xlabel('s(t)');ylabel('i(t)')
legend('(30,70)','(50,50)','(80,20)')
参考文献
[1]姜启源,谢金星,叶 俊.数学模型(第四版).北京:高等教育出版社,2011
[2]陈 鑫,徐赫屿.一类具有线性传染力的 SIRS 传染病动力系统的分析与控制[J].沈阳师范大学学报:自然科学版,2012,30( 2) :28-30.
[3]廖晓昕.稳定性的数学理论及应用[M].武汉:华中师范大学出版社,2001:140-161.
SIRS传染病模型求解及MATLAB实现相关推荐
- 小世界网络中的SIRS传染病模型实现
小世界网络 小世界网络模型是Watts和Strogatz于1998提出的一种描述现实社交关系网络的模型,该模型体现了现实社交网络中同质性和弱联系,使得"六度分隔"现象有了理论依据, ...
- 【路径规划】基于遗传算法实现外卖订单动态变换模型求解附matlab代码
1 内容介绍 前瞻产业研究院发布的<中国在线外卖商业模式与投资战略规划分析报告>统计数据显示,2015-2018年中国在线外卖收入年均增速约为117.5%,是传统餐饮业的12.1倍,我国在 ...
- matlab求解常微分方程组/传染病模型并绘制SIR曲线
看了很多关于传染病模型的matlab程序,大都是绘制出两条曲线(I.S)的,本文最大的不同是绘出SIR三条曲线. 先给出SIR微分方程组 函数文件: run的程序:
- 传染病模型(1)——SI模型及matlab详解
前言 常见的传染病模型按照具体的传染病的特点可分为 SI.SIS.SIR.SIRS.SEIR 模型.其中"S""E""I""R&q ...
- vecm模型怎么写系数_经典传染病的SIR模型(基于MATLAB)
经典的SIR模型是一种发明于上个世纪早期的经典传染病模型,此模型能够较为粗略地展示出一种传染病的发病到结束的过程,其核心在于微分方程,本次我们利用matlab来对此方程进行 其中三个主要量 S是易感人 ...
- matlab 双层规划求解,双层规划模型的遗传算法求解的Matlab源码
双层规划模型的遗传算法求解的Matlab源码 双层规划模型的遗传算法求解的Matlab源码 function [BESTX,BESTY,ALLX,ALLY]=GAU (KU,KD,NU,ND,PmU, ...
- SIR传染模型Matlab代码,sir传染病模型 MATLAB代码运行不了,
问题描述: sir传染病模型 MATLAB代码运行不了, function y=ill(t,x) a=1;b=0.3; y=[a*x(1)*x(2)-b*x(1),-a*x(1)*x(2)]'; ts ...
- sirs模型_数学建模常用算法——传染病模型(一)SI模型
今天,就和大家聊一聊传染病模型.说实话是有点跑题了,毕竟这是算法的专辑,不过最近有不少同学都在做传染病传播方面的题目,所以就决定是它了. 传染病的传播模型,是以传染病的传播速度.空间范围.传播途径.动 ...
- 基于传染病模型中的再生数R0的讨论【基于matlab的动力学模型学习笔记_2】
/*仅当作学习笔记,若有纰漏欢迎友好交流指正,此外若能提供一点帮助将会十分荣幸*/ 在上一篇博文中介绍了病毒模型的基本计算思路方法,而本文将会重点讨论基本再生数R0-这个决定病毒是继续发展还是衰减的关 ...
- 微分方程(人口预测与传染病模型)
一.定义 微分方程:含导数或微分的方程 微分方程的阶数:所含导数或微分的最高阶数,如y'''+2y''-2x=0是三阶微分方程 微分方程的解:使得微分方程成立的函数 例如y'-2x=0的解可以为x²或 ...
最新文章
- 摸鱼上招聘网站的小伙伴们注意了!监控系统可能已经把你设为“离职高危”......
- php文字超链接怎么写,php 文本URL转换为超链接功能实例
- 内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
- ArrayList clone()– ArrayList深拷贝和浅拷贝
- Flowable 数据库表结构 ACT_RU_EXECUTION
- java sftp 公开键设定_如何使用JSch SFTP库解析Java UnknownHostKey?
- Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
- 第十三章 hadoop机架感知
- shell脚本实例(随堂笔记)
- DropDownList下拉框多选
- ios 渐变透明背景_iPhone 全透明动态壁纸,内含完整教程
- 公司官网建站笔记(五):域名工信部备案完整流程并解析公网访问
- Java中的移位操作——Java编程思想笔记
- abb 机械手臂 示例程序
- css 使用 :placeholder-shown 实现MaterialDesign风格的交互
- LNZ32P4-C - Pan-Tilt-Zoom (PTZ) Camera with 1080p HD Video Color Night Vision
- 计算机网络知识总结:ip地址、分类及什么样的ip主机地址可以分配给主机使用
- Flutter 2.10 现已发布
- Web渗透测试对靶机注入shell(phpMyAdmin)
- 通过winapi获取MD5值