牛頓迭代法

2021-07-03 15:59:00 字數 1410 閱讀 8198

目前接觸到的牛頓迭代法主要應用於兩個方面:(1)方程求根問題(2)最優化問題。

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),因為這是利用泰勒公式的一階展開,f(x) = f(x0)+(x-x0)f'(x0)處並不是完全相等,而是近似相等,這裡求得的x1並不能讓f(x)=0,只能說f(x1)的值比f(x0)更接近f(x)=0,於是乎,迭代求解的想法就很自然了,可以進而推出x(n+1)=x(n)-f(x(n))/f'(x(n)),通過迭代,這個式子必然在f(x*)=0的時候收斂。整個過程如下圖:

2、牛頓法用於最優化

在最優化的問題中,線性最優化至少可以使用單純行法求解,但對於非線性優化問題,牛頓法提供了一種求解的辦法。假設任務是優化乙個目標函式f,求函式f的極大極小問題,可以轉化為求解函式f的導數f'=0的問題,這樣求可以把優化問題看成方程求解問題(f'=0)。剩下的問題就和第一部分提到的牛頓法求解很相似了。

這次為了求解f'=0的根,把f(x)的泰勒展開,展開到2階形式:

這個式子是成立的,當且僅當 δx 無線趨近於0。此時上式等價與:

求解:

得出迭代公式:

一般認為牛頓法可以利用到曲線本身的資訊,比梯度下降法更容易收斂(迭代更少次數),如下圖是乙個最小化乙個目標方程的例子,紅色曲線是利用牛頓法迭代求解,綠色曲線是利用梯度下降法求解。

在上面討論的是2維情況,高維情況的牛頓迭代公式是:

其中h是hessian矩陣,定義為:

高維情況依然可以用牛頓迭代求解,但是問題是hessian矩陣引入的複雜性,使得牛頓迭代求解的難度大大增加,但是已經有了解決這個問題的辦法就是quasi-newton methond,不再直接計算hessian矩陣,而是每一步的時候使用梯度向量更新hessian矩陣的近似.

3、牛頓迭代法應用

應用牛頓迭代法求解方根,只需要迭代幾次便可以得到相當精確的結果。

首先設x^m=a,

因此應用牛頓迭代法我們可以快速尋找平方根,下面的這種方法可以很有效地求出根號a的近似值:首先隨便猜想乙個近似值x,然後不斷令x等於x和a/x的平均數即(x+a/x)/2,迭代個六七次後x的值就已經相當精確了。(x+a/x)/2的迭代公式我們可以利用牛頓迭代法求解f(x)=x^2-a的0點的迭代公式推導出。

const double eps = 1e-6;

double sqrt(double x)

牛頓迭代法

創新工廠的筆試題 不用庫函式sqrt 求乙個整型數n的開方,要求精度達到0.001即可。在這裡首先介紹一下牛頓迭代法 假設乙個方程為 f x 0 那麼假設其解為x0,則用泰勒級數展開之後可得 f x f x0 f x0 x x0 0 其中x為其近似解。根據上式推導出 x x0 f x0 f x0 這...

牛頓迭代法

欲求某方程 f x 0 的根,按照以下步驟進行求解 令x0 1 也可以選擇其他值 i 0,1,2 1 求出 f xi 和 導數f xi 2 令 x i 1 xi f xi f xi 3 將 x i 1 帶入方程 f x 計算方程值,當方程值與目標值的誤差小於預定值時,退出演算法輸出 x i 1 即為...

牛頓迭代法

今天,沉浸在神犇部落格中的我,看到z姐姐在群裡發的乙個還很有意思的問題 不用庫函式怎麼開根,這題好整啊,頓時感覺到可以從大佬的部落格中解脫一會了 逃 這個問題是很標準的牛頓迭代問題,第一次研究它的時候應該是在大一上學期吧,當時我第一次對一些庫函式的實現產生了好奇 這種好奇止於禽獸的sqrt原始碼 這...