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


1、寫在最前:

在此只是簡單在應用層面說明一下相關算法,嚴謹的數學知識,請大家參考最下面參考書目,后期有精力會進行細化,先占個坑。

2、基本知識:

泰勒展開式為

\[\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)如下所示:

\[\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)式求導:

\[\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)}\),逐漸逼近真實最小值。

3、程序框圖:

程序流程圖

4、算例:

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

初始點:\({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} \]

進行迭代計算:

表格

5、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

6、優缺點:

優點:

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

•Newton法具有二次終止性

缺點:

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

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

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

7、參考:

常見的幾種最優化方法(梯度下降法、牛頓法、擬牛頓法、共軛梯度法等)https://www.cnblogs.com/shixiangwan/p/7532830.html

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

最優化理論Matlab

最速下降法:https://www.cnblogs.com/yuhuastone/p/12736609.html

牛頓法:https://www.cnblogs.com/yuhuastone/p/12814752.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM