我正在尝试解决仅限于正解的 ODE,即:
dx/dt=f(x)
与
x>=0
。在 MATLAB 中,这很容易实现。 R 是否有任何解决方法或软件包可以将解空间限制为仅正值?
这对我来说非常重要,不幸的是,别无选择。我现在搜索了一段时间,但没有任何成功。 :-(
最佳答案
在这里继续下去还不够。对于我熟悉的各种问题,修改系统以在对数转换状态变量的规模上运行效果很好(您始终可以对结果进行反向转换,例如将它们与数据进行比较)。例如,我已将其与 SIR model in epidemiology 一起使用。我将尝试使用@MauritsEver 的示例来说明将系统转换为在对数刻度上运行:
library(deSolve)
model <- function (time, y, parms) {
with(as.list(c(y, parms)), {
dlogN <- r * (1 - exp(logN) / K)
list(dlogN)
})
}
# Starting conditions
y <- c(logN = log(0.1))
parms <- c(r = 0.1, K = 10)
times <- seq(0, 100, 1)
out <- as.data.frame(ode(y, times, model, parms))
out_backtran <- transform(out,N=exp(logN))
plot(N~time,data=out_backtran)
这种方法有以下缺点:
关于r - 求解 ODE - 只有正解,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47401678/