数学建模python matlab 编程(疾病传播模型)

编程入门 行业动态 更新时间:2024-10-08 14:37:22

数学<a href=https://www.elefans.com/category/jswz/34/1769748.html style=建模python matlab 编程(疾病传播模型)"/>

数学建模python matlab 编程(疾病传播模型)

例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 pltp_size=10000
get_ill_p = 0.1is_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]=1ill_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:150y(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_pis_ill(p)=1;ill_n = ill_n+ 1;endendend
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;endy=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;endy=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;endy=z;  %%%经过一个时段后新的分布产生了。s(n)=numel(find(z==0));   %%%计算总的患病人数。
end
s;plot(s)   %%%画出患病人数曲线图。
s(72)

 

更多推荐

数学建模python matlab 编程(疾病传播模型)

本文发布于:2024-03-14 15:40:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736791.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:建模   模型   疾病   数学   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!