多元微积分 · 拉格朗日乘数法

拉格朗日乘数法

沿约束曲线g = c找f的最大、最小值:在这样的点,只要∇g ≠ 0,∇f就和∇g平行,∇f = λ∇g;λ是最值随c变化的比率。让P沿曲线走,看∇f沿曲线的那部分。

拉格朗日乘数法与本页画面

问题是:点不能随便取,必须待在一条曲线上,也就是满足约束g(x,y)=cg(x, y) = c,这时函数f(x,y)f(x, y)最大、最小是多少。拉格朗日乘数法告诉我们该去哪里找。设ff和gg在曲线上一点P附近有连续的一阶偏导数,ff限制在曲线上时在P取得局部最大或最小值,并且∇g(P)≠0\nabla g(P) \neq 0。那么存在一个数λ\lambda,称为拉格朗日乘数,使得

候选点满足的方程
∇f(x,y)=λ ∇g(x,y),g(x,y)=c\nabla f(x, y) = \lambda\, \nabla g(x, y), \qquad g(x, y) = c

这是关于x、y、λ\lambda的三个方程。解出来的是候选点,不是答案:每个都还要检验,∇g=0\nabla g = 0的点也要另外看。

地图上画着ff的等高线、用粗墨线画的约束曲线,以及曲线上的一点P。P处的蓝色箭头是∇f\nabla f,空心箭头表示∇g\nabla g的方向;∇f\nabla f被分成沿曲线的黄色部分和横过曲线的虚线部分。地图下方的剖面,把ff对沿曲线走过的距离画出来。

为什么这样做行得通?沿着曲线,gg不变,所以曲线的单位切向量TT垂直于∇g\nabla g。沿曲线以单位速度走,ff的变化率是∇f⋅T\nabla f\cdot T,它就是剖面在P处的斜率,黄色箭头是(∇f⋅T) T(\nabla f\cdot T)\,T。在剖面的最高点或最低点,只要那里∇g≠0\nabla g \neq 0,这个斜率就为0,所以∇f\nabla f没有沿曲线的部分。在平面里,没有沿曲线部分的向量,都是∇g\nabla g的倍数,所以∇f=λ∇g\nabla f = \lambda\nabla g;∇f=0\nabla f = 0时λ=0\lambda = 0。黄色箭头不为0的地方,朝它指的方向走,ff还在增大,所以P不可能是最大或最小值点。

如果还有∇f(P)≠0\nabla f(P) \neq 0,过P的ff的等高线垂直于∇f\nabla f,于是它和约束曲线有同一条切线。在约束下的最大或最小值点,约束曲线和一条等高线相切,而不是穿过它。

λ\lambda本身也有含义。把曲线g=cg = c上的最大值或最小值记作f∗(c)f^*(c)。如果取得这个值的点随cc光滑地移动,λ\lambda就是这个最值随cc的变化率:

乘数是一个变化率
λ=df∗dc\lambda = \frac{d f^*}{d c}

在圆x2+y2=cx^2 + y^2 = c上,xyxy的最大值是c/2c/2,两个最大值点处都有λ=1/2\lambda = 1/2。λ小窗把f∗f^*对cc画出来,斜率就是它。这个比率取决于约束的写法。同一条曲线写成2g=C2g = C,其中C=2cC = 2c,乘数就减半,因为它现在量的是对C的变化率。“写成2g”能看到这一点。

有两条曲线显示了这个方法的局限。在y−x3=cy - x^3 = c上,函数f=yf = y在(0,c)(0, c)处梯度平行,可沿着曲线f=x3+cf = x^3 + c只是在那里放平了一下,接着继续上升。梯度平行还不够。在y2−x3=0y^2 - x^3 = 0上,f=xf = x的最小值在尖点(0,0)(0, 0),那里∇g=(0,0)\nabla g = (0, 0),∇f=λ∇g\nabla f = \lambda\nabla g无解。这个方法会漏掉它,这样的点只能另外检查。

候选点是最大、最小,还是都不是,看剖面就知道:在约束下的局部最大值点,剖面先升后降;在局部最小值点,先降后升;经过立方曲线的候选点时,它继续上升。

值得注意

  • λ\lambda的正负说明∇f\nabla f和∇g\nabla g同向还是反向。在圆上,它在最大值点为正,在最小值点为负。
  • 和等高线相切,不等于停在它的一侧。立方曲线的候选点和一条等高线相切,却仍然穿过了它。

相关概念