牛頓法 主要有兩方面的應用:
求方程的根;
求解最優化方法;
一. 為什麼要用牛頓法求方程的根?
假設 f(x) = 0 為待求解方程,利用傳統方法求解,牛頓法求解方程的公式:
f
(x0+δx) = f
(x0) + f′(x0) δx
即 f(x) = f
(x0) + f′(x0)
(x-x0)
這個公式就是一階泰勒展式,f′(x0) 表示 f(x) 在 x0 點的斜率 ,當x方向增量(δx)比較小時,y方向增量(δy)可以近似表示為 斜率(導數)*x方向增量(f′(x0) δx) ,令 f(x) = 0,我們能夠得到 迭代公式:
x = x0 - f(x0) / f′(x0) => xn+1 = xn - f(xn) / f′(xn)
通過逐次迭代,牛頓法 將逐步逼近最優值,也就是方程的解。
二. 最優化問題
針對上面問題進行擴充套件:
解決 f(x) = 0 的問題,我們用了一階泰勒展開:
f
(x) = f
(x0) + f'
(x0)*(x-x0) + o
( (x-x0)^2 )
去掉末位高階展開項,代入x = x0+δx,得到:
f
(x) = f
(x0+δx) = f
(x0) + f′(x0) δx
那麼 要解決 f′(x) = 0 的問題,我們就需要二階泰勒展開:
f
(x) = f
(x0) + f'
(x0)*(x-x0) + 0.5*f''
(x0)*(x-x0)^2 + o
( (x-x0)^3 )
去掉末位高階展開項,代入x = x0+δx,得到:
f
(x) = f
(x0+δx) = f
(x0) + f′(x0)δx + 0.5 * f′′(x0)
(δx)^2
求導計算:對δx求導,所以得到:
0 = f′(x0) + f′′(x0) (δx)
==>
0 = f′(x0) + f′′(x0) (x−x0)
整理:
f′(x0) + f′′(x0)(x−x0) = 0
=>
x - x0 = − f′(x0) / f′′(x0)
=>
x = x0 − f′(x0) / f′′(x0)
=>
進一步得到:
xn+1 = xn - f'(xn) / f'
'(xn)
三. 牛頓法 與 hessian矩陣的關係
以上只針對單變數進行討論,如果對多變數就要引入雅克比矩陣和海森矩陣
簡單介紹一下二者,雅克比矩陣為函式對各自變數的一階導數,海森矩陣為函式對自變數的二次微分。形式分別如下:
Hessian矩陣與牛頓法
牛頓法主要有兩方面的應用 1.求方程的根 2.求解最優化方法 一.為什麼要用牛頓法求方程的根?問題很多,牛頓法 是什麼?目前還沒有講清楚,沒關係,先直觀理解為牛頓法是一種迭代求解方法 newton童鞋定義的方法 假設f x 0為待求解方程,利用傳統方法求解,牛頓法求解方程的公式 f x0 x f x...
牛頓法與擬牛頓法
看了幾篇關於牛頓法的相關介紹,感覺非常好,尤其是擬牛頓條件的推導以及dfp等演算法的推導過程十分詳細明了。這裡記錄一下,方便之後查閱 牛頓法 擬牛頓條件 dfp演算法 bfgs演算法 f bfgs演算法 1 牛頓法 newton s method 牛頓法是一種在實數域和複數域上近似求解方程的方法。方...
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 因為這是利用...