当前位置: 首页 > article >正文

【小白数学】为什么可以用拉格朗日乘子法求函数的极值【二】

我们在上一篇【小白数学】- 为什么可以用拉格朗日乘子法求函数的极值【一】已经介绍了一种较为“严谨“的方法来说明为什么拉格朗日乘子法可以帮助我们求具有等式约束条件下的函数的极值。虽然在我们的例子中”等式约束“中只有一个等式。但其实很容易推广到多个等式约束的情况。所以这里也就不再赘述。本文主要兑现上一篇博客中提到第二种方法去理解:为什么可以用拉格朗日乘子法求函数的极值。

正式介绍之前,我们先回顾一些基础概念:一元函数和多元的函数的导数;

首先来看一个一元函数 y = x 2 y=x^2 y=x2,该函数上任意一点 x x x的导数的导数 y ′ = d y d x = 2 x y'= \frac{dy}{dx} = 2x y=dxdy=2x 。下图中红色的箭头表示图中A点(1,1)位置导数的方向。

在这里插入图片描述
也可以直观的理解曲线 y = x 2 y=x^2 y=x2在A点的切线的方向就是这个点的导数方向。并且随着 x x x的增大 d y d x = 2 x \frac{dy}{dx}=2x dxdy=2x也不断增大,即对于函数 y = x 2 y=x^2 y=x2 x x x的值越大,其所在点 ( x , y ) (x,y) (x,y)的导数就越大,或者说经过 ( x , y ) (x,y) (x,y)的切线的斜率就越大。

看完了一元函数的导数,我们来看一下二元函数的导数,假设我们有一个二元函数 y = − ( x 1 − a ) 2 − ( x 2 − b ) 2 + c y= -(x_1-a)^2 - (x_2-b)^2 + c y=(x1a)2(x2b)2+c,其中 x 1 , x 2 x_1,x_2 x1,x2为变量,而 a , b , c a,b,c a,b,c为常量,为 y y y取得最大值时候的 x 1 , x 2 x_1, x_2 x1,x2以及 y y y本身的值。

在这里插入图片描述
如果使用更数学的语言来表达就是:
y max ⁡ = max ⁡ ( − ( x 1 − a ) 2 − ( x 2 − b ) 2 + c ) = c a , b = arg ⁡ max ⁡ x 1 , x 2 [ − ( x 1 − a ) 2 − ( x 2 − b ) 2 + c ] \begin{align*} y_{\max} &= \max(-(x_1-a)^2 - (x_2 -b)^2 + c) = c \\ a,b &= \arg \underset{x_1,x_2}{\max} \left [ -(x_1-a)^2 - (x_2-b)^2 + c \right] \end{align*} ymaxa,b=max((x1a)2(x2b)2+c)=c=argx1,x2max[(x1a)2(x2b)2+c]
在看多元函数的导数之前,我们先看一下图中紫色的那一圈圈的线是什么?没错,那是”等高线“。我们专门构造的这个二元函数,实际上是一座”小山“, 山顶的坐标是 ( a , b , c ) (a,b,c) (a,b,c)。在同样的高度( y y y值相同)的山腰上的点,如果练成线,其实就变成了函数 y y y的等高线。

接下来我们再来看多元函数的导数(也称为梯度),是怎么样的:单个变量的导数叫”导数“,一组变量的导数叫”梯度“ (这组变量本身是函数 y y y上的一个点)。在上图中的二元函数中,我们有两个变量 x 1 , x 2 x_1,x_2 x1,x2,那么他们的各自的导数可以表示为 d y d x 1 , d y d x 2 \frac{dy}{dx_1}, \frac{dy}{dx_2} dx1dy,dx2dy,由于 y y y是由 x 1 , x 2 x_1,x_2 x1,x2共同作用生成的,所以我们又用偏导数的形式也表示他们各自的导数 ∂ y ∂ x i \frac{\partial y}{ \partial x_i} xiy ( i = 1 , 2 i=1,2 i=1,2),两者是等价的。所我们定义的这个二元函数的梯度可以表示为: ∇ y = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ] \nabla y = \begin{bmatrix*} \frac{\partial y}{\partial x_1} \\ \frac{\partial y}{\partial x_2} \end{bmatrix*} y=[x1yx2y],显然 ∇ y \nabla y y是一个向量。这个向量指向 y y y变化最剧烈的方向。

那么问题来了:我们先定义了”等高线“,然后又定义了”梯度“,这两者是什么关系?

答:”梯度“垂直于”等高线“,直观理解也很容易:连续等高线上的点具有相同的 y y y值;我们站在这个山坡的等高线上,肯定是朝着与等高线垂直的方向前进, y y y值的变化率最大。

在这里插入图片描述

如上图所示,所有的绿色小箭头都垂直于等高线,其实就是等高线上该点的梯度值。注意到图中有一个点A,经过该点的除了有绿色的箭头还有灰色的箭头,很显然可以看得出来,只有绿色的箭头方向是 y y y值变化最快的方向(也是上山最快的方向),而其他的灰色箭头的方向要么是”下山“,要么是”在周围随意闲逛“的方向。

理解梯度与等高线的关系对于我们接下来介绍的内容非常重要,所以没有看懂的同学建议再仔细看一下图。

说了一大圈,还没有说到拉格朗日乘子问题,下面我们来定义一个可以用拉格朗日乘子法求解的约束条件下的最值问题如下:

假设有函数 f ( x 1 , x 2 ) = − ( x 1 − a ) 2 − ( x 2 − b ) 2 + 4 f(x_1,x_2) = -(x_1-a)^2 - (x_2 - b)^2 + 4 f(x1,x2)=(x1a)2(x2b)2+4,我们要求如下的最优化问题:
max ⁡ f ( x 1 , x 2 ) s . t .   a x 2 − d x 1 − d = 0 a , b , c , d   均为大于 0 的常数 ( 1 ) \begin{align*} & \max f(x_1,x_2) \\ &s.t. \: a x_2 - d x_1 - d = 0 \\ &a,b,c,d\:均为大于0的常数 \end{align*} \qquad (1) maxf(x1,x2)s.t.ax2dx1d=0a,b,c,d均为大于0的常数(1)
在这个最优化问题中,我们发现其本质是求 f ( x 1 , x 2 ) f(x_1, x_2) f(x1,x2)与平面 a x 2 − d x 1 − d = 0 ax_2 - dx_1 -d = 0 ax2dx1d=0的交线(如下图中棕红色的虚线所示)上的最大值。
在这里插入图片描述

我们按照之前找梯度的方法,分别为 f ( x 1 , x 2 ) f(x_1, x_2) f(x1,x2), 约束平面以及两者的交线 L ( x 1 , x 2 ) L(x_1,x_2) L(x1,x2)画出梯度:具体方法为先找等高线,在沿着等高线垂直的方向画梯度的方向。(不过大套路有时候也不好使,比如说垂直平面(与 y y y轴平行)上的点的梯度是什么?建议大家可以阅读这篇介绍梯度定义的文章:梯度的含义)。对于垂直平面上的梯度,其实在我们的场景下,还是只涉及 x 1 , x 2 x_1, x_2 x1,x2两个维度,假设约束条件重新表示为 g ( x 1 , x 2 ) = a x 2 − d x 1 − d g(x_1,x_2)= ax_2 - dx_1 - d g(x1,x2)=ax2dx1d,则平面上每一点的梯度为 [ ∂ g ∂ x 1 , ∂ g ∂ x 2 ] ⊤ [\frac{\partial g}{\partial x_1}, \frac{\partial g}{\partial x_2}]^\top [x1g,x2g],即 [ − d , a ] ⊤ [-d, a]^\top [d,a] (图中黄色箭头所指方向)。

我们注意观察棕色的交线上每一个点,图中我们分别为其标识了 f ( ⋅ ) , g ( ⋅ ) , L ( ⋅ ) f(\cdot), g(\cdot), L(\cdot) f(),g(),L() 三者的梯度(分别使用紫色、黄色以及绿色),我们注意到由于 g ( ⋅ ) g(\cdot) g()是垂直平面,而 f ( ⋅ ) f(\cdot) f()是一个对称的圆形”山坡“,所以直观理解上,我们要找的极值应该在交线的最高位置。如图中的 M M M点,由于在这个点上 L ( ⋅ ) L(\cdot) L()取得了极大值,所以必然有 ∇ L = 0 \nabla L = 0 L=0, 而且在图中,可以看出来 ∇ f \nabla f f ∇ g \nabla g g存在明显的线性关系(方向相反),即 ∇ f + λ ∇ g = 0 \nabla f + \lambda \nabla g = 0 f+λg=0. 所以从这个角度上理解,也确实是证明了拉格朗日乘子法为什么能够运用帮助我们找到约束条件下的函数极值。

欢迎大家点赞、关注、收藏,你的鼓励是我最大的创作动力!

参考文献:https://medium.com/@andrew.chamberlain/a-simple-explanation-of-why-lagrange-multipliers-works-253e2cdcbf74


http://www.kler.cn/a/564394.html

相关文章:

  • 鸿蒙HarmonyOS NEXT开发:组件-样式-基础 2
  • 火绒终端安全管理系统V2.0网络防御功能介绍
  • undo log、redo log、bin log是什么
  • C# Enumerable类 之 数据筛选
  • 世坤量化兼职体验
  • 高数1.1 函数
  • web网络安全---cookie篇
  • 关于houdini 调用api
  • MySQL中的DATETIME与TIMESTAMP选择指南
  • 生态系统服务权衡与协同动态分析:利用InVEST模型估算产水、固碳、生境质量和土壤保持;时空异质性、双变量分析、多元回归分析等
  • matlab机器人机械臂无人机python自动驾驶无人船控制规划ROS避障
  • 小白向-用python实现快速排序
  • CNN:卷积网络中设计1×1夹在主要卷积核如3×3前后的作用
  • 分布式事物在RocketMQ中的应用
  • (21)从strerror到strtok:解码C语言字符函数的“生存指南2”
  • 实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(2):功能介绍
  • 武理本南理硕研一:算法卷不动走向开发岗?自学Linux C++如何规划开发技能树?
  • smolagents学习笔记系列(番外一)使用DeepSeek API Key + CodeAgent
  • JavaScript将:;隔开的字符串转换为json格式。使用正则表达式匹配键值对,并构建对象。多用于解析cssText为style Object对象
  • ubuntu下r8125网卡重启丢失修复案例一则