例12:一只游船上有800(1000)人,一名游客不慎患传染病,12(10)小时后有3人发病,由于船上不能及时隔离,问经过60(30)小时,72小时,患此病的人数。(与人口模型和Logistic模型类似)

先用python和matlab模拟

我的python代码

  1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3. import random
  4. import matplotlib
  5. matplotlib.rcParams['font.sans-serif']=[u'simHei']
  6. matplotlib.rcParams['axes.unicode_minus']=False
  7. import pandas as pd
  8. import matplotlib.pyplot as plt
  9.  
  10. p_size=10000
  11. get_ill_p = 0.1
  12.  
  13. is_ill = np.zeros(p_size)
  14. is_ill[0]=1
  15. ill_n =1
  16. x=[]
  17. y=[]
  18. for time in range(100):
  19. x.append(time)
  20. y.append(ill_n)
  21. # 遍历每一个交往的人数
  22. for i in range(ill_n):
  23. # 交往的人数再0-2个人内
  24. renshu = np.random.randint(0,2)
  25. for j in range(renshu):
  26. # 随机挑一个人
  27. p = np.random.randint(0,p_size)
  28. # 如果p没患病
  29. if is_ill[p]==0 and random.random()<0.5:
  30. is_ill[p]=1
  31. ill_n += 1
  32. plt.plot(x,y)

我的matlab代码

  1. clear;
  2. p_size=10000;
  3. get_ill_p = 0.1;
  4.  
  5. is_ill = zeros(1,p_size);
  6. is_ill(1)=1;
  7. ill_n =1;
  8. y(1)=1;
  9. for time =1:150
  10. y(time)=ill_n;
  11. % 遍历每一个交往的人数
  12. for i =1:ill_n
  13. % 交往的人数再0-2个人内
  14. renshu = randperm(2,1); % 产生02内的随机整数
  15. for j =1:renshu
  16. % 随机挑一个人
  17. p = randperm(p_size,1); % 产生0p_size内的随机整数
  18. % 如果p没患病
  19. if is_ill(p)==0 && rand(1)<get_ill_p
  20. is_ill(p)=1;
  21. ill_n = ill_n+ 1;
  22. end
  23. end
  24. end
  25. end
  26. plot(y,'o');

老师的matlab代码1

  1. clear
  2. d=800; %%%总的患病人数。
  3. y=ones(1,d);%%%“1”表示健康的人。
  4. y(1)=0; %%%第1个人患病了。
  5.  
  6. for n=1:240 %%%考虑200个时间单位后的情况。
  7. y=y(randperm(d)); %%%将y的顺序打乱。
  8. z=[y(2:d)];z(d)=y(1); %%%考虑 y 后面一个人, 最后一个人的后面拟定为第一个人。
  9. %%%每一个人可随机与另一个人接触,在一维中足够可表达这个意思.
  10. R=find((y==0)&z==1); %%%找出患者即将传染的人。只有健康的人才会成为新的患者。
  11. for k=1:size(R,2) %%%size(R,2)为第 n 个单位时间的总的“传播机会”.
  12. w=randperm(15);p=(w(1)>=2); %%%不是只要一个健康的人接触患者就会成为病人的。传染病有感染程度的不同。
  13. z(R(k))=1.*p;
  14. end
  15. y=z; %%%经过一个时段后新的分布产生了。
  16. s(n)=numel(find(z==0)); %%%计算总的患病人数。
  17. end
  18. s;plot(s) %%%画出患病人数曲线图。

老师的matlab代码2

  1. clear
  2. t=1:240;
  3. y=800./(1+799.*exp(-0.09176.*t));
  4. plot(y)

老师的matlab代码3

  1. clear
  2. d=800; %%%总的患病人数。
  3. y=ones(1,d);%%%“1”表示健康的人。
  4. y(1)=0; %%%第1个人患病了。
  5.  
  6. for n=1:240 %%%考虑200个时间单位后的情况。
  7. y=y(randperm(d)); %%%将y的顺序打乱。
  8. z=[y(2:d)];z(d)=y(1); %%%考虑 y 后面一个人, 最后一个人的后面拟定为第一个人。
  9. %%%每一个人可随机与另一个人接触,在一维中足够可表达这个意思.
  10. R=find((y==0)&z==1); %%%找出患者即将传染的人。只有健康的人才会成为新的患者。
  11. for k=1:size(R,2) %%%size(R,2)为第 n 个单位时间的总的“传播机会”.
  12. w=randperm(15);p=(w(1)>=2); %%%不是只要一个健康的人接触患者就会成为病人的。传染病有感染程度的不同。
  13. z(R(k))=1.*p;
  14. end
  15. y=z; %%%经过一个时段后新的分布产生了。
  16. s(n)=numel(find(z==0)); %%%计算总的患病人数。
  17. end
  18. s;plot(s) %%%画出患病人数曲线图。
  19. s(72)

老师的matlab代码4

  1. clear
  2. d=800; %%%总的患病人数。
  3. y=ones(1,d);%%%“1”表示健康的人。
  4. y(1)=0; %%%第1个人患病了。
  5.  
  6. for n=1:240 %%%考虑200个时间单位后的情况。
  7. y=y(randperm(d)); %%%将y的顺序打乱。
  8. z=[y(2:d)];z(d)=y(1); %%%考虑 y 后面一个人, 最后一个人的后面拟定为第一个人。
  9. %%%每一个人可随机与另一个人接触,在一维中足够可表达这个意思.
  10. R=find((y==0)&z==1); %%%找出患者即将传染的人。只有健康的人才会成为新的患者。
  11. for k=1:size(R,2) %%%size(R,2)为第 n 个单位时间的总的“传播机会”.
  12. w=randperm(11);p=(w(1)>=2); %%%不是只要一个健康的人接触患者就会成为病人的。传染病有感染程度的不同。
  13. z(R(k))=1.*p;
  14. end
  15. y=z; %%%经过一个时段后新的分布产生了。
  16. s(n)=numel(find(z==0)); %%%计算总的患病人数。
  17. end
  18. s;plot(s) %%%画出患病人数曲线图。
  19. s(72)

数学建模python matlab 编程(疾病传播模型)的更多相关文章

  1. 数学建模python matlab 编程(指派问题)

    指派授课问题 现有A.B.C.D四门课程,需由甲.乙.丙.丁四人讲授,并且规定: 每人只讲且必须讲1门课:每门课必须且只需1人讲. 四人分别讲每门课的费用示于表中: 课 费用 人 A B C D 甲 ...

  2. 数学建模python matlab 编程(随机游走问题)

    1 (1). 随机游走问题.在-10到10的一维线段上,质点以1/5的概率用左运动1单位,以2/5的概率停止不动,以2/5的概率向右运动2单位,且碰到-10时向右运动3单位,碰到10时向左运动4单位. ...

  3. 数学建模python matlab 编程(喷泉模拟)

    在无风情况下的喷泉模拟 我的python代码 import numpy as np import random import matplotlib matplotlib.rcParams['font. ...

  4. 数学建模python matlab 编程(椭圆声学原理画图证明,解析几何)

    证明,在椭圆形的音乐厅内,从一个椭圆的一个焦点发出声音,则另一个焦点听到的声音是最大的. 分析:证明,从椭圆的一个焦点任意发射的直线经过反射后,并经过另一个焦点.            画图,过一个焦 ...

  5. 在数学建模中学MATLAB

    为期三周的数学建模国赛培训昨天正式结束了,还是有一定的收获的,尤其是在MATLAB的使用上. 1. 一些MATLAB的基础性东西: 元胞数组的使用:http://blog.csdn.net/z1137 ...

  6. 【数学建模】MatLab 数据读写方法汇总

    1.读入 txt 文件数据. load xxx.txt A=load(‘xxx.txt’) A=dlmread(‘xxx.txt’) A=importdata(‘xxx.txt’) 例:将身高体重的 ...

  7. python网络编程——网络IO模型

    1 网络IO模型介绍 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:    (1)同步阻塞IO(Blocking IO):即传统的IO模型.    (2)同步非阻塞IO(Non-bl ...

  8. Python网络编程(OSI模型、网络协议、TCP)

    前言: 什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系. 在数学上,网络是一种图,一般认为专指加权图. 网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类 型的实际问题中抽象 ...

  9. 【数学建模】MATLAB语法

    一.向量.矩阵的表示和使用 format long  %小数很多format short %默认4位小数format rat %显示最近的分数format short e %指数格式的数 尾数多少 e ...

随机推荐

  1. sqlserver 拼接字符串分割

    CREATE FUNCTION [dbo].[fnQuerySplit] ( @string VARCHAR(MAX) ,--待分割字符串 )--分割符 ) ) ) AS BEGIN DECLARE ...

  2. centos6.5 安装emqtt

    emqtt有监控界面,集群配置也非常简单. # yum -y update # yum install unzip vim wget xsltproc fop tk unixODBC unixODBC ...

  3. Python中正则匹配使用findall,捕获分组(xxx)和非捕获分组(?:xxx)的差异

    转自:https://blog.csdn.net/qq_42739440/article/details/81117919 下面是我在用findall匹配字符串时遇到的一个坑,分享出来供大家跳坑. 例 ...

  4. python panda读写内存溢出:MemoryError

    pandas中read_xxx的块读取功能 pandas设计时应该是早就考虑到了这些可能存在的问题,所以在read功能中设计了块读取的功能,也就是不会一次性把所有的数据都放到内存中来,而是分块读到内存 ...

  5. 数组增、删方法(push()-unshift()-pop()和shift())

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 使用 uni-app 开发遇到的问题

    想法: uni-app 给我的感觉就像是把微信小程序的API,组件和vue的语法揉捏在一起所组成框架,没有原生小程序和vue那种流畅感,官方的 uni-ui 组件库不够成熟,坑比较多.   问题一:自 ...

  7. 2、组件注册-@Configuration&@Bean给容器中注册组件

    2.组件注册-@Configuration&@Bean给容器中注册组件 2.1 创建maven项目 spring-annotation pom.xml文件添加 spring-context 依 ...

  8. PHP mysqli_dump_debug_info() 函数

    mysqli_dump_debug_info() 函数转储调试信息到日志中. <?php mysqli_dump_debug_info($con); ?>

  9. 009_STM32程序移植之_内部falsh

    flash  模拟  EEPROM  实验 1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH340引脚 VCC---- ...

  10. chrome扩展开发实战入门之一-hellocrx

    后记:在写这篇文章时,我还没搞懂chrome扩展的基本原理.后来才明白,最简单(且实用)的扩展只需要manifest.json和content_scripts.js两个文件,无需background. ...