拉格朗日乘子法从0到1

如何理解拉格朗日乘子法

问题引出,与原点最短距离

假设有方程

x 2 y = 3 x^2y = 3 x2y=3

对应图像如下:

在这里插入图片描述

现在我们想求其上的点与原点的最短距离:

在这里插入图片描述

这里介绍一种解题思路。首先,与原点距离为 α \alpha α的点全部在半径为 α \alpha α的圆上:

在这里插入图片描述

那么,我们逐渐扩大圆的半径:

在这里插入图片描述

显然,第一次与 x 2 y = 3 x^2y = 3 x2y=3 相交的点就是距离原点最近的点:

在这里插入图片描述

此时,圆和曲线相切,也就是在该点切线相同:

在这里插入图片描述

至此,我们分析出了:在极值点,圆与曲线相切!

问题延伸:等高线

为了继续解题,需要引入等高线。这些同心圆:

在这里插入图片描述

上图可看做是 f ( x , y ) = x 2 + y 2 f(x,y) = x^2 + y^2 f(x,y)=x2+y2 的等高线

在这里插入图片描述

根据梯度的性质,梯度向量:

∇ f = ( ∂ f ∂ x ∂ f ∂ y ) = ( 2 x 2 y ) \nabla f = \left (\begin{aligned} \frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y} \end{aligned}\right) = \left (\begin{aligned} 2x \\ 2y \end{aligned}\right) f= xfyf =(2x2y)

是等高线的法线:

在这里插入图片描述

另一个函数 g ( x , y ) = x 2 y g(x,y) = x^2y g(x,y)=x2y 的等高线是:

在这里插入图片描述

其中 x 2 y = 3 x^2y = 3 x2y=3 就是其中值为3的等高线:

在这里插入图片描述

因此,梯度向量:

∇ g = ( ∂ g ∂ x ∂ g ∂ y ) = ( 2 x y x 2 ) \nabla g = \left (\begin{aligned} \frac{\partial g}{\partial x} \\ \frac{\partial g}{\partial y} \end{aligned}\right) = \left (\begin{aligned} 2xy \\ x^2 \end{aligned}\right) g= xgyg =(2xyx2)

和曲线 x 2 y = 3 x^2y = 3 x2y=3 是垂直关系:

在这里插入图片描述

梯度向量是等高线的法线,更准确地表述是:梯度与等高线的切线垂直!

拉格朗日乘子法

求解

根据之前的两个分析:

{ 在极值点,圆与曲线相切 梯度与等高线的切线垂直 \left \{ \begin{aligned} 在极值点,圆与曲线相切 \\梯度与等高线的切线垂直 \end{aligned} \right. {在极值点,圆与曲线相切梯度与等高线的切线垂直

综合可知,在相切点,圆的梯度向量和曲线的梯度向量平行:

在这里插入图片描述

也就是梯度向量平行,用数学符号表示为:

∇ f = λ ∇ g \nabla f = \lambda \nabla g f=λg 其中 λ \lambda λ 表示乘以合适的系数使方程左右相等。

还必须引入 x 2 y = 3 x^2y = 3 x2y=3这个条件,否则这么多等高线,不知道指的是哪一根:

在这里插入图片描述

因此联立方程:

{ ∇ f = λ ∇ g x 2 y = 3 \left \{ \begin{aligned} &\nabla f = \lambda \nabla g \\&x^2y = 3 \end{aligned} \right. {f=λgx2y=3

展开:

{ ( 2 x 2 y ) = λ ( 2 x y x 2 ) x 2 y = 3 \left \{ \begin{aligned}&\left ( \begin{aligned} 2x \\ 2y\end{aligned}\right) = \lambda \left ( \begin{aligned}2xy \\ x^2\end{aligned}\right) \\&x^2y = 3 \end{aligned} \right. (2x2y)=λ(2xyx2)x2y=3

{ 2 x = λ 2 x y 2 y = λ x 2 x 2 y = 3 \left \{ \begin{aligned} & 2x = \lambda 2xy \\ &2y = \lambda x^2 \\&x^2y = 3 \end{aligned} \right. 2x=λ2xy2y=λx2x2y=3

三元二次方程,求解可得:

{ x ≈ ± 1.61 y ≈ 1.1 λ ≈ 0.87 \left \{ \begin{aligned} &x \approx \pm 1.61 \\ &y \approx 1.1 \\&\lambda \approx 0.87 \end{aligned} \right. x±1.61y1.1λ0.87

定义

要求函数 f 在 g 约束下的机制这种问题可以表述为:

{ m i n f s . t .    g = 0 \left \{ \begin{aligned} &min f \\ &s.t. \ \ g = 0 \end{aligned} \right. {minfs.t.  g=0

s . t . s.t. s.t. 意思是subject to,服从于,约束于的意思。

可以列出方程组求解:

{ ∇ f = λ ∇ g g = 0 \left \{ \begin{array}{c} &\nabla f = \lambda \nabla g \\&g = 0 \end{array} \right. {f=λgg=0

用这个定义来翻译下刚才的例子,要求:

{ f ( x , y ) = x 2 + y 2 g ( x , y ) = x 2 y − 3 \left \{ \begin{array}{c} f(x,y) = x^2 + y^2 \\g(x,y) = x^2y - 3 \end{array} \right. {f(x,y)=x2+y2g(x,y)=x2y3

{ m i n f ( x , y ) s . t .    g ( x , y ) = 0 \left \{ \begin{array}{c} min f(x,y) \\ s.t. \ \ g(x,y) = 0 \end{array} \right. {minf(x,y)s.t.  g(x,y)=0

联立方程进行求解:

{ ∇ f ( x , y ) = λ ∇ g ( x , y ) g ( x , y ) = 0 \left \{ \begin{aligned}&\nabla f(x,y) = \lambda \nabla g(x,y) \\ &g(x,y) = 0 \end{aligned} \right. {f(x,y)=λg(x,y)g(x,y)=0

变形

这个定义还有种变形也比较常见,要求:

{ m i n f s . t .    g = 0 \left \{ \begin{aligned} &min f \\ &s.t. \ \ g = 0 \end{aligned} \right. {minfs.t.  g=0

定义:

F = f + λ g F = f + \lambda g F=f+λg

求解下面方程组即可得到答案:

( ∂ F ∂ x ∂ F ∂ y ∂ F ∂ λ ) = ( 0 0 0 ) \left ( \begin{aligned} \\ \frac{\partial F}{\partial x} \\ \frac{\partial F}{\partial y}\\ \frac{\partial F}{\partial \lambda} \\ \end{aligned}\right) = \left( \begin{aligned} 0 \\ 0 \\0 \end{aligned}\right) xFyFλF = 000

把等式左边的偏导算出来就和上面的定义是一样的了:

( ∂ F ∂ x ∂ F ∂ y ∂ F ∂ λ ) = ( 2 x + λ 2 x y 2 y + λ x 2 x 2 y − 3 ) = ( 0 0 0 ) \left ( \begin{aligned} \frac{\partial F}{\partial x} \\ \frac{\partial F}{\partial y}\\ \frac{\partial F}{\partial \lambda} \end{aligned}\right) = \left ( \begin{aligned} & 2x + \lambda 2xy \\ &2y + \lambda x^2\\ &x^2y - 3 \end{aligned}\right)= \left( \begin{aligned} 0 \\ 0 \\0 \end{aligned}\right) xFyFλF = 2x+λ2xy2y+λx2x2y3 = 000

求解结果是:

{ x ≈ ± 1.61 y ≈ 1.1 λ ≈ − 0.87 \left \{ \begin{aligned} &x \approx \pm 1.61 \\ &y \approx 1.1 \\&\lambda \approx -0.87 \end{aligned} \right. x±1.61y1.1λ0.87

和上面的求解结果略有差异, λ \lambda λ 是引入的,正负无关紧要,只需要将g(x,y)调整一下即可

{ f ( x , y ) = x 2 + y 2 g ( x , y ) = 3 − x 2 y \left \{ \begin{array}{c} f(x,y) = x^2 + y^2 \\g(x,y) = 3 - x^2y \end{array} \right. {f(x,y)=x2+y2g(x,y)=3x2y

  • 17
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
拉格朗日乘子法是一种优化算法,应用于具有约束条件的优化问题。它的原理是基于拉格朗日乘子的概念,在求解有约束问题的时候,将约束条件转化为目标函数的一部分,通过求解该新的目标函数,得到问题的最优解。 在使用拉格朗日乘子法时,首先根据问题的约束条件构造拉格朗日函数。拉格朗日函数是由目标函数和约束条件组成的,目标函数会被调整为加入拉格朗日乘子与约束条件的乘积,同时每个约束条件都会有一个对应的拉格朗日乘子。然后,通过求取拉格朗日函数的偏导数,将其等于0,可以得到一组方程,包括目标函数的梯度和约束条件的梯度。将这些方程联立求解,就可以得到问题的最优解。 对于拉格朗日函数的求解,可以采用数值方法,例如使用fmincon算法。fmincon是一种非线性约束最小化算法,可以求解具有非线性约束的优化问题。它的实现基于拉格朗日乘子法,通过迭代的方式逼近最优解。在每一次迭代中,通过求解一组子问题,不断调整拉格朗日乘子的值,直到找到最优解为止。 总之,拉格朗日乘子法是一种基于拉格朗日函数的优化算法,通过将约束条件转化为目标函数的一部分,再利用数值方法求解最优解。而fmincon算法则是一种具体的数值方法实现,可以应用于求解具有非线性约束的优化问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MathDance

代码点亮人生,代码改变世界……

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值