Python计算平方根

Python计算平方根

用Match包


import math

math.sqrt( x )

自己实现

二分法

  • 步骤:
    • ①low = 0;high = x;
    • ②guess = (low + high) / 2
    • ③如果guess² == x,则输出guess,程序结束;
    • ④如果guess² > x,则high = guess,继续执行步骤②
    • ⑤如果guess² < x,则low = guess,继续执行步骤②
def dichotomy_sqrt(x):
    if x > 1:   #在0到1之间的数,我们知道0到1之间的任何一个数平方后的结果都小于原值(0,1除外),因此如果要沿用上面的程序达不到“逼近”的作用,反而扩大了
        a = 1.0
        b = x
    else:
        a = x
        b = 1.0
    y = (a + x)/2
    while abs(y * y - x) > 1e-6:
        if y * y > x:
            b = y
            y = (y + a) /2
        else:
            a = y
            y = (y + b) /2
    return y

牛顿迭代法 百度百科

#牛顿迭代法
def Newton_sqrt(x,y=1):
    z = x/y
    if abs(z - y) < 0.000001:
        return z
    else:
        y = (y + z)/2
        return Newton_sqrt(x,y)
  

def sqrt1(x, y=1):
    return x / y if abs(x/y - y) < 0.000001 else sqrt(x, (x/y + y)/2)

sqrt2 = lambda x, y=1:x / y if abs(x/y - y) < 0.000001 else sqrt2(x, (x/y + y)/2)

思路

牛顿迭代

仔细思考一下就能发现,我们需要解决的问题可以简单化理解。

从函数意义上理解:我们是要求函数f(x)=x²,使f(x)=num的近似解,即x²-num=0的近似解。

从几何意义上理解:我们是要求抛物线g(x)=x²-num与x轴交点(g(x)=0)最接近的点。

我们假设g(x0)=0,即x0是正解,那么我们要做的就是让近似解x不断逼近x0,这是函数导数的定义:

image.png

可以由此得到

image.png

从几何图形上看,因为导数是切线,通过不断迭代,导数与x轴的交点会不断逼近x0。

image.png

对于一般情况:

image.png

将m=2代入:

image.png

利用“将长方形变得更像正方形”的思路也可以得到求 A

的算数平方根的迭代公式

相关文献
image.png

image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    伊森H阅读 8,259评论 0 15
  • 废话不多说,自己进入今天的主题 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:...
    传奇内服号阅读 7,128评论 1 31
  • 记北师版八上数学教材第二张第二节《平方根》 课本上关于本课设置了两个课时内容,第一课时为“算术平方根”,第二课时为...
    昱溪_32d6阅读 7,048评论 0 2
  • 一、 Elasticsearch安装 环境准备系统: Centos7防火墙: 关闭Sellinux: 关闭JDK ...
    Albert_Yu阅读 12,219评论 0 1
  • 你的朋友圈里有没有一种人,更新的动态都是什么今天头疼,明天胃疼,谁又伤了她的心,感觉全世界都欠她点什么,无病呻吟好...
    花笺_95ce阅读 2,662评论 0 2

友情链接更多精彩内容