【问题标题】:R loop to approximate square root of a positive real number with Newton's methodR循环用牛顿法逼近正实数的平方根
【发布时间】:2019-03-06 21:48:44
【问题描述】:

我是 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 部分有问题,但我正试图弄清楚一旦它们足够接近如何打破循环。

感谢您的任何建议。

【问题讨论】:

  • if 需要一个逻辑输入。 all.equal 不会(必然)输出逻辑值。例如all.equal(1, 2).
  • 我认为你的算法实现是错误的,但如果它是正确的,你应该使用if (isTRUE(all.equal(x^2, a)))

标签: r loops repeat newtons-method


【解决方案1】:

根本不要使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多