我在R中编写了一些代码,以便在给定任何容差的情况下确定ai
的最佳估算值。到目前为止,我已经提出了这个问题:
iter<- function (ai, k, tolerance){
at = ai*(1-ai^2*R[k]^ai*(log(R[k]))^2/(1-R[k]^ai)^2)/
(1 - (ai^2*R[k]^ai*(log(R[k]))^2)/(1-R[k]^ai)^2 + ai*(H(k)
- 1/ai - R[k]^ai*log(R[k])/(1-R[k]^ai)))
while((at-ai) > tolerance) {
ai = at
at = ai*(1-ai^2*R[k]^ai*(log(R[k]))^2/(1-R[k]^ai)^2)/
(1 - (ai^2*R[k]^ai*(log(R[k]))^2)/(1-R[k]^ai)^2 + ai*(H(k)
- 1/ai - R[k]^ai*log(R[k])/(1-R[k]^ai)))
a0 = at
}
return(at)
}
x<- iter(ai = H(k), k, tolerance = 0.000001)
其中R
和H
是每个k
的已知变量,并且ai
的初始估算值已知,即H(k)
。此代码适用于k
的任何值,例如
x<- iter(ai = H(k), 21, tolerance = 0.000001)
给出了一个好结果。但是,我的问题是,当我尝试将其嵌入到for循环中时(我实际上想要一个向量x[k]
,其中计算k
的每次迭代),即:
for (k in seq (along = 1: (n-1)){
x<- iter(ai = H(k), 21, tolerance = 0.000001)
}
这段代码并没有给我一个向量,而是为x
提供了一个值。这对我来说没有多大意义,因为我试图为每个可能的x
分配一个值k
。我在这里错过了什么?
与往常一样,任何帮助都会非常感激。
答案 0 :(得分:2)
由于你想要一个向量,x
应该是一个向量。
x<-numeric(n-1)
for (k in seq (along = 1: (n-1)){
x[k]<- iter(ai = H(k), 21, tolerance = 0.000001)
}