在 Julia 中切换 ODE 函数

Switching ODE functions in Julia

从 DifferentialEquations 包的文档,可以使用参数 as

在 ODE 函数集之间切换
function f(du,u,p,t)
  if p==0
    du[1] = 2u[1]
  else
    du[1] = - u[1]
  end
  du[2] = -u[2]
end

是否可以像

那样使用因变量(状态变量)代替参数p作为开关
function f(du,u,p,t)
  if (u[2]<=0 && du[2]>0)
    du[1] = 2u[1]
  else
    du[1] = - u[1]
  end
  du[2] = -u[2]
end

预先感谢您的帮助。

Is this possible to use dependent variable (state variable) instead of parameter p as the switch like

是的。它引入了不连续性,因此这不是最好的做法,但适应性会处理它。有时可以通过创建一个 ContinuousCallback 来提高性能,该回调将根查找到该值作为条件,但随后对 affect! 不执行任何操作。但是,是的,其中包含分支的代码很好。