SciPy ODE求解器遇到离散事件的问题

时间:2018-11-03 15:54:30

标签: python events scipy simulation solver

我正在使用SciPy ODE Integrator Class来求解一个常微分方程组。完整的程序应该模拟一个机械系统,并使用3D动画对其进行可视化。只要我真的只想求解一个常微分方程,此方法就可以正常工作。但是,机械系统的某些系统状态变量的值范围受到限制。这些变量不允许超过/超过某个限制。
我目前保持x_n

solver = scipy.integrate.ode(rhs)
solver.set_initial_value(...) #not important
solver.set_integrator("vode", method="adams", rtol=1e-6, atol=1e-9)
...
while(True):
    state = solver.integrate(solver.t + timeStep)
    visualizeModel(state)
    ...

def rhs(t, x):
    x1, x2, x3 = x
    dx1dt = x1_dot(x1, x2, x3)
    dx2dt = x2_dot(x1, x2, x3)
    dx3dt = x3_dot(x1, x2, x3)
    if numpy.abs(x1) > my_limit:
        dx1dt = 0 #the solver seems to absolutely hate this line
    return [dx1dt, dx2dt, dx3dt]

```

如何防止求解器此时停滞?如何为微分方程的变量实现一个限制值范围?

0 个答案:

没有答案