牛頓迭代法(newton』s method)又稱為牛頓-拉夫遜(拉弗森)方法(newton-raphson method)。它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。
既然牛頓迭代法能夠用來求解方程的根,那麼最好還是以方程 x2
=n為例,來試著求解它的根。
為此。令f(
x)=x
2−n, 也就是相當於求解 f(
x)=0
的解。如上圖所看到的。
首先隨便找乙個初始值 x0
,假設 x0
不是解,做乙個經過 (x
0,f(
x0))
這個點的切線,與
x軸的交點為x1
。相同的道理。假設 x1
不是解,做乙個經過(x
1,f(
x1))
這個點的切線,與
x軸的交點為x2
。以此類推。以這種方式得到的xi
會無限趨近於 f(
x)=0
的解。 推斷x
i是否是f(
x)=0
的解有兩種方法: 一是直接計算f(
xi)的值推斷是否為
0,二是推斷前後兩個解xi
和xi−
1是否無限接近。 經過(
xi,f
(xi)
)這個點的切線方程為f(
x)=f
(xi)
+f′(
xi)(
x−xi
)當中。f′
(x)為
f(x)
的導數,本題中為2x
。令切線方程等於
0。就可以求出xi
+1=x
i−f(
xi)f
′(xi
)繼續化簡 xi
+1=x
i−x2
i−n2
xi=x
i−xi
2+n2
xi=x
i2+n
2xi
基於上述迭代公式,我們其實給出了乙個求平方根的演算法。其實,這也的確是非常多語言中內建的開平方函式的實現方法。
leetcode上也有一道經典面試題目涉及到開平方函式的實現。例如以下
基於我們已經給出的牛頓迭代法,以下就可來程式設計解決該問題了。演示樣例**例如以下
class solution while (abs(cur - pre) > 0.00001);
return
int(cur); }};
Hession矩陣與牛頓迭代法
1 求解方程。並不是所有的方程都有求根公式,或者求根公式很複雜,導致求解困難。利用牛頓法,可以迭代求解。原理是利用泰勒公式,在x0處展開,且展開到一階,即f x f x0 x x0 f x0 求解方程f x 0,即f x0 x x0 f x0 0,求解x x1 x0 f x0 f x0 因為這是利用...
機器學習日常2 牛頓迭代法原理與程式設計
牛頓迭代法 newton s method 又稱為牛頓 拉夫遜 拉弗森 方法 newton raphson method 它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。既然牛頓迭代法可以用來求解方程的根,那麼不妨以方程 x2 nx2 n 為例,來試著求解它的根。為此。令f x x...
三進製與一道經典的砝碼問題
現在我們普遍使用十進位制進行數 算,大概是源於我們的祖先喜歡用手指來計數,畢竟數學首先是一種實用的工具。另一種常使用的進製是二進位制,在計算機運算之中。日常生活中好像沒有三進製的立足之處。1個季度是3個月,應是三進製,可是我們說1年是4個季度,而不是11個季度。交通訊號的紅綠黃的三種狀態可以表示0 ...