这是我找到的最好的方法,使用最少的处理器:
x = 25
epsilon = 0.001
step = epsilon**2
numGuesses = 0
ans = 0.0
while abs(ans**2 - x) > epsilon and ans <=x:
ans += step
numGuesses += 1
print 'numGuesses =', numGuesses
if abs(ans**2 - x) >= epsilon:
print 'Failed on square root of number', x
else:
print ans, 'is close to square root of', x
数字大于1
答案 0 :(得分:2)
如何使用math.sqrt
方法。
如果这是一个关于如何通过算法计算平方根的问题,您可以考虑二进制搜索。这种二元搜索可以使用两个阶段:
或者在电子工程练习中使用的众所周知的算法是牛顿方法,你可以使用收敛序列:
x(i+1) = 0.5*[x(i)+y/x(i)]
在python中,您可以将其实现为:
x = 25
numGuesses = 0
ans = 1.0
for i in range(0, 5):
ans = 0.5*(ans+x/ans)
numGuesses += 1
其中5
是任意数,以收敛到足够的精度。
但出于性能原因,math.sqrt
是最佳选择,因为它是在浮点协处理器(即硬件)上处理的。如果您需要更准确地确定平方根,可以定义自己的浮点并实现其中一种方法。但是,对于许多应用程序,默认浮点及其操作就足够了。