2016-09-28 70 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