Остановка 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
,