C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。

一般来说, 牛顿法主要应用在两个方面,
1, 求方程的根; 2, 最优化。
1,求方程的根
其原理便是使用泰勒展开,然后去线性部分,即:
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片
(1)

然后令上式等于0,则有:
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片
(2)

经过不断迭代:
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片
(3)

当精度达到要求的时候停止迭代。
【C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。】 迭代示意图如上所示。
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片


2,最优化

最优化一般是求极大或极小问题,这可以转变为求导数零点,然后转变为求方程的根的情形。
即f' = 0;
把f(x)用泰勒公式展开到二阶,即:
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片
(4)

等号左边和f(x)近似相等,抵消。然后对C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片
求导,得到:
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片
(5)

更进一步:
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片
(6)

然后得到迭代式子:
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片
(7)

以上只针对单变量进行讨论,如果对多变量就要引入雅克比矩阵和海森矩阵
简单介绍一下二者,雅克比矩阵为函数对各自变量的一阶导数,海森矩阵为函数对自变量的二次微分。形式分别如下:
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片


C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片


把两个矩阵代入(7)中
C++|牛顿法以及雅克比矩阵、海森矩阵(Hessian)数学方法。
文章图片


参考文献:
Newton's method -- wikipedia

Jacobian矩阵和Hessian矩阵

    推荐阅读