Julia中的开关ODE函数

Julia中的开关ODE函数,julia,ode,differentialequations.jl,Julia,Ode,Differentialequations.jl,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

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
函数f(du,u,p,t) if(u[2]0) du[1]=2u[1] 其他的 du[1]=-u[1] 结束 du[2]=-u[2] 结束 提前感谢您的帮助

是否可以使用因变量(状态变量)代替参数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

对。它引入了不连续性,因此这不是最好的做法,但自适应将处理它。有时,可以通过创建一个连续的回调来提高性能,rootfind将该值作为条件,但对
影响不起任何作用。但是是的,带有分支的代码很好。

很好。谢谢你的快速回答。