将结果用于 R 中的下一个迭代步骤
Use result for next iterative step in R
我是迭代计算 R 的新手。我想做一个串行计算,因为我在下一个结果中使用了前一个结果。下面的代码显示了一次尝试计算序列差分方程的代码:
quadmap <- function(start,rho,niter) {
#variables
x_1<- start
r<-rho
n<-niter
print(c('x_1','r','n'))
print(c(x_1,r,n))
for (i in 1:n){
x_k_1<-x_1
xk <- r*x_k_1*(1-x_k_1)
x_k_1<- xk
print(xk)
}
}
我想在计算中使用新的xk作为新的'x_k_1',直到n次循环。
我没有得到想要的输出
第二次尝试给了我想要的结果:
quadmap <- function(start,rho,niter) {
#variables
x_1<- start
r<-rho
n<-niter
print(c('x_1','r','n'))
print(c(x_1,r,n))
for(i in 1:n) {
x_1 <- r* x_1*(1- x_1)
print(x_1)
}
}
如果你对递归版本感兴趣,这里有一个例子
quadmap <- function(start,rho,niter) {
if (niter == 1) return(start)
x <- quadmap(start,rho,niter-1)
c(x,rho*tail(x,1)*(1-tail(x,1)))
}
例子
> quadmap(0.5,1,5)
[1] 0.5000000 0.2500000 0.1875000 0.1523438 0.1291351
> quadmap(0.8,3,5)
[1] 0.8000000 0.4800000 0.7488000 0.5642957 0.7375982
我是迭代计算 R 的新手。我想做一个串行计算,因为我在下一个结果中使用了前一个结果。下面的代码显示了一次尝试计算序列差分方程的代码:
quadmap <- function(start,rho,niter) {
#variables
x_1<- start
r<-rho
n<-niter
print(c('x_1','r','n'))
print(c(x_1,r,n))
for (i in 1:n){
x_k_1<-x_1
xk <- r*x_k_1*(1-x_k_1)
x_k_1<- xk
print(xk)
}
}
我想在计算中使用新的xk作为新的'x_k_1',直到n次循环。
我没有得到想要的输出
第二次尝试给了我想要的结果:
quadmap <- function(start,rho,niter) {
#variables
x_1<- start
r<-rho
n<-niter
print(c('x_1','r','n'))
print(c(x_1,r,n))
for(i in 1:n) {
x_1 <- r* x_1*(1- x_1)
print(x_1)
}
}
如果你对递归版本感兴趣,这里有一个例子
quadmap <- function(start,rho,niter) {
if (niter == 1) return(start)
x <- quadmap(start,rho,niter-1)
c(x,rho*tail(x,1)*(1-tail(x,1)))
}
例子
> quadmap(0.5,1,5)
[1] 0.5000000 0.2500000 0.1875000 0.1523438 0.1291351
> quadmap(0.8,3,5)
[1] 0.8000000 0.4800000 0.7488000 0.5642957 0.7375982