Python計算平方根

Python計算平方根

用Match包


import math

math.sqrt( x )

自己實現(xiàn)

二分法

  • 步驟:
    • ①low = 0;high = x;
    • ②guess = (low + high) / 2
    • ③如果guess2 == x,則輸出guess,程序結(jié)束;
    • ④如果guess2 > x,則high = guess,繼續(xù)執(zhí)行步驟②
    • ⑤如果guess2 < x,則low = guess,繼續(xù)執(zhí)行步驟②
def dichotomy_sqrt(x):
    if x > 1:   #在0到1之間的數(shù),我們知道0到1之間的任何一個數(shù)平方后的結(jié)果都小于原值(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ā)現(xiàn),我們需要解決的問題可以簡單化理解。

從函數(shù)意義上理解:我們是要求函數(shù)f(x)=x2,使f(x)=num的近似解,即x2-num=0的近似解。

從幾何意義上理解:我們是要求拋物線g(x)=x2-num與x軸交點(g(x)=0)最接近的點。

我們假設g(x0)=0,即x0是正解,那么我們要做的就是讓近似解x不斷逼近x0,這是函數(shù)導數(shù)的定義:

image.png

可以由此得到

image.png

從幾何圖形上看,因為導數(shù)是切線,通過不斷迭代,導數(shù)與x軸的交點會不斷逼近x0。

image.png

對于一般情況:

image.png

將m=2代入:

image.png

利用“將長方形變得更像正方形”的思路也可以得到求 A

的算數(shù)平方根的迭代公式

相關(guān)文獻
image.png

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Python語言特性 1 Python的函數(shù)參數(shù)傳遞 看兩個如下例子,分析運行結(jié)果: 代碼一: a = 1 def...
    伊森H閱讀 3,175評論 0 15
  • 廢話不多說,自己進入今天的主題 1、面向?qū)ο蟮奶卣饔心男┓矫妫?答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€方面: - 抽象:...
    傳奇內(nèi)服號閱讀 2,530評論 1 31
  • 記北師版八上數(shù)學教材第二張第二節(jié)《平方根》 課本上關(guān)于本課設置了兩個課時內(nèi)容,第一課時為“算術(shù)平方根”,第二課時為...
    昱溪_32d6閱讀 2,518評論 0 2
  • 一、 Elasticsearch安裝 環(huán)境準備系統(tǒng): Centos7防火墻: 關(guān)閉Sellinux: 關(guān)閉JDK ...
    Albert_Yu閱讀 7,713評論 0 1
  • 你的朋友圈里有沒有一種人,更新的動態(tài)都是什么今天頭疼,明天胃疼,誰又傷了她的心,感覺全世界都欠她點什么,無病呻吟好...
    花箋_95ce閱讀 359評論 0 2

友情鏈接更多精彩內(nèi)容