Я пытаюсь обновить ползунок на основе другого ползунка и не могу видеть логи c этой ошибки RuntimeError. Альфа устанавливается ползунком, и z зависит от этого результата. Максимальное значение Z на слайдере необходимо обновить. Я чувствую, что я близко, но не могу видеть это в последний раз. Ура
axz = plt.axes([0.25, 0.1, 0.65, 0.03], facecolor=axcolor)
axalpha = plt.axes([0.25, 0.15, 0.65, 0.03], facecolor=axcolor)
salpha = Slider(axalpha, '$\u03B1$', 0, 0.08, valinit=alpha, valstep=delta_alpha)
sz = Slider(axz, 'z', 0, ZMax, valinit=z0, valstep=delta_z)
def update(val):
alpha = salpha.val
R0 = (1 / 2) * (1 + (1 - (12 * alpha)) ** (1 / 2)) # relationship between alpha and radius at lower tuning point
R1 = (1 / 2) * (1 - (1 - (12 * alpha)) ** (1 / 2)) # relationship between alpha and radius at upper tuning point
PE = ((1 / R0 ** 2) - (2 / R0) - (2 * alpha / R0 ** 3)) # Veff/V* at KE=0
EMax = ((1 / R1 ** 2) - (2 / R1) - (2 * alpha / R1 ** 3)) # Gives peak of curve
ZMax = (EMax - PE) ** (1 / 2) # Converts energy at peak to Z value and saves to variable ZMax to later cap the upper limit of slider
axz.clear()
sz = Slider(axz, 'z', 0, ZMax, valinit=z0, valstep=delta_z)
u0 = 1 / R0
z0 = sz.val
j = odeint(model,[u0,z0],phi)
u = j[:, 0]
R = 1 / u
l.set_ydata(R*np.sin(phi))
l.set_xdata(R*np.cos(phi))
fig.canvas.draw_idle()
E = (z0 ** 2) + PE
l1.set_ydata(E)
fig1.canvas.draw_idle()
salpha.on_changed(update)
sz.on_changed(update)
salpha.on_changed(update)
sz.on_changed(update)