在 R 中求解单个 ODE
Solving a single ODE in R
我是 R 的新手,我正在尝试构建一个用于求解 ODE 的最小工作示例。我想用初始条件 y(0) = 1 求解 dy/dt = y。我没有任何参数,所以我尝试输入 params = NULL
并且我还尝试完全省略参数,这给了我以下错误:
Error in func(time, state, parms, ...) : unused argument (parms).
鉴于我没有任何参数,我不确定该怎么做。我的代码如下。
library(deSolve)
dydt <- function(y,t) {
ydot <- y
return(ydot)
}
tvals = c(0:5)
y0 = 1
out <- ode(y = y0, times = tvals, func = dydt, parms = NULL)
library(deSolve)
dydt <- function(t,y,parms) {
ydot <-y
list(ydot)
}
tvals = c(0:5)
y0 =1
out <- ode(y = y0, parms=NULL,times = tvals, func = dydt)
从?ode
可以看出:
- 如果 func 是一个 R 函数,它必须被定义为:func <- function(t, y, parms,...)
所以dydt需要第三个参数
- func 的 return 值应该是一个列表
所以你需要
list(ydot)
而不是 return(ydot)
最好!
我是 R 的新手,我正在尝试构建一个用于求解 ODE 的最小工作示例。我想用初始条件 y(0) = 1 求解 dy/dt = y。我没有任何参数,所以我尝试输入 params = NULL
并且我还尝试完全省略参数,这给了我以下错误:
Error in func(time, state, parms, ...) : unused argument (parms).
鉴于我没有任何参数,我不确定该怎么做。我的代码如下。
library(deSolve)
dydt <- function(y,t) {
ydot <- y
return(ydot)
}
tvals = c(0:5)
y0 = 1
out <- ode(y = y0, times = tvals, func = dydt, parms = NULL)
library(deSolve)
dydt <- function(t,y,parms) {
ydot <-y
list(ydot)
}
tvals = c(0:5)
y0 =1
out <- ode(y = y0, parms=NULL,times = tvals, func = dydt)
从?ode
可以看出:
- 如果 func 是一个 R 函数,它必须被定义为:func <- function(t, y, parms,...) 所以dydt需要第三个参数
- func 的 return 值应该是一个列表
所以你需要
list(ydot)
而不是return(ydot)
最好!