我对R和编程非常陌生,所以请和我在一起:)
我正在尝试使用迭代来找到无限次迭代的值到小数点后第四位。即其中小数点后第四位不变。因此1.4223,其中3不再更改,因此小数点后3位的结果是1.422。
上面的链接显示了我遇到的类似问题的示例。我的问题是如何创建一个无穷大的for循环并找到小数点后第四位停止变化的值?
我已经尝试过使用while循环,但是我不确定如何阻止它永远循环下去。我需要一些if语句,如下所示:
result <- 0
i <- 1
d <- 1e-4
while(TRUE)
{
result <- result + (1/(i^2))
if(abs(result) < d)
{
break
}
i <- i + 1
}
result
答案 0 :(得分:5)
这里是一个示例:使用while(TRUE) {}
进行无限循环,并根据您的建议使用if
子句和break
在必要时停止。
## example equation shown
## fun <- function(x,n) {
## (x-1)^(2*n)/(n*(2*n-1))
## }
## do it for f(x)=1/x^2 instead
## doesn't have any x-dependence, but leave it in anyway
fun <- function(x,n) {
1/n^2
}
n <- 1
## x <- 0.6
tol <- 1e-4
ans <- 0
while (TRUE) {
next_term <- fun(x,n)
ans <- ans + next_term
if (abs(next_term)<tol) break
n <- n+1
}
运行时会得到ans=1.635082
,n=101
。
repeat { }
关键字,但是while(TRUE)
对于读者来说可能更清楚(x-1)^2
来计算分子)tol
值),但是您应该可以对此进行调整以获得答案