優化演算法 牛頓法

2022-08-04 01:12:15 字數 1584 閱讀 2459

牛頓法(英語:newton's method)又稱為牛頓-拉弗森方法(英語:newton-raphson method),它是一種在實數域和複數域上近似求解方程的方法。方法使用函式f(x)的泰勒級數的前面幾項來尋找方程f(x)=0的根。

一般情況對於f(x)是一元二次的情況直接應用求根公式就可以了,但是對於更高次(在5次方以上),沒有求根公式,於是牛頓想了個近似求解的辦法——牛頓法

首先以一元函式為例來說明牛頓法的具體過程

假設我們要求解函式f(x)=0的根,我們首先把函式在

處展開成泰勒級數的形式並取其線性部分:

令g(x)=0,則

g(x)=0的根與f(x)=0的根近似相等,所以我們可以將此次計算看做一次迭代的過程,即:

看下面的定理:

設f(x)在[a,b]滿足

(1) f(a)·f(b)<0

(2) f(x)∈[a,b],f′(x),f″(x)均存在,且f′(x)與f″( x)的符號均保持不變。

(3) f(x)·f″(x)>0, x∈[a,b] 則方程f(x)=0在[a,b]上有且只有乙個實根,由牛頓法迭代公式計算得到的近似解序列收斂於方程 f(x)=0 的根 x*。

通俗的說,如果f(x)及其一階、二階導是連續的,並且待求的零點是孤立的,那麼在零點周圍存在乙個區域,只要初始值位於這個鄰近區域內,那麼牛頓法必定收斂。

下面**形象演示了牛頓法收斂過程

關於牛頓法和梯度下降法的效率對比:

從本質上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到乙個盆地的最底部,梯度下降法每次只從你當前所處位置選乙個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之後,坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠一點,能更快地走到最底部。(牛頓法目光更加長遠,所以少走彎路;相對而言,梯度下降法只考慮了區域性的最優,沒有全域性思想。)

牛頓法應用f(x)求極值的問題中就是將求f(x)的極值可以轉化為求

的解,這時我們會用到f(x)泰勒展開式中的二階偏導數,對於多元函式,其泰勒展開式中的二階項可以寫成如下形式:

其中h(f)是海森矩陣,其形式為

假設我們要求解f(x)在多元條件下的極值

首先需要求

f(x)在

處的包含二階項的泰勒展開式(省去高階無窮小)為

令可得:

解得所以多元函式的梯度更新公式

牛頓法的優缺點總結:

優點:二階收斂,收斂速度快;

缺點:牛頓法是一種迭代演算法,每一步都需要求解目標函式的hessian矩陣的逆矩陣,計算比較複雜。

最優化演算法 牛頓法

牛頓搜尋演算法,參考edwin 最優化導論 7.5章節,演算法採用go語言實現。filename newton search.go author fredric date 2017.09.01 note 牛頓搜尋演算法 history package search import fmt math 根...

最優化演算法 牛頓法

牛頓搜尋演算法,參考edwin 最優化導論 7.5章節,演算法採用go語言實現。filename newton search.go author fredric date 2017.09.01 note 牛頓搜尋演算法 history package search import fmt math 根...

優化演算法2 牛頓法

牛頓法,全稱newton s method。當n 1時,牛頓法的基本思想是 在現有極小點估計值的附近對f x 做二階泰勒展開,進而找到極小點的下乙個估計值。設 為當前的極小值點的估計值,那麼通過二階泰勒 由於求的是最值,應滿足即求得令 則當n 1時,超過二維。二階泰勒展開式可以做推廣。為f的梯度向量...