0

我正在使用 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))
4

0 回答 0