【发布时间】:2011-04-17 04:51:54
【问题描述】:
这是 comp sci 101 的东西,但我找不到适用于 R(或 matlab)的答案。
我有一个for 循环,我想用第一次猜测来初始化(这里全为零,但以后可能会有别的东西),但我想在每次迭代中不断更新。我在下面的工作,但它有点笨重和尴尬。
我想避免在for 循环之前进行一次迭代。我可以在循环内使用ifelse 来做到这一点,但这似乎效率低下。谢谢!
alpha <- 0.3
beta <- 0.6
m <- 5 # elements in k
n <- 10 # iterations
k.prime <- v <- matrix(0, n, m)
k <- seq(from=0.04, to=0.2, length.out=m) # poss values for k
colnames(v) <- colnames(k.prime) <- round(k, digits=2)
# first loop for taking the first guess for v()
i <- 1
for (j in 1:m) {
temp.v <- log(k[j]^alpha - k) + beta*rep(0, times=m)
v[i, j] <- max(temp.v)
k.prime[i, j] <- k[which.max(temp.v)]
}
# remaining loops
for (i in 2:n) {
for (j in 1:m) {
temp.v <- log(k[j]^alpha - k) + beta*v[i-1, ]
v[i, j] <- max(temp.v)
k.prime[i, j] <- k[which.max(temp.v)]
}
}
v
k.prime
【问题讨论】:
-
我也对 matlab 解决方案持开放态度。两者有不同的循环行为吗?除了简单的语法差异之外,它们不是示例 re 循环和矩阵吗?
-
只是对于不熟悉R的人来说,很难理解代码。如果您发布它的 MATLAB 版本可能会有所帮助...另一方面,您能否准确解释代码试图实现的目标?
-
好点。出门在外,但我应该做一个 MATLAB 版本......我不应该给寻求帮助的 MATLABers 带来额外的负担。谢谢!
-
哦,代码试图找到
v(k)的数值解,其中v(k_t) = log(k_t^alpha - k_t+1) + beta*v(k_t+1)。这是第一天动态编程的东西(即宏观经济学)。