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

先用python和matlab模拟

我的python代码

# -*- coding: utf-8 -*-
import numpy as np
import random
import matplotlib
matplotlib.rcParams['font.sans-serif']=[u'simHei']
matplotlib.rcParams['axes.unicode_minus']=False
import pandas as pd
import matplotlib.pyplot as plt p_size=10000
get_ill_p = 0.1 is_ill = np.zeros(p_size)
is_ill[0]=1
ill_n =1
x=[]
y=[]
for time in range(100):
x.append(time)
y.append(ill_n)
# 遍历每一个交往的人数
for i in range(ill_n):
# 交往的人数再0-2个人内
renshu = np.random.randint(0,2)
for j in range(renshu):
# 随机挑一个人
p = np.random.randint(0,p_size)
# 如果p没患病
if is_ill[p]==0 and random.random()<0.5:
is_ill[p]=1
ill_n += 1
plt.plot(x,y)

我的matlab代码

clear;
p_size=10000;
get_ill_p = 0.1; is_ill = zeros(1,p_size);
is_ill(1)=1;
ill_n =1;
y(1)=1;
for time =1:150
y(time)=ill_n;
% 遍历每一个交往的人数
for i =1:ill_n
% 交往的人数再0-2个人内
renshu = randperm(2,1); % 产生0到2内的随机整数
for j =1:renshu
% 随机挑一个人
p = randperm(p_size,1); % 产生0到p_size内的随机整数
% 如果p没患病
if is_ill(p)==0 && rand(1)<get_ill_p
is_ill(p)=1;
ill_n = ill_n+ 1;
end
end
end
end
plot(y,'o');

老师的matlab代码1

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

老师的matlab代码2

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

老师的matlab代码3

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

老师的matlab代码4

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

    码值 含义 备注 0x08 Backspace键   0x09 Tab键   0x0C Clear键 Num Lock关闭时的数字键盘5 0x0D Enter键   0x10 Shift键   0x1 ...

  2. 2018 CERC 混合博弈

    N堆石子 先手最多拿A个 后手最多拿B个 每次都至少要拿一个 谁先取完谁赢 如果A和B相等直接就是一个bash博弈 如果一个石堆的石子数少于min(A,B) 则是个nim游戏 我们先讨论只有N=1且A ...

  3. 【python】使用plotly生成图表数据

    安装 在 ubuntu 环境下,安装 plotly 很简单 python 版本2.7+ pip install plotly 绘图 在 plotly 网站注册后,可以直接将生成的图片保存到网站上,便于 ...

  4. 【python】发送邮件,含附件

    def send_mail(_user,_pwd,_to): # f = open(file_new,'rb') # mail_body = f.read() # f.close() # 读取最新测试 ...

  5. vue3.0脚手架 创建项目

    1.下载node最新稳定版本,并且安装 2.安装好之后,在cmd或者terminal下, 使用npm -v 查看当前npm版本,验证是否安装成功 3.安装成功后,运行 npm i -g @vue/cl ...

  6. 基于Mint UI和MUI开发VUE项目一之环境搭建和首页的实现

    一:简介 Mint UI 包含丰富的 CSS 和 JS 组件,能够满足日常的移动端开发需要.通过它,可以快速构建出风格统一的页面,提升开发效率.真正意义上的按需加载组件.可以只加载声明过的组件及其样式 ...

  7. 【模板】A*B Problem升级版(FFT快速傅里叶)

    题目描述 给出两个 $n$ 位10进制数x和y,求x*y(详见 洛谷P1919) 分析 假设已经学会了FFT/NTT. 高精度乘法只是多项式乘法的特殊情况,相当于$x=10$ 时. 例如n=3,求12 ...

  8. ACM-ICPC 2018 沈阳赛区现场赛 K. Let the Flames Begin (约瑟夫环问题)

    题目链接: 题意:有 n 个人围成一个圈,从 1 开始报到第 k 个人出环,问第 m 个出环的人是谁,n.m.k <= 1e18 且 min(m,k)<= 2e6. 题解:容易得出O(m) ...

  9. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  10. Vue引入非npm的js库

    Vue引入非npm的js库 Vue项目有时候需要一些没有export的js库,不能通过import引入,那么使用方法如下 1.可以在index.html页面使用script标签引入,当然也可以使用cd ...