y' = func(t, y, parms), y(times[0]) = y の初期値問題を、times の区間ごとに 1 つの固定ステップで解きます。R の deSolve::ode(y, times, func, parms, method) と同等です。ただし、これが成り立つのは "euler" と "rk4" の場合です。"rk2" の場合は、deSolve::ode(..., method = rkMethod("rk2")) (または deSolve::rk(..., method = "rk2")) と同等です。deSolve の ode() は method = "rk2" を受け付けないためです。
times
deSolve::ode(y, times, func, parms, method)
"euler"
"rk4"
"rk2"
deSolve::ode(..., method = rkMethod("rk2"))
deSolve::rk(..., method = "rk2")
ode()
method = "rk2"
時刻ごとに 1 行です: [t, y1, y2, ...]。
[t, y1, y2, ...]
// exponential decay y' = -0.7 yconst out = ode([1], [0, 0.5, 1], (t, y, p) => [-p[0]! * y[0]!], [0.7], { method: "rk4" });out[2]; // [1, 0.49664] (exp(-0.7) = 0.49659) コピー
// exponential decay y' = -0.7 yconst out = ode([1], [0, 0.5, 1], (t, y, p) => [-p[0]! * y[0]!], [0.7], { method: "rk4" });out[2]; // [1, 0.49664] (exp(-0.7) = 0.49659)
y' = func(t, y, parms), y(times[0]) = y の初期値問題を、
timesの区間ごとに 1 つの固定ステップで解きます。R のdeSolve::ode(y, times, func, parms, method)と同等です。ただし、これが成り立つのは"euler"と"rk4"の場合です。"rk2"の場合は、deSolve::ode(..., method = rkMethod("rk2"))(またはdeSolve::rk(..., method = "rk2")) と同等です。deSolve のode()はmethod = "rk2"を受け付けないためです。