我在使用我的ode求解器时遇到了一些问题,我正在尝试解决SEIR问题而且我一直在得到相同的错误,这些错误会根据我的代码非常相似地调整代码。我的代码是:
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# Total population, N.
N1 = 55600
# Initial number of infected and recovered individuals, I0 and R0.
I10, R10, E10 = 1, 0, 0
# Everyone else, S0, is susceptible to infection initially.
S10 = N1 - I10 - R10 - E10
# parameters
B = 0.05
a = 0.000001
d = 0.0167
g = 0.0167
z = 0.0167
M = 100000
# A grid of time points (in months)
t = np.linspace(0, 160, 160)
# The SIR model differential equations.
def deriv(y, t, N1, B, a, d, g, z, M):
S1, E1, I1, R1 = y
dS1dt = B*N1 + d*(R1) - S1/N1 * (M*a(I1))
dE1dt = S1/N1 * M*a(I1) - g * E1
dI1dt = g * E1 - z * I1
dR1dt = z * I1 - d * R1
return dS1dt, dE1dt, dI1dt, dR1dt
# Initial conditions vector
y0 = S10, E10, I10, R10
# Integrate the SIR equations over the time grid, t.
ret = odeint(deriv, y0, t, args=[N1, B, a, d, g, z, M])
S1, E1, I1, R1 = ret.T
我一直在收到错误:
文件“C:/Users/Angus/PycharmProjects/firstAttempt/bugfinder.py”,第44行,in
ret = odeint(deriv, y0, t, args=[N1, B, a, d, g, z, M],)
文件“C:\ Python36 \ lib \ site-packages \ scipy \ integrate \ odepack.py”,第215行,在odeint ixpr,mxstep,mxhnil,mxordn,mxords中)odepack.error:额外的参数必须在元组中
任何帮助,将不胜感激!
尝试更换:
ret = odeint(deriv, y0, t, args=[N1, B, a, d, g, z, M],)
有了这个:
ret = odeint(deriv, y0, t, args=(N1, B, a, d, g, z, M))
从scipy documentation:
args:元组,可选
传递给函数的额外参数。
对于单个参数,不要忘记在元组中添加逗号,例如
ret = odeint(deriv, y0, t, args=(singleArg,))
在这里查看https://www.tutorialspoint.com/python/python_tuples.htm的单值元组。
不幸的是,我没有足够的评论声誉。