【发布时间】:2021-07-12 08:34:27
【问题描述】:
我正在评估一组具有时变系数的 ODE
def deriv(y, t, N, coefficients):
S, I, R = y
dSdt = coefficients['beta'](t) * S * I / N * -1
dIdt = coefficients['beta'](t) * S * I / N - coefficients['gamma']* I
dRdt = coefficients['gamma'] * I
return dSdt, dIdt, dRdt
特别是,我在一个预先计算的数组中有“beta”值,其大小等于 int(max(t))。
coefficients = {'beta' : beta_f,'gamma':0.1}
def beta_f(t):
return mybetas.iloc[int(t)]
# Initial conditions vector
y0 = (S0, I0, R0)
# Integrate the SIR equations over the time grid, t.
ret = odeint(deriv,y0,t,args=(N,coefficients))
当我运行 odeint 时,它还会评估超出 max(t) 的值,从而在 beta_f 中引发索引越界错误。 如何限制 odeint 的评估跨度?
【问题讨论】: