我有两个不连续的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_func
和c_s_func
是数字计算点的线性插值,而f
函数在点k_c
处是不连续的。 kdot
和kdot_s
的图为:
我按以下方式致电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
时,其解变得完全平坦:
我希望khat_s
行在到达khat
后看起来像k_c
行。即,虚线上方的蓝线部分向右移动,以达到橙色线与虚线相交的点。相反,虚线在那一点变得平坦。