对于可变系数二阶线性 ODE
$x''(t)+\beta_1(t)x'(t)+\beta_0 x(t)=0$
我有 $\beta_1(t)$ 和 $\beta_0(t)$ 的数值(以向量表示),有人知道一些 R 包可以做到这一点吗?一些简单的例子来说明也很好。
我用谷歌搜索发现' bvpSolve '可以解决常数系数值。
对于可变系数二阶线性 ODE
$x''(t)+\beta_1(t)x'(t)+\beta_0 x(t)=0$
我有 $\beta_1(t)$ 和 $\beta_0(t)$ 的数值(以向量表示),有人知道一些 R 包可以做到这一点吗?一些简单的例子来说明也很好。
我用谷歌搜索发现' bvpSolve '可以解决常数系数值。
为了使用deSolve
,您必须使您的二阶 ODE
x''(t) + \beta_1(t) x'(t) + \beta_0 x(t)=0
成一对耦合的一阶 ODE:
x'(t) = y(t)
y'(t) = - \beta_1(t) y(t) - \beta_0 x(t)
然后就很简单了:
gfun <- function(t,z,params) {
g <- with(as.list(c(z,params)),
{
beta0 <- sin(2*pi*t)
beta1 <- cos(2*pi*t)
c(x=y,
y= -beta1*y - beta0*x))
list(g,NULL)
}
library("deSolve")
run1 <- ode(c(x=1,y=1),times=0:40,func=gfun,parms=numeric(0))
我随意选择了一些初始条件(x(0)=1
, );x'(0)=1
您可能还想为模型添加参数(即制作parms
除 之外的其他东西numeric(0)
)
PS,如果您不满意手动转换为耦合的一阶 ODE,并且想要一个可以无缝处理二阶 ODE 的包,那么我不知道答案...