Остановка ODE решателя с условием

Я хотел бы прекратить ODE решатель, когда зависимая переменная превысила определенное значение. Рассмотрим простую модель ODE

library("deSolve")
dModel<- function(t, y, parms) {list(c(y))}
out<-ode(c(1),seq(0,100,1),dModel, parms=NULL)

Я хочу остановить решатель, когда y>100 и отображать вывод. Я знаю, что есть событие ODE, но после прочтения документации я не понял, как реализовать в моей ситуации. Не могли бы вы предоставить решение этой проблемы?

1 ответ

Я получил ответ на мою проблему, вот решение:

library("deSolve")
dModel<- function(t, y, parms) {list(c(y))}
rootfun <- function (t, y, parms) { return(y - 100) }
sol<-ode(c(1),seq(0,100,1),dModel, parms=NULL,rootfun = rootfun, method="lsodar")

Вот вывод:

     time      value
1 0.000000   1.000000
2 1.000000   2.718290
3 2.000000   7.389087
4 3.000000  20.085627
5 4.000000  54.598440
6 4.605164 100.000000

Могу сказать после t>4.605164, y будет больше, чем 100,

Другие вопросы по тегам