最优化理论与算法------牛顿法(附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