Python: выход из рутины интеграции (RK45) - PullRequest
0 голосов
/ 10 июля 2019

Пошагово интегрирую 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>

...