gpt4 book ai didi

r - 如何求解嵌套的 ODE 方程

转载 作者:行者123 更新时间:2023-12-04 06:29:17 29 4
gpt4 key购买 nike

我们可以使用 deSolve R 中的常微分方程 (ODE) 包,但是,我找不到解决两个嵌套 ODE 方程的方法,假设`

b'(t) = beta - k*b(t); 
a'(t) = alpha -b(t)*gamma;

哪里 '意味着差异化。怎么解决 ab然后?如 a'b 的函数,我们要解决 ab同时。

我有一个错误:

Error in lsoda(y, times, func, parms, ...) : The used combination of solvers cannot be nested.



当我尝试为 b 添加解决方案时在 a 的 ode 解决方案中.

最佳答案

我可能会感到困惑,但您似乎在描述 耦合 方程,其中 lsoda可以很好地处理,如下(我实现了你的 ODE,但编造了一些参数,因为我不知道你在想什么。)

gfun <- function(t,y,parms,...) {
## 'with' trick lets us write gradient in terms of variable/parameter names
with(as.list(c(y,parms)),
list(c(b=beta-k*b,a=alpha-b*gamma),NULL))
}

library(deSolve)
L1 <- lsoda(y=c(b=1,a=1),
times=seq(0,10,by=0.1),
func=gfun,
parms=c(alpha=0.1,beta=0.2,gamma=0.05,k=0.01))

matplot(L1[,1],L1[,-1],type="l",lty=1,bty="l",las=1)

PS:这似乎是一组耦合线性常微分方程,所以你实际上应该能够得到一个完整的封闭形式的解,而不是数值求解它们。 (我现在懒得这么做;b(t) 可以立即求解(“仿射”方程),a(t) 可以通过积分求解。)

关于r - 如何求解嵌套的 ODE 方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5633871/

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