我想使用R计算并绘制基于odinary微分方程的随机微分方程。计算ODE的每个时间步长的值。现在基于它们我想计算SDE的值,在这个过程中我注意到,该片段正在跳过一些字段。 nres的输出低于。
你能解释一下这种行为吗?
谢谢
timestep <- 0.01
times <- seq(0, 25, timestep)
N <- length(times)
nres <- vector("list", N)
for(i in times){
print(i)
current <- i/timestep
if( current > 0 ) {
nextPos <- current + 1
nres[[nextPos]] <- 1
}
}
输出:
[[25]] 1
[[26]] 1
[[27]] 1
[[28]] 1
[[29]] 1
[[30]] **NULL**
[[31]] 1
[[32]] 1
[[33]] 1
答案 0 :(得分:1)
尝试更改为
current <- round(i/timestep)
答案 1 :(得分:0)
您的代码对我不起作用,因为缺少nres的定义/初始化。无论如何,我的假设是它不起作用,因为你用浮点数计算你的指数。这可能会弄乱事情。也许添加round(...,0)会起作用......
timestep <- 0.01
times <- seq(0, 25, timestep)
N <- length(times)
for(i in times){
print(i)
current <- i/timestep
if( current > 0 ) {
nextPos <- round(current + 1, 0)
nres[[nextPos]] <- 1
}
}
或者做你想做的其他方式是:
timestep <- 0.01
times <- seq(0, 25, timestep)
for(i in len(times)){
print(times[i])
nres[i+1] <- 1
}