请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1734|回复: 0

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

[复制链接]
字体大小: 正常 放大
杨利霞        

5250

主题

81

听众

16万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    发表于 2020-5-14 21:54 |显示全部楼层
    |招呼Ta 关注Ta
    数学建模python matlab 编程(疾病传播模型)
    例12:一只游船上有800(1000)人,一名游客不慎患传染病,12(10)小时后有3人发病,由于船上不能及时隔离,问经过60(30)小时,72小时,患此病的人数。(与人口模型和Logistic模型类似)
    先用python和matlab模拟
    我的python代码
    # -*- coding: utf-8 -*-import numpy as npimport randomimport matplotlibmatplotlib.rcParams['font.sans-serif']=[u'simHei']matplotlib.rcParams['axes.unicode_minus']=Falseimport pandas as pdimport matplotlib.pyplot as plt p_size=10000get_ill_p = 0.1 is_ill = np.zeros(p_size)is_ill[0]=1ill_n =1x=[]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 += 1plt.plot(x,y)
    file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif
    我的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    endendplot(y,'o');
    file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif
    老师的matlab代码1
    cleard=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));   %%%计算总的患病人数。ends;plot(s)   %%%画出患病人数曲线图。
    file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif
    老师的matlab代码2
    cleart=1:240;y=800./(1+799.*exp(-0.09176.*t));plot(y)
    file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif
    老师的matlab代码3
    cleard=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));   %%%计算总的患病人数。ends;plot(s)   %%%画出患病人数曲线图。s(72)
    file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif
    老师的matlab代码4
    cleard=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));   %%%计算总的患病人数。ends;plot(s)   %%%画出患病人数曲线图。s(72)
    file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif
    转载于:https://www.cnblogs.com/caiyishuai/p/11193338.html
    1 _6 N0 m9 X4 C& I

    6 Z/ u: O! c( g) w
    zan
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-4-18 11:23 , Processed in 0.390786 second(s), 51 queries .

    回顶部