文章目录

  • 牛顿法求解函数零点
  • 基本思想
  • 形象理解
  • 牛顿法求解函数极值点
  • 一维情况
  • 高维情况
  • 求极值点时与梯度下降法比较
  • 相同点
  • 不同点
  • Reference


牛顿法求解函数零点

基本思想

设有一个连续可导函数 python求线性函数极值 python求函数极值点_python求线性函数极值,为了求解方程python求线性函数极值 python求函数极值点_python求线性函数极值_02,可采用这样的方法来近似求解,因为python求线性函数极值 python求函数极值点_牛顿法_03python求线性函数极值 python求函数极值点_梯度下降法_04处的泰勒展开式为:
python求线性函数极值 python求函数极值点_python求线性函数极值_05
考虑到一次方程容易解,而二次以及以上高次方程不一定有解,取泰勒展开式的线性部分来近似python求线性函数极值 python求函数极值点_牛顿法_03有:
python求线性函数极值 python求函数极值点_极值_07
python求线性函数极值 python求函数极值点_极值_08不等于0,将python求线性函数极值 python求函数极值点_python求线性函数极值_02代入上式可得:
python求线性函数极值 python求函数极值点_极值_10
python求线性函数极值 python求函数极值点_极值_11是方程python求线性函数极值 python求函数极值点_python求线性函数极值_02的一次近似根,由此得到一个n次迭代式:
python求线性函数极值 python求函数极值点_极值_13
利用python求线性函数极值 python求函数极值点_python求线性函数极值_14求解时,先对方程python求线性函数极值 python求函数极值点_python求线性函数极值_02的根猜一个初始的估计值python求线性函数极值 python求函数极值点_牛顿法_16,可以证明如果python求线性函数极值 python求函数极值点_牛顿法_03是连续的,并且待求的零点是孤立的,那么在零点周围存在一个区域,只要初始猜测值python求线性函数极值 python求函数极值点_牛顿法_16位于这个邻近区域内,进行多次迭代后那么牛顿法必定收敛。

形象理解

python求线性函数极值 python求函数极值点_梯度下降法_19


如上图所示,过python求线性函数极值 python求函数极值点_牛顿法_20python求线性函数极值 python求函数极值点_牛顿法_03的切线,切线与 python求线性函数极值 python求函数极值点_极值_22 轴交点为 python求线性函数极值 python求函数极值点_极值_11, 过python求线性函数极值 python求函数极值点_梯度下降法_24继续做python求线性函数极值 python求函数极值点_牛顿法_03的切线,与 python求线性函数极值 python求函数极值点_极值_22 轴交点为 python求线性函数极值 python求函数极值点_极值_27 …不断迭代, python求线性函数极值 python求函数极值点_梯度下降法_28的值将趋近于方程python求线性函数极值 python求函数极值点_python求线性函数极值_02的根。

牛顿法求解函数极值点

一维情况

对于python求线性函数极值 python求函数极值点_牛顿法_03的泰勒展开式,若取到二次项来近似,则:
python求线性函数极值 python求函数极值点_python求线性函数极值_31
两边对python求线性函数极值 python求函数极值点_极值_22求导,有:
python求线性函数极值 python求函数极值点_python求线性函数极值_33
函数python求线性函数极值 python求函数极值点_牛顿法_03的极值点满足python求线性函数极值 python求函数极值点_梯度下降法_35,代入上式中,有:
python求线性函数极值 python求函数极值点_牛顿法_36
由此可以得到一个求解方程python求线性函数极值 python求函数极值点_python求线性函数极值_37的迭代式:
python求线性函数极值 python求函数极值点_梯度下降法_38

高维情况

上述描述的是自变量python求线性函数极值 python求函数极值点_极值_22是一维的情况,当python求线性函数极值 python求函数极值点_极值_22是一个多维向量时,同样有:
python求线性函数极值 python求函数极值点_牛顿法_41
其中python求线性函数极值 python求函数极值点_python求线性函数极值_42python求线性函数极值 python求函数极值点_牛顿法_03python求线性函数极值 python求函数极值点_梯度下降法_28处的梯度,python求线性函数极值 python求函数极值点_梯度下降法_45python求线性函数极值 python求函数极值点_牛顿法_03python求线性函数极值 python求函数极值点_梯度下降法_28处的海森矩阵(高维函数的二阶导)。
当然,为了在迭代的时候使选取的python求线性函数极值 python求函数极值点_梯度下降法_28落在导数为0的点附近,记python求线性函数极值 python求函数极值点_极值_49
python求线性函数极值 python求函数极值点_python求线性函数极值_50加一个类似于学习率的系数python求线性函数极值 python求函数极值点_极值_51有:
python求线性函数极值 python求函数极值点_牛顿法_52
每次迭代时需要选择合适的python求线性函数极值 python求函数极值点_极值_51

求极值点时与梯度下降法比较

相同点

和梯度下降法一样,牛顿法寻找的也是导数为0的点,这不一定是极值点,因此会面临局部极小值和鞍点问题。

不同点

与梯度下降法相比,牛顿法求解函数极值点时需要求解海森矩阵的逆矩阵,当python求线性函数极值 python求函数极值点_极值_22的维度较高时,这个计算过程会很费时,不如梯度下降法快。