Я использую функцию odeint из пакета scipy.integrate:
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 до конца, а потом только проверить, было ли выполнено условие, но это, конечно, не очень эффективно.
Спасибо всем за помощь, Николай