2016-09-28 5 views
0

deSolveの作業を開始したばかりです。 checkFunc(FUNC2、倍、Y、ロー)でR:deSolve-packageの初期条件エラー

エラー:FUNC(によって返さ 誘導体の数)(1)の長さに等しくなければならないいくつかの理由のために簡単なコード例は、私は、このエラーメッセージを表示しますあなたは、私は正確に4デリバティブとyiniで定義された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)

は、私は次のコード例を使用しています。したがって、私はこのエラーを解釈することはできません。

どうすればこの問題を解決できますか?あなたの関数で

答えて

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

関連する問題