解决R中的一个ODE

时间:2019-11-15 19:43:16

标签: r ode

我是R的新手,我正在尝试为解决ODE构建一个最小的工作示例。我想用初始条件y(0)= 1来求解dy / dt = y。我没有任何参数,所以我尝试放置def pretty(d, indent=0): for i in d: for key, value in i.items(): print('\t' * indent + str(key) + ' {') if isinstance(value, list): for item in value: if isinstance(item, dict): for key_1, value_1 in item.items(): if isinstance(value_1, list): print('\t' * (indent + 2) + str(key_1) + ' {') for x in value_1: for key_2, value_2 in x.items(): print('\t' * (indent + 3) + str(key_2) + 4 * ' ' + str(value_2)) print('\t' * (indent + 2) + '}') else: print('\t' * (indent + 1) + str(key_1) + 4 * ' ' + str(value_1)) print('}') ,并且还尝试完全省略该参数,这给了我以下几点错误:

  

func(时间,状态,参数,...)错误:未使用的参数(参数)。

鉴于我没有任何参数,所以我不确定该怎么做。我的代码在下面。

params = NULL

1 个答案:

答案 0 :(得分:2)

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中可以看到:

  1. 如果func是R函数,则必须将其定义为:func <-function(t,y,parms,...) 所以dydt需要第三个参数
  2. func的返回值应该是一个列表 因此,您需要list(ydot)而不是return(ydot)

最好!