Python 使用穷举枚举逼近平方根的更好方法?
这是我找到的最好的方法,使用最少的处理器:Python 使用穷举枚举逼近平方根的更好方法?,python,python-3.x,Python,Python 3.x,这是我找到的最好的方法,使用最少的处理器: 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: prin
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
x=25
ε=0.001
步长=ε**2
数值=0
ans=0.0
而abs(ans**2-x)>ε和ans=ε:
打印“在数字的平方根上失败”,x
其他:
打印ans,'接近,'x的平方根
对于大于1的数字如何使用该方法
如果关于如何计算平方根的问题较多,可以考虑二进制搜索。这种二进制搜索可以使用两个阶段:
- 寻找上限的阶段;及
- 使用二进制搜索确定精确值的阶段
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
是最好的选择,因为它是在浮点协处理器(因此是硬件)上处理的。如果您需要更精确地确定平方根,您可以定义自己的浮点并实现其中一种方法。但是,对于许多应用程序,默认的浮点及其操作就足够了。问题是什么?这不是python 3代码。为什么你要费心用python来做这件事,而不仅仅是求平方根?@Eevee他可能需要从头开始构建平方根,这在数学上仍然是一个悬而未决的问题,如果你问任何数学程序员如何找到一个数的平方根,你可能有不同的选择。但他仍然需要给出清晰的问题,这样我们就可以在这个清晰的答案上添加一个与作者所指的不同方法的链接,看看:牛顿的方法是二次收敛的,所以20次迭代甚至可能有点过多。@DietrichEpp:我同意,修改为5
。但我认为最好还是使用浮点sqrt。只有在需要极高精度时,才可以使用自定义算法,但在这种情况下,应首先设计精度更高的浮点。