1
私はODEと協力しており、rk(x, times1, func1, parms)
とrk(x, times2, func2, parms)
を20回積み重ねる(更新する)ので、新しい実行は前の実行の結果から始まります。前もって感謝します!ここでODE:タイムライン内の2つの代替関数
require(deSolve)
func1 <- function(t, x, parms) {
with(as.list(c(parms, x)),{
drN = k*(No-N) - (Np+Tp) + r*(Np+Tp)
drNp = L1*Np - r*Np - (s+k)*Np
drTp = L2*Tp - r*Tp - (s+k)*Tp
res <- c(drN, drNp, drTp)
list(res)
})
}
func2 <- function(t, x, parms) {
with(as.list(c(parms, x)),{
drN = k*(No-N) - (Np+Tp) + r*(Np+Tp) + 1
drNp = L1*Np - r*Np - (s+k)*Np + 1
drTp = L2*Tp - r*Tp - (s+k)*Tp + 1
res <- c(drN, drNp, drTp) + 1
list(res)
})
}
times1 <- seq(0, 200, length = 200)
times2 <- seq(0, 20, length = 200)
parms <- c(L1=0.4, L2=0.3, No=1.3, k=0.5, r=0.3, s=0.2)
x <- c(N = 0.4, Np = 0.01, Tp = 0.01)
out <- rk(x, times1, func1, parms) + rk(x, times2, func2, parms) +
rk(x, times1, func1, parms) + rk(x, times2, func2, parms) +
rk(x, times1, func1, parms) + rk(x, times2, func2, parms) +
rk(x, times1, func1, parms) + rk(x, times2, func2, parms) #this is what I tried, but failed
plot (out)
私はポイントを得ることはありません。 'rk(x、times1、func1、parms)'と 'rk(x、times2、func2、parms)'を20回実行することができ、常に同じ結果になります。 各実行後に状態変数 'x'を更新しますか? もしそうでなければ 'rk(...)'の1つに20を乗じることができます( 'times1'と' times2'の場合) –
こんにちは!私は状態変数を累積(更新)するので、それぞれの新しい実行が以前の実行の結果で始まるようにrk(x、times1、func1、parms)とrk(x、times2、func2、parms)を20回交互にしたい。 – kumbu
これはあなたのコードに関与していない! –