在这种情况下,有3个常微分方程描述SIR模型。问题来了,我想从x_axis
和y_axis
值中计算哪些beta和gamma值最适合数据点。我目前使用的方法是使用scipy
库中的odeint
和同一库中的curve_fit
方法对常微分方程进行积分。在这种情况下,如何计算beta和gamma的值以拟合数据点?
P.S.当前的错误是:ValueError: operands could not be broadcast together with shapes (3,) (14,)
# initial values
S_I_R = (0.762/763, 1/763, 0)
x_axis = [m for m in range(1,15)]
y_axis = [3,8,28,75,221,291,255,235,190,125,70,28,12,5]
# ODE's that describe the system
def equation(SIR_Values,t,beta,gamma):
Array = np.zeros((3))
SIR = SIR_Values
Array[0] = -beta * SIR[0] * SIR[1]
Array[1] = beta * SIR[0] * SIR[1] - gamma * SIR[1]
Array[2] = gamma * SIR[1]
return Array
# Results = spi.odeint(equation,S_I_R,time)
# fitting the values
beta_values,gamma_values = curve_fit(equation, x_axis,y_axis)
2条答案
按热度按时间xzabzqsa1#
x33g5p2x2#
作为
scipy
文档中的this example,function
必须输出与x_axis
和y_axis
大小相同的数组。