程序如何计算平方根?

How do programs calculate square roots?

我知道这是一个很好的数学问题,但是程序如何求平方根?根据我的阅读,这通常是设备 cpu 固有的东西,但我需要能够做到这一点,可能是在 c++ 中(尽管那是无关紧要的)。

我之所以需要具体了解这一点,是因为我有一个内联网服务器,而且我正开始使用众包。为此,我将从找到某个平方根的很多数字开始,比如 sqrt(17) 之类的。

这是 python 提供的范围,只是 math.sqrt()

我要创建一个可以与其他相同客户端一起工作的客户端,因此我需要完全控制数学过程。哎呀,这个问题可能 没有 答案,但无论如何还是感谢你的帮助。

[编辑] 我让它工作了,这是它的 'final' 产品:(非常感谢 @djhaskin987)

def square_root(number):
    old_guess = 1
    guess = 2
    guesssquared = 0
    while round(guesssquared, 10) != round(number, 10):
        old_guess = guess
        guess = ((number / guess) + guess ) / 2
        print(guess)
        guesssquared = guess * guess
    return guess

solution = square_root(7) #finds square root of 7
print(solution)

计算机使用人们实际使用的方法since babylonian times:

def square_root(number):
    old_guess = 1
    guess = 2
    while old_guess != guess:
        old_guess = guess
        guess = ((number / guess) + guess ) / 2
    return guess

x86 在注册表中有很多 sqrt,以 FSQRT for float 开头。

一般来说,如果你的功能太复杂或者没有实现,就是C^\infty ("infinitely" differentiable), you can expand it into a polynom via Taylor expansion。这在 HPC 中极为常见。