scipy.integrate.odeint()使用说明

import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as plt

   
#模型参数
daysTotal = 365
E0 = 1
dataOffset = 'auto'
days0 = 70
r0 = 2.4
r1 = 0.85
sigma = 0.312
gamma = 0.357
beta0 = 0.857
beta1 = 0.304
population = 1000

#定义模型
def model(Y,t,N,beta0,days0,beta1,gamma,sigma):
    S,E,I,R = Y
    beta = beta0 if t < days0 else beta1
    dS = - beta * S * I / N
    dE = beta * S * I / N  - sigma * E
    dI = sigma * E - gamma * I
    dR = gamma * I
    return dS,dE,dI,dR
   
T = np.arange(daysTotal)
N0 = population - E0,E0,0,0
res = spi.odeint(model,N0,T,args=(population,beta0,days0,beta1,gamma,sigma))
#该函数用来求微分方程,第一个变量时微分方程模型,第二个变量是y初值,第三个变量是自变量x(此处是时间t),之后args = (微分方程模型中剩余的变量,顺序对应)
plt.figure(figsize = (10,10),dpi = 100)
plt.plot(T,res[:,0],label = 'S')
plt.plot(T,res[:,1],label = 'E')
plt.plot(T,res[:,2],label = 'I')
plt.plot(T,res[:,3],label = 'R')
plt.show()

结果显示:
在这里插入图片描述

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值