Я использую odeint функцию из scipy.integrate пакета:питона: прерывание odeint при выполнении условия
r0 = np.array([1,2,3,4])
t=np.linspace(0,1,20)
def drdt(r,t):
return r # or whatever else
r = odeint(drdt,r0,t)
r0 является NumPy массива, который содержит начальные позиции определенного количества очков. В конце скрипта, как и ожидалось, я получаю позиции точек по 20 меток времени.
Теперь я хотел бы остановить решатель odeint, когда выполняется условие на r. В частности, я хотел бы остановить odeint, когда 2 из этих точек ближе определенного порога, внести некоторые изменения в вектор r и продолжить решение odeint с новыми начальными позициями. Есть ли способ реализовать это?
Возможное решение, о котором я думал, заключается в том, чтобы запустить odeint до конца, а позже проверить, выполнено ли условие, но это, конечно, не очень эффективно.
Спасибо всем за помощь, Nicola