【算法】牛頓迭代法




當迭代次數夠多的時候,xi就接近正確的值x了。那麼, 紅線斜率

k = f'(xn)

一點數學運算,可以算出 Xn+1 = Xn - f(Xn)/f'(Xn) (點斜式寫出紅線方程,令Y=0 即可得出 Xn+1了。

初始值可以隨便挑選,只要迭代次數夠多,總能得到接近的結果。


一個例子——用python實現,求參數n的平方根:

平方根的話,相當於 給定y,函數  f(x) = x^2-y ,求零點x ,代入上面的模型,得 迭代公示   Xn+1 = 1/2 * ( Xn + Y/Xn ) 。

附代碼:

import math

def Newton_iteration_on_Sqrt( n ):
    """ Sqrt(n) by Newton_iteration """
    result = 1 
    for i in range(10):
        result = (1 / 2) * (result + n / result)
    return result

print Newton_iteration_on_Sqrt( 13 )

迭代10次已經很精確了。


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