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

最优化理论与算法(第二版) 陈宝林 编著

相关文章
相关标签/搜索