Я попытался найти квадратный корень числа, такого, что
abs(y**2-x) < epsilon
, используя метод деления пополам, однако, я не получаю ответ, который хочу, когда я запускаю его. Если я выберу x равным 4 и 0,01, я ожидаю получить 2, но вместо этого получаю 1,0. Может ли кто-нибудь помочь мне исправить это?
Контрольный пример:
> squareRoot(4, 0.01)
> 1.0
def squareRoot(x, epsilon):
low = 0
high = max(1.0, x)
y = (high+low) / 2.0
while abs(y**2 - x)<epsilon:
if y**2 < x:
low = y
else:
high = y
y = (high + low) / 2.0
return y