跳到正文
格致开物MATHWIKI

拉格朗日乘数法

拉格朗日乘数法(Lagrange multiplier method)用于寻找等式约束下的函数极值。在满足适当光滑性和正则性条件的极值点,目标函数的梯度可以写成约束函数梯度的线性组合;组合系数称为拉格朗日乘数。

它给出的首先是候选点。要确定候选点是最大值还是最小值,还要检查约束范围、边界以及目标函数在整个可行集上的行为。下面从一个能直接消元的面积问题开始,再解释为什么梯度方程能够替代消元。

一笔围栏预算怎样换成最大面积

设要围一个长方形试验区,两边长度为 x,y 米。两条长度为 x 的边使用每米1元的材料,两条长度为 y 的边使用每米2元的材料。预算为240元,暂时忽略转角接头、固定施工费与离散规格。数据是为讲解建立的合成模型。

总费用的数值为 2x+4y,面积的数值为 f(x,y)=xy,单位分别是元和平方米。若有正面积且预算尚未用完,略微增加任一边都会增加面积,因此最大面积必定在预算用尽处。于是求解 maxxy,g(x,y)=2x+4y=240,x,y0. 先用熟悉的一元法:由预算得 y=60x/2,非负条件给出 0x120。沿预算线,面积成为 F(x)=x(60x2)=60xx22=180012(x60)2. 平方项非负,所以最大面积为1800平方米,在 x=60,y=30 时唯一达到。两个端点对应一条边为零,面积为零。

预算线二x加四y等于二百四十在坐标六十、三十处与面积一千八百的双曲线相切,面积九百与预算线有两个交点
沿预算线移动时,较低面积曲线可以穿过它;最大面积曲线恰好相切。坐标中的60和30均为米。

这张图说明待解释的几何关系:最大面积处,预算线与目标的等值线方向相同。为什么这种相切关系会产生一个新未知数?

沿允许的方向移动,变化率必须为零

预算保持不变时,微小变化满足 2dx+4dy=0,即 dy=dx/2。面积的一阶变化是 df=ydx+xdy=(yx2)dx. 在预算线内部,既允许 dx>0,也允许 dx<0。如果括号不是零,总能选一个方向使面积增加;因此局部最大点必须满足 y=x/2

用梯度表达同一件事。f=(y,x)g=(2,4),沿预算线的一个方向为 v=(2,1)。有 gv=0,fv=2yx. 极值要求第二式也为零;两梯度都垂直同一条切线,所以互相平行。在本例最优点, f(60,30)=(30,60)=15(2,4)=15g.

预算线上最优点的切向量为二负一,目标梯度与约束梯度沿同一法线方向;点四十四十处切向导数为四十而非零
箭头显示方向,长度经过缩放。左图没有一阶改进方向;右图仍可沿预算线向增大x的方向提高面积。

图中右侧点为 (40,40)。此处 fv=8040=40,所以沿 (2,1) 的小步能增加面积。这种计算比“图上看起来没有相切”更精确。

一般的乘数方程及其条件

f,g 在候选点附近的开集中连续可微,要在 g(x)=b 上求极值。如果 g(x)0,则该处约束可以局部表示成一张光滑曲面;满足约束的切向量 v 恰好满足 g(x)v=0

沿任意通过 x 的光滑可行曲线 γ(t),约束恒定。链式法则给出 g(x)γ(0)=0.x 是局部极值,复合函数 f(γ(t)) 在零处的一阶导数也必须为零,所以 f(x)γ(0)=0. 由于所有切向量都能由这种局部可行曲线实现,目标梯度垂直整个切空间,必定是其法向量 g 的倍数: f(x)=λg(x),g(x)=b. 正则性保证了“约束看起来像光滑曲面”这一步,OpenStax的乘数定理也明确列出非零约束梯度条件。

为了把这些方程一起记住,可以定义拉格朗日函数 L(x,λ)=f(x)λ(g(x)b). 令它对各个状态变量和 λ 的偏导为零,就分别得到梯度方程和原约束。这里采用减号;若改用加号,乘数的符号也相应改变。并不是要把 L 当成所有变量上的普通无约束最大化问题,因为它对 λ 是线性的。

回到面积模型,方程为 y=2λ,x=4λ,2x+4y=240. 代入约束得到 8λ+8λ=240,即 λ=15,进而得到 x=60,y=30。这是与消元完全一致的候选点;前面的配方已给出全局最大性的证明。

乘数能解释预算的边际作用

把240替换为一般正预算 b,同样的方程给出 x(b)=b4,y(b)=b8,V(b)=b232. 这里 V 是预算固定后的最大面积。对预算求导: V(b)=b16=λ(b). 在240元附近,增加一元预算,最优面积一阶约增加15平方米。准确的增量为 V(241)V(240)=2412240232=15.03125. 15是局部变化率,不是任意预算增量下都精确成立的比例。乘数的单位为“目标单位/约束右端单位”,这里是平方米/元。

这个关系还有一般推导。若最优解 x(b) 随预算光滑变化,则 V(b)=f(x)x(b)=λg(x)x(b).g(x(b))=b 求导,最后的点积为一,故 V(b)=λ。若最优解突然换到另一分支、价值函数有折点,就要改用适当的单侧变化率,不能直接使用这一光滑推导。它与线性规划中的影子价格有相似含义。

候选点为什么还需要分类

在单位圆 x2+y2=1 上求 f=x 的极值。乘数方程为 1=2λx,0=2λy,x2+y2=1. 第一式说明 λ0,所以第二式推出 y=0,最后得 x=1x=1。两个点都满足同一种乘数条件,一个是最大值,一个是最小值。全局判断来自圆上 1x1,并不是来自方程有解。

更进一步,在正则约束 y=0 上求 f=x3,原点满足 f=0=0g,却既不是最大也不是最小:可行线上任意小的正负 x 给出一正一负的函数值。乘数方程只是必要条件。

对于二次可微函数,还可检查拉格朗日函数的二阶变化。若约束正则且乘数方程成立,在约束切空间的每个非零方向 v 上都有 v𝖳xx2L(x,λ)v<0, 则得到严格局部最大值的充分条件;大于零对应严格局部最小值。本例 L 的状态Hessian为 (0110),切方向 v=(2,1) 给出 v𝖳xx2Lv=4。这是局部判断;配方的不等式才把结论扩展到了全部可行线段。

约束梯度为零时,方法会遗漏答案

仍取目标 f=x,把可行集写成 g(x,y)=x2+y2=0。可行集只有原点,所以原点同时取得受约束最大值与最小值。然而 f(0,0)=(1,0),g(0,0)=(0,0), 不存在 λ 能使第一向量等于第二向量的倍数。失败的是乘数定理的正则性前提,不是极值本身。

同一条可行直线分别写成y等于零和y平方等于零,前者梯度零一,后者在整条线上梯度为零
甚至相同的可行集合,也可能因方程写法不同而使梯度检验失效。要检查的是所用约束函数,而不只是画出的集合。

图中用同一可行直线作另一种比较:写作 y=0 时梯度为 (0,1),写作 y2=0 时梯度在整条线上为零。以目标 f=y 为例,所有可行点都取得同一个值零;第一种写法允许 λ=1,第二种写法却没有乘数解。把方程平方虽然没有改变可行点,却丢失了一阶法向信息。

多个约束与不等式边界

若有 m 个等式 gi(x)=bi,而它们在候选点的梯度线性无关,则必要条件变为 f(x)=i=1mλigi(x),gi(x)=bi. 每个独立约束有一个乘数。线性无关保证约束没有在一阶层面重复;这也是多约束的正则性条件。

例如在 x+y+z=9xy=1 上最小化 x2+y2+z2。两个约束梯度分别为 (1,1,1)(1,1,0),彼此独立。乘数方程给出 2x=λ+μ,2y=λμ,2z=λ. 由第二个约束得 μ=1,由第一个约束得 3λ/2=9,所以 (x,y,z)=(7/2,5/2,3)。为证明全局最小,把全部可行点写成 (x,y,z)=(72+t,52+t,32t). 代入平方和,线性项相互抵消,得到 55/2+6t2,故唯一最小值为 55/2

不等式约束还要考虑未用尽的资源、活跃边界和乘数的符号,通常使用KKT条件,见优化。不能把所有不等式一律改成等式:最小化 x2+y2、约束 x2+y21 时,最优点在圆心,把约束改成单位圆便会丢失真正答案。

来源与相关知识