Я просмотрел документы для scipy.integrate.RK45
, но не смог найти хороших примеров.
Я пытаюсь реализовать ODE для инфекционного заболевания с заранее заданными параметрами beta, f, gamma
и начальными значения для групп населения (восприимчивые, подверженные воздействию, инфекционные, выздоровевшие) S0, E0, I0, R0
. (Я опубликую эти значения, если мне нужно, но я думаю, что они не имеют отношения к моему вопросу.)
Я знаю, как реализовать scipy.integrate.odeint
:
def SIR_model(y, t, f, beta, gamma):
S, E, I, R = y
dS = -beta*S*I
dE = beta*S*I - f*E
dI = f*E - gamma*I
dR = gamma*I
return [dS, dE, dI, dR]
sol = scipy.integrate.odeint(SIR_model, [S0,E0,I0,R0], t, args=(f, beta,gamma))
выполняет свою работу. Моя цель прямо сейчас - использовать метод RK45
. Я понял, что этот метод нужно реализовать по-другому, но у меня возникла ошибка, когда я попробовал следующее:
scipy.integrate.RK45(fun=SIR_model, t0 = t[0], y0 = [S0,E0,I0,R0],t_bound=t[-1])
# raised TypeError: SIR_model() missing 3 required positional arguments: 'f', 'beta', and 'gamma'
scipy.integrate.RK45(fun=SIR_model(y,t,f,beta,gamma), t0 = t[0], y0 = [S0,E0,I0,R0],t_bound=t[-1])
# raised TypeError: cannot unpack non-iterable NoneType object
y0 = [S0,E0,I0,R0]
scipy.integrate.RK45(fun=SIR_model(y0,t,f,beta,gamma), t0 = t[0], y0 = [S0,E0,I0,R0],t_bound=t[-1])
# raised TypeError: 'list' object is not callable
Любые предложения приветствуются.