I'm solving a series of 80 ODE's that represent the dynamics of an influenza outbreak in a population split into three immunity levels and four age groups. I have just changed my initial conditions to account for some people to be asymptomatic. And now have an error message. Мои начальные условия сейчас:
импортировать numpy как np
из scipy.integrate import odeint
импортировать matplotlib.pyplot как plt
Код: Выделить всё
# N is the sum of all the age compartments
N1 = 8010000
N2 = 7610000
N3 = 38810000
N4 = 12390000
N = N1 + N2 + N3 + N4
# Initial number of all compartment
# Exposed
E_s10 = 0
E_s20 = 0
E_s30 = 0
E_s40 = 0
E_v10 = 0
E_v20 = 0
E_v30 = 0
E_v40 = 0
E_i10 = 0
E_i20 = 0
E_i30 = 0
E_i40 = 0
#Symptomatic Infections
I_s10 = 29700
I_s20 = 27225
I_s30 = 143550
I_s40 = 47025
I_v10 = 0
I_v20 = 0
I_v30 = 0
I_v40 = 0
I_i10 = 0
I_i20 = 0
I_i30 = 0
I_i40 = 0
#Asymptomatic Infections
A_s10 = 9900
A_s20 = 9075
A_s30 = 47850
A_s40 = 15675
A_v10 = 0
A_v20 = 0
A_v30 = 0
A_v40 = 0
A_i10 = 0
A_i20 = 0
A_i30 = 0
A_i40 = 0
#Recovered
R_s10 = 0
R_s20 = 0
R_s30 = 0
R_s40 = 0
R_v10 = 0
R_v20 = 0
R_v30 = 0
R_v40 = 0
R_i10 = 0
R_i20 = 0
R_i30 = 0
R_i40 = 0
# Susceptibles
V10 = 0
V20 = 0
V30 = 0
V40 = 0
S_i10 = 3188160
S_i20 = 3029480
S_i30 = 15447440
S_i40 = 4930920
S10 = (N1 - V10 - S_i10 - E_s10 - E_v10 - E_i10 - I_s10 - I_v10 - I_i10 - A_s10 - A_v10 - A_i10 - R_s10 - R_v10 - R_i10) * 0.6
S20 = (N2 - V20 - S_i20 - E_s20 - E_v20 - E_i20 - I_s20 - I_v20 - I_i20 - A_s20 - A_v20 - A_i20 - R_s20 - R_v20 - R_i20) * 0.6
S30 = (N3 - V30 - S_i30 - E_s30 - E_v30 - E_i30 - I_s30 - I_v30 - I_i30 - A_s30 - A_v30 - A_i30 - R_s30 - R_v30 - R_i30) * 0.6
S40 = (N4 - V40 - S_i40 - E_s40 - E_v40 - E_i40 - I_s40 - I_v40 - I_i40 - A_s40 - A_v40 - A_i40 - R_s40 - R_v40 - R_i40) * 0.6
#Cummulative Innitial Conditions
C_s10 = 0
C_s20 = 0
C_s30 = 0
C_s40 = 0
C_v10 = 0
C_v20 = 0
C_v30 = 0
C_v40 = 0
C_i10 = 0
C_i20 = 0
C_i30 = 0
C_i40 = 0
C_s0 = 0
C_v0 = 0
C_i0 = 0
C0 = 0
# Vaccination profile
V_overall10 = 0
V_overall20 = 0
V_overall30 = 0
V_overall40 = 0
# Definitions of parameters
m = 0.5
# Contact Rates
beta11 = 0.98
beta12 = 0.25 * m
beta13 = 1.1 * m
beta14 = 0.096 * m
beta21 = 0.22
beta22 = 1.5 * m
beta23 = 1.1 * m
beta24 = 0.15 * m
beta31 = 0.21
beta32 = 0.24 * m
beta33 = 1.5 * m
beta34 = 0.2 * m
beta41 = 0.069
beta42 = 0.12 * m
beta43 = 0.74 * m
beta44 = 0.36 * m
kappa = 0.71
alpha = 0.26
eta = 0.26
delta_i = 1
delta_v = 1
delta_a = 0.2
s_i = 0.3
p = 0.75
q = 0.25
l = 0.2
#Vaccine Efficacy
s_v1 = 0.48
s_v2 = 0.07
s_v3 = 0.20
s_v4 = 0.12
def epsilon1(t, V1, E_v1, I_v1, A_v1, R_v1, N1):
if V1 + E_v1 + I_v1 + A_v1 + R_v1 > 0.4 * N1:
return 0
elif 0 < t
Источник: [url]https://stackoverflow.com/questions/68475564/odeintwarning-excess-work-done-on-this-call-perhaps-wrong-dfun-type-scipy-in[/url]