Python Square函数使用牛顿算法

时间:2015-02-26 03:05:50

标签: python math

如何使用牛顿算法创建一个名为mySqrt的python函数,该函数将近似数字的平方根,称之为n。这是我到目前为止所做的:

def newguess(x):
    result = x/2
    return result

def mySqrt(n):
    result = (1/2) * (oldguess + (n/oldguess))
    return result

v = newguess(45)
t = mySqrt(65)
print(t)

3 个答案:

答案 0 :(得分:2)

我认为这就是你要找的东西:

def my_sqrt(n):
    approx = n/2
    closer = (approx + n/approx)/2
    while closer != approx:
        approx = closer
        closer = (approx + n/approx)/2
    return approx

答案 1 :(得分:1)

Newton方法找到等式r的近似解f(x) = 0,如下所示:

  1. [初始化] r设置为初步猜测。设置epsilon := 0.00001(精度)
  2. [迭代] abs(f(r)) > epsilon重复r := r - f(r)/f'(r)
  3. [结束] 返回r
  4. 在上面的步骤1中,epsilon是您想要达到的精度。精度越高,程序的使用时间越长。在第2步中,f'(r)代表f的{​​{1}}衍生物。

    现在,您想使用牛顿方法为r的任何值计算sqrt(a)

    根据定义,a >= 0表示x = sqrt(a)x^2 = a。让x^2 - a = 0查找f(x) = x^2 - a.的{​​{1}}解决方案等同于查找r。请注意,在这种情况下,我们有f(x) = 0

    如果我们现在将上述算法应用于此案例,并将r = sqrt(a)作为初始猜测(实际上是f'(x) = 2*x.a/2之间的任何内容),我们会得到:

    1. [初始化] 设置0a
    2. [迭代] r := a/2重复epsilon := 0.000000001
    3. [结束] 返回abs(r^2 - a) > epsilon
    4. 因此,您现在唯一需要做的就是将这三个简单的步骤转换为植物程序。

答案 2 :(得分:0)

这是一个使用 50 次迭代来近似值的解决方案:

def mySqrt(n):
newGuess=n/2
for i in range(50):
    newGuess=0.5*(newGuess + (n/newGuess))
return newGuess