Возможно, будет немного поздно ответить, но самый простой и точный способ вычисления квадратного корня - это метод Ньютона.
У вас есть число, для которого вы хотите вычислить его квадратный корень (num)
, и у вас есть предположение о его квадратном корне (estimate)
. Оценка может быть любым числом больше 0, но число, которое имеет смысл, значительно сокращает глубину рекурсивного вызова.
new_estimate = (estimate + num / estimate) / 2
Эта строка вычисляет более точную оценку с этими двумя параметрами. Вы можете передать значение new_estimate в функцию и вычислить другое значение new_estimate, которое является более точным, чем предыдущее, или вы можете сделать рекурсивное определение функции, подобное этому.
def newtons_method(num, estimate):
# Computing a new_estimate
new_estimate = (estimate + num / estimate) / 2
print(new_estimate)
# Base Case: Comparing our estimate with built-in functions value
if new_estimate == math.sqrt(num):
return True
else:
return newtons_method(num, new_estimate)
Например, нам нужно найти квадратный корень 30-х годов. Мы знаем, что результат от 5 до 6.
newtons_method(30,5)
число равно 30, оценка - 5. Результат каждого рекурсивного вызова:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
Последний результат является наиболее точным вычислением квадратного корня числа. Это то же значение, что и встроенная функция math.sqrt ().