Нам нужно найти квадрат root приближения. Первое приближение:
x_0 = n / 2
, где n - число, в котором мы имеем квадратный корень. Тогда k-аппроксимация будет иметь вид:
x_(k+1) = (x_k + n / x_k) / 2
. Проблема в том, что нам нужно найти аппроксимацию квадрата root, для которого его квадрат находится в диапазоне числа a
. Другими словами, в пределах abs(n-a)
Итак, моя попытка решить эту проблему:
def square_root_precision(n, a):
approx_zero = n / 2
approx_one = 0
while approx_one ** 2.0 <= abs(n - a):
approx_one = (approx_zero + n / approx_zero) / 2
approx_zero = approx_one
return approx_one
Итак, проблема в том, что моя функция для n = 2
и a = 0.000001
вместо этого возвращает 1.5
из 1.4142135623746899
Я много раз просматривал код. Это проблема точности функции?
Было бы здорово, если бы мы решили эту проблему только с помощью циклов и без расширенных функций.