原先写了篇论文,现在把代码分享给大家。

代码

import scipy.integrate as spi

import numpy as np

import matplotlib.pyplot as plt

import math

import xlrd

# https://zhuanlan.zhihu.com/p/104091330

# I_0为感染者的初始人数 524*1.5

I_0 = 109

# E_0为潜伏者的初始人数

E_0 = 223

# R_0为治愈者的初始人数

R_0 = 4

# S_0为易感者的初始人数

# S_0 = N - I_0 - E_0 - R_0

S_0=21536000

# Sq 隔离易感染者

S_q=1000

# Eq隔离潜伏者

E_q=200

# H住院患者

H=I_0+E_q

# T为传播时间

T = 35

#θ潜伏者相对感染者传播能力的比值-假设潜伏期患者与已经表现出症状的患者传染能力相同

cita=1

#γ隔离接触速率-隔离14天

gamma=1/14

# σ潜伏者向感染者转化速率 潜伏期7天

sigama=1/7

# α病死率----需基于实际死亡人数进行调整

alpha=0.013

# δI感染者隔离速率

delta_I=0.13

# γI感染者恢复速率

gamma_I=0.043

# δq 隔离潜伏者向隔离感染者的转化速率

delta_q=0.013

# γH隔离感染者的恢复速率

gamma_H=0.043

# β 传染概率

beta = 3.3*math.pow(10,-9)

# q 隔离比例

q=59*math.pow(10,-6)

# c 接触率

c=2.9

# ρ有效接触系数 ρc有效接触率

rou=1

#λ隔离解除速率

lamada=1/14

# INI为初始状态下的数组

INI = (S_0,E_0,I_0,R_0,S_q,E_q,H)

def funcSEIR(inivalue,_):

Y = np.zeros(7)

X = inivalue

Y[0]=-(rou*c*beta+rou*c*q*(1-beta))*X[0]*(X[2]+cita*X[1])+lamada*X[4]

Y[1]=rou*c*beta*(1-q)*X[0]*(X[2]+cita*X[1])-sigama*X[1]

Y[2]=sigama*X[1]-(delta_I+alpha+gamma_I)*X[2]

Y[3]=rou*c*q*(1-beta)*X[0]*(X[2]+cita*X[1])-lamada*X[4]

Y[4]=rou*c*beta*q*X[0]*(X[2]+cita*X[1])-delta_I*X[4]

Y[5]=delta_I*X[2]+delta_q*X[5]-(alpha+gamma_H)*X[6]

Y[6]=gamma_I*X[2]+gamma_H*X[6]

return Y

T_range = np.arange(0,T + 1)

RES = spi.odeint(funcSEIR,INI,T_range)

# plt.plot(RES[:,0],color = 'darkblue',label = 'Susceptible',marker = '.')

# plt.plot(RES[:,1],color = 'orange',label = 'Exposed',marker = '.')

plt.plot(RES[:,2],color = 'red',label = '模拟感染人数',marker = '.')

# plt.plot(RES[:,3],color = 'green',label = 'S_q',marker = '.')

# plt.plot(RES[:,4],color = 'blue',label = 'E_q',marker = '.')

# plt.plot(RES[:,5],color = 'black',label = 'H',marker = '.')

# plt.plot(RES[:,6],color = 'darkgreen',label = 'Recovery',marker = '.')

filename=r'paint1.xlsx'

file= xlrd.open_workbook(filename) # 打开文件

table=file.sheets()[3]#通过索引顺序获取 从0开始

x=table.row_values(2)

plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签

plt.plot(x,label='现实感染人数')

plt.title('北京')

plt.legend()

plt.xlabel('天数')

plt.ylabel('人数')

plt.show()

效果图

参考文献

2. 理论参考-曹盛力,冯沛华,时朋朋.修正SEIR传染病动力学模型应用于湖北省2019冠状病毒病(COVID-19)疫情预测和评估[J/OL].浙江大学学报(医学版):1-13[2020-03-29].http://kns.cnki.net/kcms/detail/33.1248.R.20200303.1722.004.html.

seir模型数学建模python_Python改进的SEIR模型相关推荐

  1. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  2. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  3. Algorithm:数学建模大赛(CUMCM/NPMCM)之数学建模(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建

    Algorithm:数学建模大赛(CUMCM/NPMCM)之数学建模(经验/技巧).流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价).论文写作(意义/摘要/关键词/问题重述和模型假设/建 ...

  4. 数学建模--30+种常用算法模型

    全国大学生数学建模竞赛中,常见的算法模型有以下30种: 1.线性规划模型:用于寻找最优解的数学模型. 线性规划(Linear Programming,简称 LP)是一种运筹学方法,用于在一定的约束条件 ...

  5. 【数学建模】Matlab实现SEIR模型

    1974年Hoppensteadt首先在文[1]中建立和研究了具有年龄结构的传染病模型.至今,具有年龄结构的 传染病模型的研究已有许多成果(见[2]-[5]等),但这些模型大多不考虑染病年龄.潜伏期等 ...

  6. 数学建模--医疗保险欺诈的发现--模型:评价类的数学模型和多元统计模型--方法:”改进的”主成分分析,聚类分析,判别分析,相关分析...

    东北三省数学建模竞赛,省一等奖,我主要负责模型的建立和求解.版权所有,转载请注明出处. A题:医保欺诈行为的主动发现 摘  要 针对近年来中国医保制度的完善,医保医疗保险基金积累,在享受医疗保险的过程 ...

  7. 【数学建模】基于matlab SIR模型新冠病毒COVID-19估计【含Matlab源码 2042期】

    一.SEIR模型简介 1 SEIR模型简介 如果所研究的传染病有一定的潜伏期,与病人接触过的健康人并不马上患病,而是成为病原体的携带者,归入 E 类.此时有: 仍有守恒关系 S(t) + E(t) + ...

  8. 数学建模:火箭发生升空模型——基于matlab语言

    基于教材:<数学建模>第五版 仅是为了个人记录,也为了在有需要的情况下帮到大家,排版可能略显拉跨,但代码以及实验结果均正确!!! 如果帮到你了,请动手点个小赞吧, 一.不考虑空气阻力的简单 ...

  9. 数学建模 --- 层次分析法(AHP模型)

    层次分析法 评价类问题 该问题思路 选出相关指标,求各个指标之间的权重 和 对某个指标而言各个选择权重(分而治之思想) 计算每个方案的得分 层次分析法 层次分析法第一步 --- 层次结构图 层次分析法 ...

最新文章

  1. 最小割 ---- 集合冲突模型 ---- AGC038 F - Two Permutations[详解]
  2. 自己实现一个最简单的数据库
  3. Redis:redis cluster的实现细节
  4. 当期收益率(Current Yield)
  5. 多项“首次”落地 腾讯云数据库助力金融机构国产化
  6. 计算机系统库的管理及应用,计算机软件及应用嵌入式软件基础数据库管理系统.pptx...
  7. 工资7500但没社保公积金,和工资4500但福利很好,这两份工作怎么选择?
  8. 知识图谱入门 , 知识抽取
  9. Android手动创建和解析Json
  10. 烂泥:CentOS6.5光盘以及ISO镜像文件的使用
  11. vijos 1602
  12. android 插桩工具,自插桩测试示例  |  Android 开源项目  |  Android Open Source Project...
  13. android拒绝服务攻击,Android移动设备上的DDOS攻击
  14. smart svn破解
  15. 【音视频流媒体】WebRTC 直播超详细介绍
  16. SpringCloudAlibaba看的某马视频笔记
  17. 网上买保险靠谱吗?线上保险和线下保险的区别在哪?
  18. UWB定位技术下的隧道定位监测系统真的如此受欢迎吗-新导智能
  19. 解决win7 中powershell挖矿占用CPU100%
  20. LearningSpark(5):Spark共享变量理解

热门文章

  1. arp协议属于哪一层_TCP/IP协议栈-之-ARP协议分析
  2. 知云文献翻译打不开_文献翻译工具-知云文献翻译
  3. 计算机管理可以更新吗,微信可以批量管理好友吗(电脑版微信3.0.0更新规则了)...
  4. php 的html头部代码,HTML 列表
  5. python做数据分析需要oracle_精通 Oracle+Python,第 1 部分:查询最佳应践
  6. 多人博客php源码,wusx php多用户博客(基础thinkphp)
  7. 十字路口待转区什么用_都知道“左转待转区”,但到底该怎么走?老司机给你一次讲清楚...
  8. androidStudio使用卡顿
  9. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的办公一体化系统
  10. 基于JAVA+Servlet+JSP+MYSQL的会议管理系统