牛顿法总结

1. 牛顿法用于求方程解

牛顿法解方程是用切线来逐渐逼近方程的解如下图所示:
在这里插入图片描述
假如随机初始化的点为A点,做A点的切线与x轴相交于A’点,在A’点做垂线于函数曲线相交于B点,然后以B点做切线,如此循环下去,可以看到切线与x轴的交点逐渐向方程的解靠拢。

设随机初始化的点为 ( x n , f ( x n ) ) (x_n, f(x_n)) (xn,f(xn)),则切线方程为:

y − f ( x n ) = f ′ ( x n ) ( x − x n ) y-f(x_n) = f^{'}(x_n)(x-x_n) yf(xn)=f(xn)(xxn)

切线与x轴的交点为(令y=0)

x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n-\frac{f(x_n)}{f^{'}(x_n)} xn+1=xnf(xn)f(xn)

这就是迭代方程

参考:如何通俗易懂地讲解牛顿迭代法?

2. 牛顿法用于最优化

应用于最优化的牛顿法是以迭代的方式来求解一个函数的最优解, 取泰勒展开式的二次项,即用𝜙(𝑥)来代替𝑓(𝑥)

ϕ ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 f ′ ′ ( x 0 ) ( x − x 0 ) 2 \phi(x)=f\left(x_{0}\right)+f^{\prime}\left(x_{0}\right)\left(x-x_{0}\right)+\frac{1}{2} f^{\prime \prime}\left(x_{0}\right)\left(x-x_{0}\right)^{2} ϕ(x)=f(x0)+f(x0)(xx0)+21f(x0)(xx0)2

最优点的选择是𝜙′(𝑥)=0的点,对上式求导

ϕ ′ ( x ) = f ′ ( x 0 ) + f ′ ′ ( x 0 ) ( x − x 0 ) \phi^{\prime}(x)=f^{\prime}\left(x_{0}\right)+f^{\prime \prime}\left(x_{0}\right)\left(x-x_{0}\right) ϕ(x)=f(x0)+f(x0)(xx0)

所以,最优化的牛顿迭代公式是:

x n + 1 = x n − f ′ ( x n ) f ′ ′ ( x n ) x_{n+1}=x_{n}-\frac{f^{\prime}\left(x_{n}\right)}{f^{\prime \prime}\left(x_{n}\right)} xn+1=xnf(xn)f(xn)

参考: 牛顿法和牛顿迭代法

3. 总结

牛顿法用于求方程解时迭代式为:
x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_{n}-\frac{f\left(x_{n}\right)}{f^{\prime}\left(x_{n}\right)} xn+1=xnf(xn)f(xn)

巧妙记忆方法 ϕ ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) \phi(x)=f\left(x_{0}\right)+f^{\prime}\left(x_{0}\right)\left(x-x_{0}\right) ϕ(x)=f(x0)+f(x0)(xx0) ϕ ( x ) \phi(x) ϕ(x)=0即可推导出来

牛顿法用于最优化时迭代为:
x n + 1 = x n − f ′ ( x n ) f ′ ′ ( x n ) x_{n+1}=x_{n}-\frac{f^{\prime}\left(x_{n}\right)}{f^{\prime \prime}\left(x_{n}\right)} xn+1=xnf(xn)f(xn)

高维下的牛顿优化法:
X n + 1 = X n − f ′ ( X n ) f ′ ′ ( X n ) = X n − J f ( X n ) H ( X n ) = X n − H − 1 ( X n ) ⋅ J f ( X n ) \begin{aligned} X_{n+1} &=X_{n}-\frac{f^{\prime}\left(\mathrm{X}_{n}\right)}{f^{\prime \prime}\left(\mathrm{X}_{n}\right)}=X_{n}-\frac{J_{f}\left(\mathrm{X}_{n}\right)}{H\left(\mathrm{X}_{n}\right)} =X_{n}-H^{-1}\left(\mathrm{X}_{n}\right) \cdot J_{f}\left(\mathrm{X}_{n}\right) \end{aligned} Xn+1=Xnf(Xn)f(Xn)=XnH(Xn)Jf(Xn)=XnH1(Xn)Jf(Xn)

其中, J J J 定义为雅可比矩阵,对应一阶偏导数
J f ( X n ) = [ ∂ y 1 ∂ x 1 ⋯ ∂ y 1 ∂ x n ⋮ ⋱ ⋮ ∂ y m ∂ x 1 ⋯ ∂ y m ∂ x n ] J_{f}\left(X_{n}\right)=\left[\begin{array}{ccc} \frac{\partial y_{1}}{\partial x_{1}} & \cdots & \frac{\partial y_{1}}{\partial x_{n}} \\ \vdots & \ddots & \vdots \\ \frac{\partial y_{m}}{\partial x_{1}} & \cdots & \frac{\partial y_{m}}{\partial x_{n}} \end{array}\right] Jf(Xn)=x1y1x1ymxny1xnym

H H H 为 Hessian矩阵,对应二阶偏导数
H ( f ) = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] H(f)=\left[\begin{array}{cccc} \frac{\partial^{2} f}{\partial x_{1}^{2}} & \frac{\partial^{2} f}{\partial x_{1} \partial x_{2}} & \cdots & \frac{\partial^{2} f}{\partial x_{1} \partial x_{n}} \\ \frac{\partial^{2} f}{\partial x_{2} \partial x_{1}} & \frac{\partial^{2} f}{\partial x_{2}^{2}} & \cdots & \frac{\partial^{2} f}{\partial x_{2} \partial x_{n}} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^{2} f}{\partial x_{n} \partial x_{1}} & \frac{\partial^{2} f}{\partial x_{n} \partial x_{2}} & \cdots & \frac{\partial^{2} f}{\partial x_{n}^{2}} \end{array}\right] H(f)=x122fx2x12fxnx12fx1x22fx222fxnx22fx1xn2fx2xn2fxn22f


牛顿法与梯度下降比较

梯度下降法和牛顿法相比,两者都是迭代求解,不过梯度下降法是梯度求解,而牛顿法是用二阶的海森矩阵的逆矩阵求解。相对而言,使用牛顿法收敛更快(迭代更少次数)。但是每次迭代的时间比梯度下降法长(计算开销大)。

在这里插入图片描述
如图,红色为牛顿法,绿色为梯度下降法

至于为什么牛顿法收敛更快,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部

参考文献

如何通俗易懂地讲解牛顿迭代法?
牛顿法和牛顿迭代法
梯度下降法、牛顿法和拟牛顿法
牛顿法与Hessian矩阵

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Matlab混合牛顿法是一种用于解非线性方程组的数值方法。它采用了牛顿法的高精度和快速收敛性,同时利用了Broyden方法的不需要解雅可比矩阵的特点。 混合牛顿法基于以下的原理:在每一次迭代中,我们通过解方程组的线性近似问题来近似于实际的非线性方程组。具体而言,我们使用雅可比矩阵的逆和当前估计值来构建线性近似问题。然后,解这个近似问题来得到下一个迭代点。通过不断重复这个过程,我们可以逐步逼近方程组的解。 在Matlab中使用混合牛顿法可以通过内置的函数"fminunc"来实现。该函数可以在最小化非线性函数的同时解方程组。用户需要提供目标函数和初始猜测值,并设置一些其他参数,如迭代收敛的条件。然后,该函数将使用混合牛顿法解方程组。 使用Matlab混合牛顿法可以有效地解大多数非线性方程组。它不仅具有高精度和快速收敛性,而且还可以避免计算雅可比矩阵,从而减少计算量和内存需。然而,它也有一些局限性,例如当方程组的解存在奇点或收敛到局部最优解时,可能会出现问题。 总之,Matlab混合牛顿法是一种实用的数值方法,可以有效地解非线性方程组。它在Matlab中被广泛应用于科学、工程和金融等领域的问题解中。 ### 回答2: 混合牛顿法是一种用于解非线性方程组的数值方法。在Matlab中,可以使用该方法来解决非线性方程组的解问题。 混合牛顿法的基本思想是将Newton法和Broyden方法相结合。在每一次迭代中,通过计算雅可比矩阵的逆来更新迭代点,并使用这个更新后的迭代点计算雅可比矩阵。这种方法能够在迭代过程中逐步逼近方程组的解。 Matlab中可以使用'fsolve'函数来实现混合牛顿法解。该函数需要提供一个函数句柄作为输入参数,该函数句柄定义了需要解的非线性方程组。例如: ``` function F = myfun(x) F = [x(1)^2 + x(2)^2 - 1; x(1)^3 - x(2)^3 - x(1)]; end x0 = [0.5; 0.5]; % 初始点 options = optimoptions('fsolve', 'Display', 'iter'); % 设置显示迭代过程 [x, fval, exitflag, output] = fsolve(@myfun, x0, options); ``` 在上述代码中,'myfun'函数定义了需要解的非线性方程组。'fsolve'函数的第一个输入参数是函数句柄'@myfun',第二个输入参数是初始点'x0'。通过设置'optimoptions'函数的参数,可以选择是否显示迭代过程。'fsolve'函数的返回结果包括方程组的解'x'以及其他有关迭代过程的信息。 需要注意的是,混合牛顿法不一定始终收敛于方程组的解,因此在使用时需要审慎选择初始点,并且关注迭代过程中是否出现停滞或发散的情况。 ### 回答3: 混合牛顿法是一种在优化问题中常使用的数值解法,也称为拟牛顿法之一。 在matlab中实现混合牛顿法有几个步骤。首先,需要定义目标函数以及其导数。其次,选择合适的初始点。然后,利用牛顿法的思想,通过迭代计算得到函数的最小值。在每一次迭代中,需要计算目标函数在当前点的值及导数,并根据这些值进行更新。 在每一次迭代中,混合牛顿法使用Broyden-Fletcher-Goldfarb-Shanno(BFGS)方法的一种变种,即DFP公式,来逼近目标函数的海森矩阵的逆。通过这种方法,可以避免直接计算海森矩阵的逆矩阵,从而提高计算效率。 混合牛顿法还可以通过给定一个收敛准则,如目标函数的精度和迭代次数的限制,来确定算法何时停止。当满足收敛准则时,算法停止迭代并给出最优解。 需要注意的是,混合牛顿法对于解决非线性方程组和最优化问题具有很高的效果。由于它不需要计算二阶导数,所以在实际应用中更加灵活和高效。 总结来说,matlab混合牛顿法是一种通过迭代近似海森矩阵的逆矩阵来解优化问题的数值解法。通过合适的初始点和收敛准则,可以得到函数的最小值,并在实际应用中具有较高的效率和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值