在高中时除了物理竞赛没有学习外,竞赛的五大学科剩下的四门均有所涉猎及参加,因而精力分散太多。因此下定决心大学时可以广泛涉猎知识,但是主攻的竞赛只能有两个ACM和MCM,如今虽然高考完挂,但学术之心尚存,而SIR模型对我来说便是数学海洋中的一块拾贝
舆论的力量一向是被政府所重视的,所以在战时拥有自己的电台,掌握说话权是相当的重要。对于商人,他们希望他们促销打折的消息迅速的传播,同样对于普通百姓来说,家长里短,一个消息的传播往往是复杂而多变的,因此研究消息传播的一般规律显得尤为重要。现在我们迫切想知道一般来说对于一个消息,经过一段时间后能够有多少人得到它?
为方便讨论,做如下假设:初始时知道这个消息的人数为P0,经过时间t后知道这个消息的人数为f(t)。
我们先猜想下f(t)会有些什么性质?首先它是递增的---短期内如果不是患上阿尔兹海默症的人群的话,知道一个消息的人数只可能越来越多。其次可以预计当t趋向于正无穷时f(t)将会趋于一个定值---全人类的数目是有限的,当时间过得越长,消息的扩散也就趋于饱和,
尝试建立模型,假设每人单位时间内会接触k个人并将消息准确传播给这k个人,那么在△t内知道这一消息增加的人数为f(t+△t)-f(t),它又等于t时刻知道这一消息的所有人在△t这段时间内传播的人数,即可列出方程:f(t+△t)-f(t)=kf(t)* △t
由f(t+△t)≈f(t)+f’(t)* △t将上式改写成微分方程:df/dt =kf(t)
该方程属于可分离变量型,容易求出通解为f(t)=C*e^(kt)将f(0)=P0代入求出特解为:f(t)=P0*e^(kt)
突然我们发现,花了那么大力气竟然求出来一个无界的函数!!分析过程的每一步,我们发现,问题出在f(t)个人单位时间接触的k个人除了不知道这个消息的人外还有已经知道这个消息的即f(t)中的人,这就迫使我们另辟蹊径,即本文的主题SI模型。
设消息受众的总人数为N(例如某市百货商场打折这一消息的N就是该市的总人数)f(t)不再表示t时刻知道消息的人数,而是t时刻知道消息的人数占总人数N的比率,所以此时知道消息的人数表示成N*f(t),而不知道该消息的人数为N*(1-f(t)),这样建模的好处便是我们顺利分出了知道消息的人与不知道消息的人, 每人每天接触的k人里有k*f(t)是以前听过消息的,k*(1-f(t))人是以前没听过消息的
k的意义如前所述,因此在△t时间内知道该消息增加了N*[f(t+△t)-f(t)],类似于上面一个模型的讨论,只是k变成了k*(1-f(t)),f(t)成了N*f(t)得到:
N*[f(t+△t)-f(t)]=[k*(1-f(t))]*[ N*f(t)]* △t
对上式进行同样的处理得到微分方程:df/dt=k*[1-f(t)]*f(t)
等等这个微分方程怎么那么像混沌里面的虫口模型的方程?没错这个就是著名的逻辑蒂斯方程,只是在研究混沌现象时我们研究它的离散形式也就是差分方程,而这里我们研究的是微分方程,本质上是一样的。顺便一提,还记得高中生物书上说当种群没有受到食物,空间等因素的制约时是J型曲线,反之是S型曲线么?J型曲线对应的便是上面一个模型 ,而S型曲线即对应这里的逻辑蒂斯方程
这个微分方程是有解析解的,并且仍然属于可分离变量型的。结果很容易求,但由于百度空间传图不方便,自行脑补吧
然后就是这个模型最初的建立不是研究消息的传播,而是传染病的传播,因此除了SI模型外还有SIS(可治愈并被再次感染)SIR(可治愈并获得免疫不再被感染),其中SIR模型的微分方程无解析解,因此得用maltab进行分析,当然也可以用欧拉法自行画出微分方程的图。如今相关模型已经成为一门系统的学科即传染病动力学。

舆论的力量---数学建模初探(SI模型)的更多相关文章

  1. Python小白的数学建模课-B5. 新冠疫情 SEIR模型

    传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. 考虑存在易感者.暴露者.患病者和康复者四类人群,适用于具有潜伏期.治愈后获得终身免疫的传染病. 本 ...

  2. Python小白的数学建模课-B6. 新冠疫情 SEIR 改进模型

    传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. SEIR 模型考虑存在易感者.暴露者.患病者和康复者四类人群,适用于具有潜伏期.治愈后获得终身免疫 ...

  3. Python小白的数学建模课-B4. 新冠疫情 SIR模型

    Python小白的数学建模课-B4. 新冠疫情 SIR模型 传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. SIR 模型将人群分为易感者(S类). ...

  4. Python小白的数学建模课-09 微分方程模型

    小白往往听到微分方程就觉得害怕,其实数学建模中的微分方程模型不仅没那么复杂,而且很容易写出高水平的数模论文. 本文介绍微分方程模型的建模与求解,通过常微分方程.常微分方程组.高阶常微分方程 3个案例手 ...

  5. Matlab与数学建模

    一.学习目标. (1)了解Matlab与数学建模竞赛的关系. (2)掌握Matlab数学建模的第一个小实例—评估股票价值与风险. (3)掌握Matlab数学建模的回归算法. 二.实例演练. 1.谈谈你 ...

  6. Python小白的数学建模课-16.最短路径算法

    最短路径问题是图论研究中的经典算法问题,用于计算图中一个顶点到另一个顶点的最短路径. 在图论中,最短路径长度与最短路径距离却是不同的概念和问题,经常会被混淆. 求最短路径长度的常用算法是 Dijkst ...

  7. Python小白的数学建模课-10.微分方程边值问题

    小白往往听到微分方程就觉得害怕,其实数学建模中的微分方程模型不仅没那么复杂,而且很容易写出高水平的数模论文. 本文介绍微分方程模型边值问题的建模与求解,不涉及算法推导和编程,只探讨如何使用 Pytho ...

  8. Python小白的数学建模课-12.非线性规划

    非线性规划是指目标函数或约束条件中包含非线性函数的规划问题,实际就是非线性最优化问题. 从线性规划到非线性规划,不仅是数学方法的差异,更是解决问题的思想方法的转变. 非线性规划问题没有统一的通用方法, ...

  9. Python小白的数学建模课-15.图论基本概念

    图论中所说的图,不是图形图像或地图,而是指由顶点和边所构成的图形结构. 图论不仅与拓扑学.计算机数据结构和算法密切相关,而且正在成为机器学习的关键技术. 本系列结合数学建模的应用需求,来介绍 Netw ...

随机推荐

  1. DoTween学习笔记

    using DG.Tweening:   Tweener 首先dotween在游戏刚开始运行时会默认进行一次初始化 DOTween.Init(); 如果为了有更好的效率,可以手动控制最大同时进行dot ...

  2. PHP的知识点总结1

    PHP 基础知识总结 2015-06-03 分类: 编程技术   PHP 代表 PHP: Hypertext Preprocessor PHP 文件可包含文本.HTML.JavaScript代码和 P ...

  3. JavaScript禁止键入非法值,只有这些才能被键入

    JavaScript禁止键入非法值,只有这些才能被键入(k==9)||(k==13)||(k==46)||(k==8)||(k==189)||(k==109)||(k==190)||(k==110)| ...

  4. AJPFX关于Java内部类及其实例化

    public class Outer {    private int size;    public class Inner {        private int counter = 10;  ...

  5. pageHelper分页插件失效问题

    在bootstrap中引用pageHelper进行页面分页<dependency><groupId>com.github.pagehelper</groupId>& ...

  6. 洛谷P2765 魔术球问题(贪心 最大流)

    题意 已经很简洁了吧. 假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为1,2,3,...的球. (1)每次只能在某根柱子的最上面放球. (2)在同一根柱子中,任何2个相邻球的编号之和为完全 ...

  7. 飞秋软件的OA消息接口服务器

    由于单位使用了飞秋,同时也使用了OA,但OA的消息系统没有飞秋方便,所以大多数人还是在用飞秋沟通.但审批等流程又在OA上,所以做了个消息接口服务器,提取OA消息自动发送到飞秋上,大大方便了工作. 正好 ...

  8. Python中Pickle模块的dump()方法和load()方法

    Python中的Pickle模块实现了基本的数据序列与反序列化. 经常遇到在Python程序运行中得到了一些字符串.列表.字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就 ...

  9. Python基础4 迭代器,生成器,装饰器,Json和pickle 数据序列化

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...

  10. clone对象或数组

    function clone(obj) { var o; if (typeof obj == "object") { if (obj === null) { o = null; } ...