2016-09-28 66 views
0

我刚开始使用deSolve。出于某种原因,一个简单的示例代码给我此错误消息:R:deSolve-package中的初始条件错误

错误checkFunc(FUNC2,时间,Y,RHO):由FUNC(返回 衍生物的数目)(1)必须等于的长度所述 初始条件向量(4)

我使用以下示例代码:

library(deSolve) 
model <- function (time, y, parms) { 
    with(as.list(c(y, parms)), { 
    dY1 <- -k1*y1*y2 + k2*y3 
    dY2 <- k2 * y3 - k1*y1*y2 
    dY3 <- -k2*y3-k3*y3+k1*y1*y2 
    dY4 <- k3*y3 
    list(dY1,dY2,dY3,dY4) 
    }) 
} 
yini <- c(y1 = 1,y2=1,y3=0,y4=0) 
parms <- c(k1=0.1,k2=0.1,k3=0.1) 
times <- seq(0, 100, 1) 
out <- ode(y=yini, times=times, func=model, parms=parms) 
plot(out) 

正如你可以看到我有完全4衍生物和在yini定义4的初始条件。因此,我无法解释这个错误。

我该如何解决这个问题?

回答

1

在你的函数model的最后一行必须是:

list(c(dY1,dY2,dY3,dY4)) 

所以输出有一个矢量要连接c()。这是deSolve包所要求的。

所以整个函数看起来像这样:

model <- function (time, y, parms) { 
    with(as.list(c(y, parms)), { 
    dY1 <- -k1*y1*y2 + k2*y3 
    dY2 <- k2 * y3 - k1*y1*y2 
    dY3 <- -k2*y3-k3*y3+k1*y1*y2 
    dY4 <- k3*y3 
    list(c(dY1,dY2,dY3,dY4)) 
    }) 
} 
+0

非常感谢!对不起,忽略显而易见的! – Arne