在二等分搜索算法中使用时epsilon会做什么?

问题描述

x = 25
epsilon = 0.01
numGuesses = 0
ans = 0.0
while abs(ans**2 - x) >= epsilon and ans <= x:
    ans += 0.00001
    numGuesses += 1
print 'numGuesses =',numGuesses
if abs(ans**2 - x) >= epsilon:
    print 'Failed on square root of',x
else:
    print ans,'is close to square root of',x 

解决方法

我不太确定这是Python问题,而不仅仅是数学问题。

Epsilon是您给出的公差。否则您的数字可能会非常小,但仍不能为零,这实际上是数字噪声 基本上在数学上是正确的,可以将差异与某些容差进行比较,而不是直接与数字进行比较,例如由于上述原因导致值** 2 == x

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...