/*仅当作学习笔记,若有纰漏欢迎友好交流指正,此外若能提供一点帮助将会十分荣幸*/

在前面两篇博文中我们分别介绍了病毒模型的基本计算思路方法以及基本再生数R0,这里我们将会简单的列举几种经典的病毒动力学模型的动力学逻辑、微分方程及迭代仿真。

摘 要:本文将介绍SIR、SEIR、、SIVRS病毒模型并补充SEIH谣言传播模型,并通过MATLAB仿真出动力学微分方程。

SIR

SIR病毒模型作为传染病研究中最经典的动力学模型,作为很多病毒模型研究的基础。其中S表示易感染者,I表示感染者、R表示移除者,起动力学逻辑如图所示:

其微分方程为:

其中α代表感染率、β代表移除率。

Matlab代码:

clear;clc;
%各种状态人群参数设置
N = 1;%人口总数
I = 0.2;%感染者
S= N-I;%易感者
R=0;%免疫者
%模型系数设置
b=0.5;%感染系数
c=0.25;%康复系数(感染者转会免疫者系数)
T= 0:20;%迭代总时长
for idx = 1:length(T)-1S(idx+1) = S(idx)-b*S(idx);%易感者S迭代I(idx+1) = I(idx)+b*S(idx)-c*I(idx);%感染者I迭代R(idx+1) = c*I(idx);%免疫者R迭代
end
figure
plot(T,S,T,I,T,R);
grid on;
xlabel('天');ylabel('人数')
legend('易感者S','感染者I','免疫者R')
title('SIR')

仿真图:

SEIR

SEIR模型是以SIR模型为基础加入潜伏节点E(t),表示在t时刻潜伏者在络中的比例。易感者S中部分以概率λ直接被感染成为感染者I,另一部分以α的感染率变成潜伏者E,潜伏者E以β的概率转化为感染者I,感染者I则以λ的免疫率被治愈获得抗体且不会被再次感染也不会改变状态成为免疫态R,其动力学逻辑如下所示:

其传播动力学微分方程为:

Matlab代码:

clear;clc;
%各种状态人群参数设置
N = 1;%人口总数
I = 0.2;%感染者
S= N-I;%易感者
R=0;%免疫者
E=0;%潜伏者
%模型系数设置
a=0.2;%转为潜伏者系数
b=0.6;%感染系数
c=0.8;%康复系数(感染者转会免疫者系数)
d=0.2;%潜伏者染病系数(潜伏者转为感染者系数)
T= 0:20;%迭代总时长
for idx = 1:length(T)-1S(idx+1) = S(idx)-a*S(idx)*E(idx)-b*S(idx)*I(idx);%易感者S迭代E(idx+1) = E(idx)+a*S(idx)*E(idx)-d*E(idx);%潜伏者E迭代I(idx+1) = I(idx)+d*E(idx)+b*S(idx)*I(idx)-c*I(idx);%感染者I迭代R(idx+1) = a*I(idx)+c*I(idx);%免疫者R迭代
end
figure
plot(T,S,T,E,T,I,T,R);
grid on;
xlabel('天');ylabel('人数')
legend('易感者S','潜伏者','感染者I','免疫者R')
title('SEIR')

仿真结果:

SIVRS

在SEIR模型的基础上,同时还考虑到变异的存在,并且假设系统存在于一个封闭的复杂网络中,有学者就提出了SIVRS模型。假设N为种类常数,δ表示为初始出生率,网络平均度为<k> ,易感者S接触感染者I后感染概率为α,当感染者接触变异者之后变异率为γ,同时感染者以内部概率η变异为V,部分感染者以β概率恢复为免疫者R, 另外一部分感染者则一直保持感染态,免疫者(移除者)R以一定概率恢复为S,四个种群均有相同的死亡率μ。

该模型特点:

①考虑到出生率(即模型总量的变化)

②考虑到病毒的变异

③考虑到免疫者变回为易感者

其动力学逻辑如下所示:

其传播动力学微分方程为:

matlab程序:

clear;clc;
%各种状态人群参数设置
N = 1;%人口总数
I = 0.2;%感染者
S= N-I;%易感者
R=0;%免疫者
V=0;%潜在变异者
%模型系数设置
a=0.6;%易感者转为感染者系数(感染系数)
b=0.8;%感染者转为免疫者系数(康复系数)
c=0.1;%感染者内部变异
d=0.1;%感染者外部变异
e=0.05;%死亡系数
h=0.2;%免疫者转化为易感者概率
g=0.05;%初始出生率
k=2;%网络平均度(每个个体平均接触其它个体数)
T= 0:100;%迭代总时长
for idx = 1:length(T)-1S(idx+1) = S(idx)+g*N-a*k*S(idx)*I(idx)+h*R(idx)-e*S(idx);%易感者S迭代I(idx+1) = I(idx)+a*k*S(idx)*I(idx)-d*k*I(idx)*V(idx)-(c+b+e)*I(idx);%感染者I迭代V(idx+1) = V(idx)+d*k*I(idx)*V(idx)+c*I(idx)-e*V(idx);%变异者V迭代R(idx+1) = R(idx)+b*I(idx)-h*R(idx)-e*R(idx);%免疫者R迭代
end
figure
plot(T,S,T,I,T,V,T,R);
grid on;
xlabel('天');ylabel('人数')
legend('易感者S','感染者I','变异者V','免疫者R')
title('SIVRS')

仿真结果:

补充

SEIH

SEIH虽然是为信息传播领域的所提出的,但和病毒传播模型也有很多相似之处,故我们也一并提及。

SEIH模型的特点:

①考虑到信息的二次传播

②与生物病毒传播模型不同,无死亡率(也无出生率),即模型总体量不会发生变化

基于SEIR传播模型,然后根据网络中话题式信息的衍生特性,构建改良式的含有信息机制、信息出现频次及时效性话题式信息传播的SEIHH-SEIR模型。

易感者S接受信息后可以进行选择,一部以α的概率变成移除者,一部分以γ概率变成潜伏者。潜伏者有μ的概率变成感染者, 而在潜伏期的阶段,也有β的概率潜伏者直接转化成免疫状态;再被感染的I状态只能以概率γ转化成免疫者;与SEIR的区别在于,考虑到信息二次传播的可能性,所以处于免疫状态的免疫者会接收到新的消息再次转变成潜在者,则H以概率Θ变成E,进而继续新一轮的传播,其动力学逻辑如下所示:

其传播动力学微分方程为:

Matlab程序:

clear;clc;
%各种状态人群参数设置
N = 1;%人口总数
I = 0.2;%感染者
S= N-I;%易感者
H=0;%免疫者
E=0;%潜伏者
%模型系数设置
a=0.2;%易感者转为移除者系数
b=0.6;%易感者转为潜伏者系数
c=0.8;%潜伏者转为免疫者系数
d=0.2;%潜伏者染病系数(潜伏者转为感染者系数)
e=0.7;%感染者转为免疫者系数
f=0.2;%二次传播系数(免疫者变回潜伏者)
T= 0:50;%迭代总时长
for idx = 1:length(T)-1S(idx+1) = S(idx)-b*S(idx)*I(idx)-a*S(idx);%易感者S迭代E(idx+1) = E(idx)+b*S(idx)*I(idx)-d*E(idx)-c*E(idx)+f*H(idx);%潜伏者E迭代I(idx+1) = I(idx)+d*E(idx)-e*I(idx);%感染者I迭代H(idx+1) = H(idx)+a*S(idx)+c*E(idx)+e*I(idx)-f*H(idx);%免疫者H迭代
end
figure
plot(T,S,T,E,T,I,T,H);
grid on;
xlabel('天');ylabel('人数')
legend('易感者S','潜伏者E','感染者I','免疫者H')
title('SEIH')

仿真结果:

参考书目

《复杂网络算法与应用》--孙玺菁

几种经典病毒动力学模型【基于matlab的动力学模型学习笔记_3】相关推荐

  1. 计算机基础与程序设计(基于C语言)学习笔记

    计算机基础与程序设计(基于C语言)学习笔记 前言 这是一个学习笔记 课程导入 在线学习工具:https://c.runoob.com/compile/11 为什么要学习程序设计 (1)存储程序和程序控 ...

  2. 【毕业设计之python系列】基于Flask的在线学习笔记的设计与实现

    基于Flask的在线学习笔记的设计与实现 摘要 在线学习笔记系统是一种为学生和教师提供在线学习和教学的平台.本文基于Flask框架,设计并实现了一个在线学习笔记系统.该系统支持用户注册.登录.创建课程 ...

  3. 统计学习导论 - 基于R的应用 学习笔记1

    统计学习导论 - 基于R的应用 学习笔记 Chapter 1 导论 统计学习是什么: 关于估计ƒ的一系列方法 Y=f(x)+ξ f:X 提供给 Y 的系统信息,是 x 的函数 ξ:随机误差项:均值为0 ...

  4. matlab机器人工具箱学习笔记——ikine函数

    matlab机器人工具箱学习笔记--ikine函数 ikine函数用法 使用实例 链接: https://blog.csdn.net/weixin_42596724/article/details/8 ...

  5. comsol与matlab连接使用学习笔记 1 基础设置

    comsol与matlab连接使用学习笔记 1 基础设置 前言 1.安装 COMSOL livlink for Matlab 2.首次运行 前言 以前从来没有用过comsol livelink for ...

  6. 数理方程及MATLAB解算学习笔记

    数理方程及MATLAB解算学习笔记 文章目录 数理方程及MATLAB解算学习笔记 第一章 MATLAB基础知识 1.class查询数值类型 2.永久性数值变量 3.创建特殊矩阵的专用指令 4.基本初等 ...

  7. 【Matlab 机器人工具箱 学习笔记】双旋转台5轴数控机床 运动学模型02

    参考: [1]何永红, 齐乐华, 赵宝林. 双转台五轴数控机床后置处理算法研究[J]. 制造技术与机床, 2006(1). [2]李永桥, 陈强, 谌永祥. 双转台五轴数控机床运动变换及求解方法的研究 ...

  8. MATLAB Simulink Statflow学习笔记

    MATLAB Simulink Statflow学习笔记 1.概述 在做算法设计时,会用到Statflow模块和MATLAB Function模块,我们可以在这里搭建自己需要的程序逻辑. (1) St ...

  9. 带时滞的病毒模型计算模板【基于matlab的动力学模型学习笔记_1】

    /*仅当作学习笔记,若有纰漏欢迎友好交流指正,此外若能提供一点帮助将会十分荣幸*/ 摘 要:无论是生物病毒还是网络病毒,其内核的传播机理都有很多的相似之处.因此,本文在经典的SIR病毒模型基础上改造出 ...

  10. 一维离散动力学系统的混沌研究【基于matlab的动力学模型学习笔记_8】

    摘 要:混沌(Chaos)是指发生在确定系统中的貌似随机的不规则运动,本文将基于几种经典的一维动力学方程系统,根据其动力学方程研究其混沌产生过程以及相对应的MATLAB仿真. /*仅当作学习笔记,若有 ...

最新文章

  1. ssh-keys git
  2. 《Effective Java》学习笔记 第二章 创建和销毁对象
  3. Python脚本如何生成Windows可执行文件.exe
  4. vue - blog开发学习1
  5. HDU-5249 KPI(STL or 权值线段树)
  6. php 一片空白,解决运行PHP一片空白
  7. WildFly和Docker上的Java EE 7动手实验室
  8. Eclipse — 导包异常总结《I》
  9. ENVI 不规则多边形shp裁剪后Memory灰色显示问题解决
  10. 通信原理第七版樊昌信 课后习题答案详解
  11. android使用cpu软解,Android 使用自带的MediaCodec 框架进行本地视频压缩,速度嗖嗖的,亲测有效!!!...
  12. 苹果系统摩尔庄园是什么服务器,摩尔庄园手游iOS
  13. MySQL8的URL和Driver的写法
  14. android-自定义锁屏界面
  15. 彩色二维码可识别性比较
  16. 2022东南大学网安916考研经验贴
  17. Revit API:找到轮廓族的路径
  18. 三丰云提供免费虚拟主机、免费云服务器”
  19. HCIE-RS 论述题园区网出口选路
  20. PPT格式转换PDF在手机上如何操作

热门文章

  1. frft雷达信号处理 论文
  2. js 生成二维码(qrcodejs)
  3. 双层pdf软件free_这款软件神器,让你读文献的效率翻一倍!(文末有福利哦)...
  4. haar特征简单分析
  5. python第三方库官方文档汇总
  6. nginx集群部署,实现负载均衡和nfs共享
  7. linux环境搭建之tftp tftpd服务器
  8. 斗鱼主播后台礼物数据爬取
  9. Si4438, Si4432, Sx1278, Sx1276, Sx1212无线数传模块简单介绍
  10. c语言基础知识点 面试题,C语言面试基础知识题