gpt4 book ai didi

r - 求 r 中无限和的值

转载 作者:行者123 更新时间:2023-12-02 09:03:05 29 4
gpt4 key购买 nike

我对 R 和编程非常陌生,所以请留在我身边:)

我正在尝试使用迭代来查找无限迭代到小数点后第四位的值。 IE。其中小数点后第四位不变。所以 1.4223,其中 3 不再改变,所以小数点后 3 位的结果是 1.422。

enter image description here

上面的链接显示了我遇到的类似问题的示例。我的问题是如何创建一个无穷大的 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

最佳答案

这是一个示例:要执行无限循环,请使用 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.635082n=101

  • R 还有一个很少使用的 repeat { } 关键字,但 while(TRUE) 对读者来说可能会更清楚
  • 有更有效的方法可以做到这一点(即每次乘以 (x-1)^2 来计算分子)
  • 通常最好也测试最大迭代次数,这样如果级数不收敛或者代码中有错误,就不会设置真正的无限循环
  • 我尚未解决您的确切问题(选择较小的 tol 值),但您应该能够调整此值以获得答案
  • answer to your previous question 中所述,这不能保证,但通常应该没问题;您可以检查(我没有)以确保您想要评估的特定系列具有良好的收敛性

关于r - 求 r 中无限和的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61582947/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com