显然,从ODE求解器中得到非负解并不容易。在Matlab中,某些求解器有NonNegative option可以获得非负解。在scipy中是否有类似的选项?
如果没有,强制实施非负约束的“最佳”方法是什么?目前,我有以下内容:
def f(x, t, params):
... ... ...
... ... ...
x_dot[(x <= 0) * (x_dot <= 0)] = 0.0
return x_dot
... ... ...
x = odeint(f, x0, t, args=params)
然而,这会导致数值不稳定性。我需要将mxstep设置为1e8,hmin设置为1e-15。