gpt4 book ai didi

r - 求解 ODE - 只有正解

转载 作者:行者123 更新时间:2023-12-01 23:38:58 36 4
gpt4 key购买 nike

我正在尝试求解仅限于正解的 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)

enter image description here

这种方法有以下缺点:

  • 它不会处理恰好在边界上的解决方案,并且会遇到“过快”接近边界的解决方案(即状态变量在有限时间内收敛到零)
  • 如所写,需要人工翻译。编写一个允许用户输入一组方程式和一组变换并自动应用变换的系统是完全可能的,但这需要一些努力。
  • 它可能会稍微增加计算量(任何时候我们必须使用我们必须取幂的状态变量的原始标度值)

关于r - 求解 ODE - 只有正解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47401678/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com