Переключение функций ODE в Julia

Из документа пакета DifferentialEquations переключение между наборами функций 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

Спасибо заранее за вашу помощь.

См. также:  Как объявлять внешние функции в модулях
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Chris

    Возможно ли использовать зависимую переменную (переменную состояния) вместо параметра p в качестве переключателя, например

    да. Это приводит к разрыву, поэтому это не лучший вариант, но адаптивность справится с этим. Иногда производительность можно улучшить, создав ContinuousCallback, который находит это значение в качестве условия, но ничего не делает для affect!. Но да, код с веткой в ​​нем в порядке.

    Большой. Спасибо за Ваш быстрый ответ. person Chris; 08.07.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: