當迭代次數夠多的時候,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次已經很精確了。