不连续的ODE和`integrate.odeint`在做什么?

时间:2019-05-22 16:15:55

标签: python-3.x scipy

我有两个不连续的ODE,odeint可以正常工作,而另一个却不工作。

c_func = interp1d(k, c)
c_s_func = interp1d(k,np.concatenate((c_l_75[k<k_c],c[k>=k_c])))

def kdot(k_val,t):
    return f(k_val)-c_func(k_val)
def kdot_s(k_val,t):
    return f(k_val)-c_s_func(k_val)

函数c_funcc_s_func是数字计算点的线性插值,而f函数在点k_c处是不连续的。 kdotkdot_s的图为:

kdots

我按以下方式致电odeint

t = np.linspace(0,75,101)
k0 = .2
khat = odeint(kdot, k0, t)
khat_s = odeint(kdot_s, k0, t)

但是当khat_s的不连续性为k_c时,其解变得完全平坦:

solved odes

我希望khat_s行在到达khat后看起来像k_c行。即,虚线上方的蓝线部分向右移动,以达到橙色线与虚线相交的点。相反,虚线在那一点变得平坦。

0 个答案:

没有答案