欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python函数实现求非负实数平方根,在shell里调用

程序员文章站 2024-03-21 13:18:34
...

编写python函数实现求非负实数平方根,在shell里调用

算法

牛顿迭代法

利用切线逼近曲线,求曲线零点,对于曲线 y=f(x)y = f(x),采用迭代的方法求其零点,在点xn,f(xn)(x_n, f(x_n))处曲线切线方程:y=f(xn)+f(xn)(xxn)y = f(x_n) + f'(x_n)(x - x_n),其与x轴交点横坐标即为下一个xnx_n,得到通用迭代公式:
xn+1=xn+f(xn)f(xn) x_{n+1} = x_n + \frac{f(x_n)}{f'(x_n)}

对于求已知参数 xx 的平方根,即求方程 y2x=0y^2 - x = 0 的解,代入即可解得:
xx平方根的迭代公式为:yn+1=yn+xyn2y_{n+1}=\frac{y_n+\frac{x}{y_n}} {2}

描述如下

  1. 对给定正整数xx和允许误差ee,令变量yy取任意正整数值,如令 y=xy=x
  2. 如果 y2y^2xx 足够接近,即 y2x<e|y^2 - x| < e,计算结束并把 yy 作为结果;
  3. z=y+xy2z = \frac{y + \frac{x}{y}}{2} ;
  4. zz 作为 yy 的新值,回到步骤1

函数代码

def sqrt(x):
    y = 1.0
    while abs(y * y - x) > 1e-6:
        y = (y + x/y)/2
    return y

调用函数

import sys
sys.path.append(r"D:\python")
import sqrt
y = sqrt.sqrt(5)
y