如何在python中向微分方程图添加参数滑块?

2024-06-16 13:45:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python绘制微分方程组

dldt = a*l - b*l*p
dpdt = -c*p + d*l*p

在Jupyter笔记本里。如何在绘图中添加交互式滑块以允许在微分方程中调整常量参数?在

我试着根据这个Jupyter笔记本添加交互式滑块:https://ipywidgets.readthedocs.io/en/stable/examples/Lorenz%20Differential%20Equations.html,但由于不熟悉用Python求解和绘制微分方程,我不知道如何修改它,使其能够与参数a、b、c和d交互。我能得到的最好结果是根据下面的代码绘制一个静态图。在

^{pr2}$

我想要的是一个像静态图一样开始的图形,但也有参数a、b、c和d的滑块,允许您在更改它们的值时更改图形。在


Tags: httpsio图形绘图参数readthedocs静态绘制
1条回答
网友
1楼 · 发布于 2024-06-16 13:45:27

您需要一个函数,它将ODE的参数和绘图的其他参数作为命名参数。在最简单的情况下,只有a,b,c,d。这个函数需要生成一个绘图。在

def plot_solution(a=1.,b=1.,c=1.,d=0.5):
    def f(s, t):

        l, p = s
        dldt = a*l - b*l*p
        dpdt = -c*p + d*l*p
        return [dldt, dpdt]

    t = np.arange(0,10*np.pi,0.01)
    s0=[0.1,5]

    s = odeint(f, s0, t)

    plt.plot(t,s[:,0],'r-', linewidth=2.0)
    plt.plot(t,s[:,1],'b-', linewidth=2.0)
    plt.xlabel("day in menstrual cycle")
    plt.ylabel("concentration (ng/mL)")
    plt.legend(["LH","P"])
    plt.show()

然后按照文档中的说明调用交互式小部件函数。滑块是为指定的参数生成的,这些参数以成对的数字作为输入。在

^{pr2}$

相关问题 更多 >