Почему мы использовали функцию max. Разве мы не можем сразу оценить значение х. Это также достигнет нашей цели. Итак, как алгоритм улучшается с помощью этой функции max()?поиск по бисекции с использованием функции max()
x=25
epsilon=0.01
numGuesses= 0
low =0.0
high = max(1.0,x)
ans = (high+low)/ 2.0
while abs(ans**2 -x)>= epsilon:
print 'low =', low, 'high =', high, 'ans =', ans
numGuesses+= 1
if ans**2 <= x:
low= ans
else:
high= ans
ans = (high+low)/2.0
print 'numGuesses =', numGuesses
print ans, 'is close to square root of', x
Возможно, 'x' меняется, поскольку этот код приближается к квадратному корню из' x '. – Ryan
:(не могу разобраться, вы можете разработать @minitech – user3995169
Этот код приблизительно соответствует квадратному корню 'x'. Разумеется,' x' не всегда будет 25. Попробуйте с помощью 'high = x' и' x = 0.1', он никогда не сходится. – Ryan