R循环用牛顿法近似正实数的平方根

R loop to approximate square root of a positive real number with Newton's method

我是 R 的新手,我正在做一个家庭作业问题,要求我使用 Newton's method for square root approximation 使用 repeat 循环。这是我目前所拥有的:

x = 2
a = 10
tol = 1e-04
repeat {
  (abs(x^2 - a) > tol)
  (x = 0.5 * (a/x + x))
  if (all.equal(x^2, a)) {
    break
  }
}

但是我收到一些错误消息和一个错误的答案。最后,a 应该几乎等于 x ^ 2 但现在还没有。我知道 all.equal 部分有问题,但我想弄清楚一旦它们足够接近如何打破循环。

感谢您的任何建议。

根本不要使用 all.equal

## trying to find `sqrt(10)`
x <- 2
a <- 10
tol <- 1e-10
repeat{
  x <- 0.5 * (a / x + x)
  if (abs(x * x - a) < tol) break
  }
x
#[1] 3.162278