天天看點

python:用牛頓逼近法計算2的算術平方根

如果有人問2的算術平方根是多少,相信所有的程式員都會張口說出1.414這個答案。不過,要是精度要求更高一點,大多數的程式員就隻能依賴電腦了。比如,Python程式員會這樣寫:

>>> pow(2, 1/2)

1.4142135623730951

或者,像下面這樣寫,也沒有問題:

>>> 2**(1/2)1.4142135623730951      

但是,如果想要通過計算的方式(不是指在草紙上手工開方),得到高精度的結果,作為程式員應該如何寫代碼呢?這裡,以計算2的算術平方根為例,介紹科學巨人牛頓的逼近法。

python:用牛頓逼近法計算2的算術平方根
def f(x):    # 定義函數f(x)
    
    return x**2 - 2def df(x):    # 定義函數f(x)的導函數
    
    return 2*xdef newton_raphson_method():    # 牛頓-拉弗森方法    
    tiny = 1e-15 # 當f(x_n)小于tiny時,疊代結束
    i, x = 0, 2 # 疊代計數器和初始值
    while True:
        i += 1 # 疊代計數器加1
        x = x-f(x)/df(x) # 計算下一個x
        if abs(f(x)) < tiny: # 滿足疊代結束條件
            print('\n經過%d次疊代,2的算術平方根為%.030f'%(i, x))            breakif __name__ == '__main__':
    newton_raphson_method()      
上一篇: 結對作業
下一篇: 個人作業