1

微分方程包的Fom文档,可以使用参数在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

预先感谢您的帮助。

4

1 回答 1

1

这是否可以使用因变量(状态变量)而不是参数 p 作为开关

是的。它引入了不连续性,所以这不是最好的做法,但适应性会处理它。有时可以通过创建一个 ContinuousCallback 来提高性能,它根查找到该值作为条件,但对于affect!. 但是,是的,带有分支的代码很好。

于 2020-07-07T16:38:27.773 回答