2016-09-28 2 views
0

방금 ​​deSolve로 작업하기 시작했습니다. checkFunc (이 Func2, 배, Y, RHO)에R : deSolve 패키지의 초기 조건 오류

오류 : 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