我是編程新手,特別是R。我發現有時比Matlab更容易獲得更復雜的東西。我試圖重新創建一個我已經在「script.m」中有一個循環,但我一直沒有得到任何東西R. 任何人都可以請解釋我如何運行以下三次這個?.. 。ODE在循環中R
預先感謝任何幫助提供
pars <- c(...)
times <- seq(ti, tf, delta)
state <- c(S = 50, X = 20, P = 0.5)
SOLVE <- function(pars) {
derivs <- function(time, state, pars) {
with(as.list(c(state, pars)), {
.
.
.
return(list(c(St, Xt, Pt)))
})
}
return(as.data.frame(ode(y = state, times = times, func = derivs, parms = pars)))
}
for(i in seq(ti, tf-span, span)) {
times <- seq(i, i+span, delta)
out <- SOLVE(pars)
state <- c(state[1], tail(out[3], 1), tail(out[4], 1))
}
我得到的錯誤是:
錯誤checkInput(Y,時間,FUNC,RTOL,蒂,jacfunc,TCRIT,HMIN ,: `y'必須是數字
我假設這工作正常,至少有一個循環迭代,然後在你試圖更新'狀態'後損壞?你應該在循環中調用cat()來處理它被分配的內容。 – devmacrile