如何用滑块绘制Python中非自治微分方程系统?

时间:2019-01-29 22:31:12

标签: python ipython differential-equations

我想在iPython Jupyter Notebook中绘制一个微分方程组,其中所有微分方程都是非自治的。我能够成功绘制出一个简单的带有方程式滑块的自治方程组系统,如下所示:

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
from IPython.html.widgets import *
import ipywidgets as wg
from IPython.display import display 
from numpy import pi

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()

w = interactive(plot_solution, a=(-2.0,2.0), b=(-2.0,2.0), c=(-2.0,2.0), d=(-2.0,2.0))
display(w)

但是,我想修改上面的代码以使具有以下形式的方程组能够进行参数滑动:

dF / dt = a(1 + b(1-E(t-1)/ K)-F(t)/ K)* F(t)

,该系统还包括一个dE / dt的非自治方程,该方程中的其他值为常数。我对微分方程和python的了解不足,无法弄清楚该怎么做,所以如果有人可以帮助我,将不胜感激!

0 个答案:

没有答案