Петля R для аппроксимации квадратного корня положительного действительного числа методом Ньютона - PullRequest
0 голосов
/ 01 октября 2018

Я новичок в R, и я работаю над домашним заданием, которое просит меня использовать цикл 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 голосов
/ 01 октября 2018

Не используйте 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
...