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

时间:2018-10-01 18:35:52

标签: r loops repeat newtons-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部分出了问题,但是我想弄清楚一旦它们足够接近就如何打破循环。

谢谢您的任何建议。

1 个答案:

答案 0 :(得分:4)

完全不使用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