有条件停止ODE求解器

时间:2018-07-09 22:30:53

标签: r 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 个答案:

答案 0 :(得分:0)

我已经解决了我的问题,这是一个解决方案:

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大。