如何为Scipy的solve_ivp例程设置方向属性?

How to set the direction attribute for Scipy's solve_ivp routine?

我想使用 Scipy 的 solve_ivp 仅存储具有正梯度的事件;也就是说,它们相对于 0 解在增加。根据文档,这似乎可以通过修改事件参数下的方向属性来跟踪。但是,我仍然不清楚如何实现它,所以我希望能有一个工作示例。

我的代码如下:

def ivp_solver(system_of_equations: callable,  time_range: tuple, inital_cond: tuple, params: callable = morris_lecar_defaults(), track_event: callable = voltage_passes_threshold) -> object:```

    sol = solve_ivp(system_of_equations, time_range, inital_cond, args=(params,), events= track_event, t_eval= np.linspace(time_range[0], time_range[1],time_range[2]))
    return sol

这是我要跟踪的事件:

def voltage_passes_threshold(t, system_state, args):
   
    return system_state[0] +20

voltage_passes_threshold.direction设置为正值。即,

def voltage_passes_threshold(t, system_state, args):   
    return system_state[0] + 20

voltage_passes_threshold.direction = 1

那么 sol.t_eventssol.y_events 中记录的事件将是 system_state[0] 增加 值 -20 的事件(即system_state[0] + 20 增加到 0).