当因变量超过某个值时,我想终止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事件,但是在阅读了文档之后,我不了解如何在我的情况下实施。您能为这个问题提供解决方案吗?
答案 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
大。