最優化理論與算法------牛頓法(附Matlab實現):

一、寫在最前:

本教程只是簡單在應用層面說明一下相關算法,嚴謹的數學知識,請你們參考最下面參考書目,後期有精力會進行細化,先佔個坑,你們有問題能夠留言聯繫。html

二、基本知識:

泰勒展開式爲git

\[\begin{aligned} f(x) &=\frac{1}{0 !} f\left(x_{0}\right) \\ &+\frac{1}{1 !}\left(x-x_{0}\right) f^{\prime}\left(x_{0}\right) \\ &+\frac{1}{2 !}\left(x-x_{0}\right)^{2} f^{\prime \prime}\left(x_{0}\right) \\ &+\cdots \\ &+\frac{1}{n !}\left(x-x_{0}\right)^{n} f^{(n)}\left(x_{0}\right) \\ &+R_{n} \end{aligned}\tag{1} \]

牛頓法的基本思想是,在極小點附件用二階 Taylor多項式算法

\[\begin{aligned} f(x) &=\frac{1}{0 !} f\left(x_{0}\right) +\frac{1}{1 !}\left(x-x_{0}\right) f^{\prime}\left(x_{0}\right) +\frac{1}{2 !}\left(x-x_{0}\right)^{2} f^{\prime \prime}\left(x_{0}\right) \end{aligned} \tag{2} \]

近似目標函數\(f(x)\),進而求出極小點的估計值。函數

牛頓法實現的動圖以下所示:優化

爲了便於如下討論時符號的統一,重寫公式(2)以下所示:spa

\[\varphi(x)=f\left(x^{(k)}\right)+f^{\prime}\left(x^{(k)}\right)\left(x-x^{(k)}\right)+\frac{1}{2} f^{\prime \prime}\left(x^{(k)}\right)\left(x-x^{(k)}\right)^{2} \tag{3} \]

對(3)式求導:3d

\[\varphi^{\prime}(x)=f^{\prime}\left(x^{(k)}\right)+f^{\prime \prime}\left(x^{(k)}\right)\left(x-x^{(k)}\right)=0 \tag{4} \]

令(4)式爲0,既能夠獲得切線與\(x\)軸交點:調試

\[x^{(k+1)}=x^{(k)}-\frac{f^{\prime}\left(x^{(k)}\right)}{f^{\prime \prime}\left(x^{(k)}\right)} \]

由此能夠獲得一系類的\(x^{(k)}\),逐漸逼近真實最小值。htm

三、程序框圖:

程序流程圖

四、算例:

\(\min \;f(x) = 4x_1^2 + x_2^2 - x_1^2{x_2}\)blog

初始點:\({x_A} = {(1,1)^T}\),
精度要求:\(\varepsilon = {10^{ - 3}}\)

\[\begin{array}{l}f(x) = 4x_1^2 + x_2^2 - x_1^2{x_2}\\\nabla f(x) = {\left( {8{x_1} - 2{x_1}{x_2},\;2{x_2} - x_1^2} \right)^T}\\{\nabla ^2}f(x) = \left( \begin{array}{l}8 - 2{x_2}\quad - 2{x_1}\\\; - 2{x_1}\quad \quad 2\end{array} \right)\end{array} \]

進行迭代計算:

表格

五、Matlab求解(調試環境2016a):

如算例4要求所示:

求得:

\[\begin{array}{l}x = {[ - 0.1586 \times e - 4, - 0.1631 \times e - 4]^T}\\result = 1.2719e - 6\end{array} \]

結果與手算的吻合。
全套下載連接:包含文檔、PPT、Matlab源代碼等等:

https://gitee.com/a_moment_of_dodge/optimization_theory_matlab

六、優缺點:

優勢:

•Newton法產生的點列\(x^k\)若收斂,則收斂速度快,具備至少二階收斂速率

•Newton法具備二次終止性

缺點:

•可能會出如今某步迭代時,目標函數值上升

•當初始點遠離極小點時,牛頓法產生的點列可能不收斂,或者收斂到鞍點,或者Hesse矩陣不可逆,沒法計算

•須要計算Hesse矩陣的逆矩陣,計算量大

七、參考:

常見的幾種最優化方法(梯度降低法、牛頓法、擬牛頓法、共軛梯度法等)http://www.javashuo.com/article/p-wxhlukmx-n.html

最優化理論與算法(第二版) 陳寶林 編著

相關文章
相關標籤/搜索