Я не знаю, должен ли график получиться таким или нет. Может ли кто-нибудь помочь мне исправить мой код? Кстати, я не использую odeint.
График, созданный моим кодом:

Мой код:
Код: Выделить всё
import numpy as np
import matplotlib.pyplot as plt
#sirdv
#a-alpha b-beta g-gamma d-delta m-mu e=vaccine efficacy
#N=population s(t)=susceptible d(t)=deceased i(t)=infected r(t)=recovered v(t)=vaccinated
#n=s+i+r+d+v
# ds/dt=-b/N(si) dr/dt=gi dd/dt=mi di/dt=b/N(si-gi-mi)-a*s) dv/dt=a*s-(e*b*i*v)/N
N=1000 #total population
b=0.5 # transmission rate ranged from 0.4 to 0.6
a=0.05 #5 % of susceptible population
e=0.7 #as of now
g=1/7 # recovery rate
m=0.01 #death rate between 0.01 to 0.1 %
M=(m)/(m+g) #=fatalities/resolutions
R0=b/g
print(M)
print(R0)
steps=np.arange(0,365,dtype=int)
time=1*steps
def SIRDV(s,i,r,d,b,g,m,a,v,e):
sdash= -s*i*(b/(s+i+r+d+v))-(a*s)
rdash=g*i
idash=((s*i*b)/(s+i+r+d+v))-(g*i)-(m*i)
ddash=m*i
vdash=(a*s)-((e*b*i*v)/(s+i+r+d+v))
return sdash, idash, rdash, ddash, vdash
tlen=len(time)
s=np.empty([tlen])
i=np.empty([tlen])
r=np.empty([tlen])
d=np.empty([tlen])
v=np.empty([tlen])
r[0]=0
i[0]=1
d[0]=0
v[0]=0
s[0]=N-i[0]-r[0]-d[0]-v[0]
dt=0.05
for t in steps:
if t
Подробнее здесь: [url]https://stackoverflow.com/questions/79197474/implementation-of-the-sird-model-in-python[/url]
Мобильная версия