简体   繁体   English

求解 R 中的单个 ODE

[英]Solving a single ODE in R

I'm new to R and I'm trying to construct a minimal working example for solving an ODE.我是 R 的新手,我正在尝试构建一个最小的工作示例来解决 ODE。 I want to solve dy/dt = y with initial condition y(0) = 1. I don't have any parameters, so I tried putting params = NULL and I also tried omitting the argument altogether, which gave me the following error:我想用初始条件 y(0) = 1 解决 dy/dt = y。我没有任何参数,所以我尝试输入params = NULL并且我还尝试完全省略参数,这给了我以下错误:

Error in func(time, state, parms, ...): unused argument (parms). func(时间,state,parms,...)中的错误:未使用的参数(parms)。

Given that I don't have any parameters, I'm not sure what to do.鉴于我没有任何参数,我不确定该怎么做。 My code is below.我的代码如下。

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)

As you can see from ?ode :?ode可以看出:

  1. If func is an R-function, it must be defined as: func <- function(t, y, parms,...) So dydt need a third parameter如果 func 是一个 R 函数,它必须定义为: func <- function(t, y, parms,...) 所以 dydt 需要第三个参数
  2. the return value of func should be a list So you need list(ydot) instead of return(ydot) func 的返回值应该是一个列表所以你需要list(ydot)而不是return(ydot)

Best!最好的!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM