我是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
部分出了问题,但是我想弄清楚一旦它们足够接近就如何打破循环。
谢谢您的任何建议。
答案 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