【发布时间】:2021-02-14 12:18:11
【问题描述】:
我正在将一些代码从 Python 翻译成 R,并且发现很难在每个代码中找到相应的函数。在这种特殊情况下,我遇到问题的代码是:
x_sol_best = solve_ivp(
fun=model_covid,
y0=x_0_cases,
t_span=[t_predictions[0], t_predictions[-1]],
t_eval=t_predictions,
args=tuple(optimal_params),
).y
从scipy.integrate.solve_ivpdocumentation,我看到这个函数中使用的默认积分方法是:'RK45'(默认):5(4)阶的显式龙格-库塔法
R 中的哪些包/函数与此等价?
从 R 中 ode 函数的 R documentation 中,我看到有许多 RK 4(5) 方法可用(粘贴在下面) - 但 Python 文档指出 RK45 是 5(4 )...
谁能提供任何澄清? TIA
"rk45ck" | Runge-Kutta Cash-Karp, order 4(5)
"rk45f" | Runge-Kutta-Fehlberg, order 4(5); Octave: ode45, pair=1
"rk45e" | Runge-Kutta-England, order 4(5)
"rk45dp6" | Dormand-Prince, order 4(5), local order 6
"rk45dp7", "ode45" | Dormand-Prince 4(5), local order 7
【问题讨论】:
-
我猜R中的
lsoda相当于python中的solve_ivp()rdocumentation.org/packages/deSolve/versions/1.28/topics/lsoda -
我觉得它更像
ode()。lsoda是一个特殊的求解器,ode()是一个通用函数,允许选择求解器
标签: python r scipy ode runge-kutta