關於代碼實現一個數求平方根

記該數爲a,a的平方根記爲x,則√a=x,寫爲x^2=a,

f(x)=x^2-a,那麼求方根的問題就轉化爲求f(x)在x軸交點的問題;

F(x)爲f(x)的原函數,F'(x)=f(x)=x^2-a=0,就是求F(x)極值點的問題了(這樣就轉化到梯度下降上去了)

 因此代碼可以這樣寫:

import math

if __name__ == "__main__":
    learning_rate = 0.01
    for a in range(1,100):
        cur = 0
        for i in range(1000):
            cur -= learning_rate*(cur**2 - a)
        print(' %d的平方根(近似)爲:%.8f,真實值是:%.8f' % (a, cur, math.sqrt(a)))


關於python裏 % 的用法,參照 https://www.cnblogs.com/vamei/archive/2013/03/12/2954938.html


部分結果爲:

1的平方根(近似)爲:1.00000000,真實值是:1.00000000

 2的平方根(近似)爲:1.41421356,真實值是:1.41421356
 3的平方根(近似)爲:1.73205081,真實值是:1.73205081
 4的平方根(近似)爲:2.00000000,真實值是:2.00000000
 5的平方根(近似)爲:2.23606798,真實值是:2.23606798
 6的平方根(近似)爲:2.44948974,真實值是:2.44948974
 7的平方根(近似)爲:2.64575131,真實值是:2.64575131
 8的平方根(近似)爲:2.82842712,真實值是:2.82842712
 9的平方根(近似)爲:3.00000000,真實值是:3.00000000
 10的平方根(近似)爲:3.16227766,真實值是:3.16227766

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章