Как насчет
n<-2000
params <- list(s=10,b=8/3,p=28,dt=0.003)
X0 <- X <- c(x=10,y=0,z=20)
itfun <- function(X) {
with(c(as.list(X),params),
X + c(s*(y-x),x*(p-z)-y,x*y-b*z)*dt)
}
Xmat <- rbind(X0,t(replicate(n,X <<- itfun(X))))
library(rgl)
plot3d(Xmat,type= 'l',col = 'red')
или (включая ответ из комментариев)
do.call(rbind,
Reduce(function(X, i) {
with(c(params, as.list(X)),
X + c(s*(y-x),x*(p-z)-y,x*y-b*z)*dt)
},
seq(n), X, accumulate=TRUE)[-1])
PS как ты считаешь строки? Если вы используете достаточно точек с запятой, вы можете сделать все это одной строкой :-) Я считаю в вашем коде 11 операторов
edit : в обновлении x
отсутствует