【发布时间】: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