我正在逐步集成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步骤中,内部积分器的计算之一需要在x [0] <0的点上进行RHS评估时会出现问题。在我的分析中,x [0]表示距离,因此无法对此进行评估(实际上,由于存在sqrt(x [0])项,因此我得到了错误)。我想做的就是只要遇到这种情况就简单地停止步进过程,但是我不确定如何实现。发生这种情况时,我想退出while循环。