小编Lin*_*nda的帖子

ODE、多重根和事件、R

我喜欢求解涉及多个阈值的耦合微分方程组。通过查看 R 信息,我将 ODE 与根函数和事件函数结合使用。

\n\n

通过各种示例,即温度模型,第 14 页http://cran.r-project.org/web/packages/diffEq/vignettes/ODEinR.pdf - 下面粘贴的代码 - 我能够让我的模型发挥作用在一个阈值上,即找到一个变量的根/达到阈值会触发一个事件。

\n\n
library(deSolve)\nyini <- c(temp = 18, heating_on=1)\n\ntemp <- function(t,y, parms) {\n  dy1 <- ifelse(y[2] == 1, 1.0, -0.5)\n  dy2 <- 0\n list(c(dy1, dy2))\n}\n\nrootfunc <- function(t,y,parms) c(y[1]-18, y[1]-20)\n\neventfunc <- function(t,y,parms) {\n  y[1] <- y[1]\n  y[2] <- ! y[2]  \n return(y)\n}\n\ntimes <- seq(from=0, to=20, by=0.1)\nout <- lsode(times=times, y=yini, func = temp, parms = NULL, \n         rootfun = rootfunc, events = list(func=eventfunc, root = TRUE))\nplot(out, lwd=2)\nattributes(out)$troot\n
Run Code Online (Sandbox Code Playgroud)\n\n

该示例还表明,不同的根可以触发相同的事件函数(y[1] \xe2\x80\x93 …

events r ode desolve

5
推荐指数
1
解决办法
1159
查看次数

标签 统计

desolve ×1

events ×1

ode ×1

r ×1