牛頓迭代法與一道經典程式設計問題

2022-09-17 11:48:10 字數 1433 閱讀 8282

牛頓迭代法(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 ...