Пошагово интегрирую ODE следующим образом:
ans = RK45(RHS,t0=0,y0=state, t_bound=10, rtol=tols, atol=tols)
while <some condition>:
<do some stuff, including changing RHS sometimes>
ans.step()
Причина, по которой я делаю это шаг за шагом, заключается в том, что я хочу изменить правую RHS в зависимости от того, что получилось на предыдущем шаге. Это работает отлично.
Проблема возникает, когда во время шага RK45 одно из вычислений внутреннего интегратора требует оценки RHS в точке с x [0] <0. В моем анализе x [0] относится к расстоянию, и, следовательно, это невозможно оценить (на самом деле, я получаю ошибки, потому что присутствует термин sqrt (x [0])). То, что я хотел бы сделать, это просто остановить процедуру пошагового выполнения, когда это происходит, но я не уверен, как этого добиться. Я хочу выйти из цикла while, когда это произойдет. </p>