求解变系数二阶线性ODE?

时间:2013-04-02 04:00:41

标签: r differential-equations

对于变量系数二阶线性ODE

$ x''(t)+ \ beta_1(t)x'(t)+ \ beta_0 x(t)= 0 $

我有$ \ beta_1(t)$和$ \ beta_0(t)$的数值(就向量而言),有没有人知道一些R包来做到这一点?一些简单的例子也很好。

我用谷歌搜索'bvpSolve'可以解决常系数值。

1 个答案:

答案 0 :(得分:2)

要使用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)=1x'(0)=1);您可能还想向模型添加参数(即使parms以外的其他内容numeric(0)

PS如果你不乐意手工转换为耦合的一阶ODE,并且想要一个能够无缝处理二阶ODE的包,那么我不知道答案......