我正在使用 Pyzo(版本 4.11.5),我想使用函数交互(来自包 ipywidgets),编写了下面的程序,退出是:
interactive(children=(IntSlider(value=10, description='x', max=30, min=-10), Output()), _dom_classes=('widget-interact',))
<function f at 0x0000020B2A12ACA0>
Ipywidgets 仅适用于 Jupyter Lab 吗?
代码 :
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact
from scipy.integrate import odeint
def ordre(alpha,k,a0):
if alpha == 0.5 :
tmax = 0.1
else :
tmax = 3
#Création d'une base de temps
tps=np.linspace(0,tmax,5000)
#Création d'une fonction loi de vitesse
if alpha == 0.5 :
def LoiVitesse(x,t) :
return - k *x**0.5
else :
def LoiVitesse(x,t) :
return - k *x** alpha
#Obtention de la concentration en réactif au cours du temps (résolution ED)
conc=odeint(LoiVitesse,a0,tps)
#Recherche du temps de demi-réaction
i=0
while conc[i] > a0/2 :
i=i+1
tdemi=tps[i]
#Commandes de tracé
plt.title(f'Ordre = {alpha} \n Temps de demi-réaction= {round(tdemi,2)} s')
plt.plot(tps,conc,'b-', label='réactif A')
plt.plot(tdemi,a0/2,'ro',markersize=10)
plt.axvline(x=tdemi,ymax=a0/2,ls='--',color='k')
plt.axhline(y=a0/2,xmax=tdemi,ls='--')
plt.xlim(0,3)
plt.ylim(0,1.5)
plt.xlabel('t en s')
plt.ylabel('Concentrations en $mol.L^{-1}$')
plt.grid()
plt.legend()
plt.show()
interact(ordre, alpha = (0, 5, 0.5), k = (1, 10, 0.5), a0 = (0.5, 1.5, 0.1))