Я хочу решить дифференциальное уравнение
dydt = r * (Y ** p) * (1 - (Y / K) ** alpha)
Я пытался написать такой код:
def func(Y, r, p, K, alpha):
dydt = r * (Y ** p) * (1 - (Y / K) ** alpha)
return dydt
t = np.linspace(0, len(df), len(df))
# I used 1 to initialize my parameters ( is there a better way ?)
r = 1; p = 1; K = 1; alpha = 1
y0 = r,p,K,alpha
ret = odeint(func, y0, t)
, но когда я пытаюсь выполнить третье block Я получаю
TypeError: fun c () отсутствуют 3 обязательных позиционных аргумента: 'p', 'K' и 'alpha'
Однако я пытался использовать ret = odeint(func, y0, t, args=(p,K, alpha))
, но это привело к трем прямым линиям, тогда как уравнение должно возвращать кривую logisti c. как я могу попытаться ввести r в аргумент и почему мне нужно указать аргументы? как я могу получить окончательную форму (логистика c кривая)
Примечание: чтобы понять параметры: Y представляет совокупное количество случаев во время t, r - скорость роста на ранней стадии, а K - конечная эпидемия c размер. ∈ [0,1] - это параметр, который позволяет модели фиксировать различные профили роста, включая постоянную заболеваемость (? = 0), субэкспоненциальный рост (0 <? <1) и экспоненциальный рост (? = 1). </p>