【发布时间】:2020-04-08 21:41:02
【问题描述】:
我有一个微分方程组。解决方案取决于参数beta。我想创建一个滑块,这样我就可以更改此参数并直接在我的图中显示解曲线的变化。我想我几乎得到它,但我错过了一件。
我的代码
N = 1
#Initial conditions
I0 = 0.01
S0= N - I0
#System of diff. equations
def system(x, t, beta, gamma ):
I, S = x
dIdt = (beta/gamma*S-1)*I*gamma
dSdt = -(beta/gamma*S-1)*I*gamma
return dIdt, dSdt
#Parameters initial value
beta = 0.03
gamma = 0.017
#Initial cond. vector
y0 = I0, S0
#time grid
t = np.linspace(0, 1300, 1300)
# Solution
sol = odeint(system, y0, t, args=(beta, gamma))
################ Animations part ##################
fig, ax = plt.subplots()
plt.subplots_adjust(bottom = 0.25)
#solution curves for I and S
infected, = plt.plot(t, sol[:,0])
recovered, = plt.plot(t, sol[:,1])
axbeta = plt.axes([0.125, 0.1, 0.5, 0.05])
sliderbeta = Slider(axbeta, 'beta', 0, 1, valinit=beta)
def update_beta(val):
beta_value = sliderbeta.val
??????????????????????????????????????
fig.canvas.draw_idle()
sliderbeta.on_changed(update_beta)
plt.show()
我不知道如何获取我的初始 beta 值以及如何将其替换为 beta_value。我想在我放置问号的地方缺少一些行。
【问题讨论】:
标签: python matplotlib slider