拉格朗日乘数

在数学中的最优化问题中，拉格朗日乘数法（Method of Lagrange multiplier，以数学家约瑟夫·拉格朗日命名）是一种寻找多元函数在其变量受到一个或多个条件的约束时的局部极值的方法。

## 方法说明

对一个有 $n$ 个变量与 $k$ 个约束条件的最优化问题，拉格朗日乘数法会将其转换成一个 $n+k$ 个变量的方程组，称作拉格朗日方程（Lagrange function），这个方程组的解将包括所有最优化问题的解。拉格朗日乘数法将会引入一个或一组新的未知数，即拉格朗日乘数（Lagrange multiplier），又称拉格朗日乘子，或拉氏乘子，它们是在转换后的方程，即约束方程中作为梯度的线性组合中各个向量的系数。

比如，求 可微函数$f(x, y)$ 在$g(x, y) = 0$ 时的局部极值时，我们可以引入新变量拉格朗日乘数$\lambda$，这时我们只需要求下列拉格朗日函数的局部极值：

$$\mathcal{L}(x,y,\lambda) = f(x,y) - \lambda \cdot g(x,y)$$

更一般地，对含n个变量和k个约束的情况，有：

$$\mathcal{L}\left( x_1,\ldots , x_n, \lambda_1, \ldots, \lambda_k \right) = f\left( x_1, \ldots, x_n \right) - \sum\limits_{i=1}^k {\lambda_i g_i\left( x_1, \ldots , x_n \right)},$$

拉格朗日乘数法所得的临界点会包含原问题的所有临界点，但并不保证每个拉格朗日乘数法所得的临界点都是原问题的临界点。拉格朗日乘数法的正确性的证明牵涉到偏微分，全微分或连锁律。

## 介绍

微积分中最常见的问题之一是求一个函数的极大极小值（极值）。但是很多时候找到极值函数的显式表达是很困难的，特别是当函数有先决条件或约束时。拉格朗日乘数则提供了一个非常便利方法来解决这类问题，而避开显式地引入约束和求解外部变量。

先看一个三维的例子：假设有可微函数：$f(x, y)$，要求其局部极值，且满足条件

$$g\left( x,y \right) = c$$

c为常数。对不同$d_n$的值，不难想像出

$$f \left( x, y \right)=d_n$$

等高线。而方程$g$的可行集所构成的线正好是$g ( x, y ) = c$。想像我们沿着$g = c$的可行集走；因为大部分情况下$f$的等高线和$g$的可行集线不会重合，但在有解的情况下，这两条线会相交。想像此时我们移动$g = c$上的点，因为$f$是连续的方程，我们因此能走到$f \left( x, y \right)=d_n$更高或更低的等高线上，也就是说$d_n$可以变大或变小。只有当$g ( x,y ) = c$和$f \left( x, y \right)=d_n$相切，也就是说，此时，我们正同时沿着$g ( x,y ) = c$和$f \left( x, y \right)=d_n$走。这种情况下，会出现极值或鞍点。

气象图中就很常出现这样的例子，当温度和气压两列等高线同时出现的时候，切点就意味着约束极值的存在。

用向量的形式来表达的话，我们说相切的性质在此意味着$f$和$g$的切线在某点上平行，同时也意味着两者的梯度向量有如下关系（引入一个未知标量$\lambda$）：

$$\nabla f \left(x, y \right) = - \lambda \nabla \left(g \left(x, y \right) - c \right)$$

即：

$\nabla \Big[f \left(x, y \right) + \lambda \left(g \left(x, y \right) - c \right) \Big] = \boldsymbol{0}$.

一旦求出$\lambda$的值，将其套入下式，易求在无约束条件下的极值和对应的极值点。

$F \left( x , y , \lambda \right)$ = $f \left( x , y \right) + \lambda \left( g \left( x , y \right) - c \right)$

新方程$F(x,y,\lambda)$在达到极值时与$f(x,y)$相等。因为$F(x,y,\lambda)$达到极值时$\nabla F(x,y,\lambda) = 0$，而$\frac{\partial F}{\partial \lambda} = g \left( x , y \right) - c$，也就是说$g(x,y)-c$等于零。

## 证明

设可微函数$f(x,y)$(不可微函数的不可微点也有可能是极值发生的地方)在$A$点处有极值$\kappa$，且在$A$点的邻域内连续。则在$A$点处有

$$f \left(x,y \right)=\kappa$$

另有一常值函数

$$g\left(x,y \right) = c$$

两函数在$A$点处的全微分为

$$\mathrm{d}f = \frac{\partial{f}}{\partial{x}}\mathrm{d}x + \frac{\partial{f}}{\partial{y}}\mathrm{d}y = 0$$

$$\mathrm{d}g = \frac{\partial{g}}{\partial{x}}\mathrm{d}x + \frac{\partial{g}}{\partial{y}}\mathrm{d}y = 0$$

当中的等式右方等于零是由于极值会发生在两者函数斜率完全相同且$f \left(x,y \right)$在区段内有极值的时候

由于$\mathrm{d}x$和$\mathrm{d}y$是任取的无穷小量，故该线性方程组的系数成比例，有

$$\dfrac{\dfrac{\partial{f}}{\partial{x}}}{\dfrac{\partial{g}}{\partial{x}}} = \dfrac{\dfrac{\partial{f}}{\partial{y}}}{\dfrac{\partial{g}}{\partial{y}}} = -\lambda$$

即

$$\frac{\partial{f}}{\partial{x}} + \lambda \cdot \frac{\partial{g}}{\partial{x}} = 0$$

$$\frac{\partial{f}}{\partial{y}} + \lambda \cdot \frac{\partial{g}}{\partial{y}} = 0$$

将上二式分别乘以$\mathrm{d}x$和$\mathrm{d}y$，再相加并积分，得到一新函数

$$\mathcal{L}(x, y,\lambda) = f(x, y) + \lambda \cdot g(x, y)$$

那么，求原函数极值的问题就转化为求该函数极值的问题。

类似地，这种求极值的方法也可以推广到多维函数$f\left( x_1, \ldots, x_n \right)$。

## 拉格朗日乘数的运用方法

如f定义为在Rn上的方程，约束为gk(x)= ck（或将约束左移得到gk(x) − ck = 0）。定义拉格朗日Λ为

$\Lambda(\mathbf x, \boldsymbol \lambda) = f + \sum_k \lambda_k(g_k-c_k)$。

注意极值的条件和约束现在就都被记录到一个式子里了：

$$\nabla \Lambda = 0 \Leftrightarrow \nabla f = - \sum_k \lambda_k \nabla\ g_k,$$

和

$\nabla_{\mathbf \lambda} \Lambda = 0 \Leftrightarrow g_k = c_k$。

拉格朗日乘数常被用作表达局部极大增长值。原因是从式子：

$-\frac{\partial \Lambda}{\partial {c_k}} = \lambda_k$。

中我们可以看出λk是当方程在被约束条件下，能够达到的局部极大增长率。拉格朗日力学就使用到这个原理。

拉格朗日乘数法在卡罗需－库恩－塔克条件被推广。

## 例子

- 很简单的例子

求此方程的局部极小值：

$$f(x, y) = x^2 y$$

同时未知数满足

$$x^2 + y^2 = 1$$

因为只有一个未知数的限制条件，我们只需要用一个乘数$\lambda$.

$$g (x, y) = x^2 +y^2 -1$$

$$\Phi (x, y, \lambda) = f(x,y) + \lambda g(x, y) = x^2 y + \lambda (x^2 + y^2 - 1)$$

将所有$\Phi$方程的偏微分设为零，得到一个方程组，局部极小值可能是以下方程组的解中的一个：

$$2 x y + 2 \lambda x = 0$$

$$x^2 + 2 \lambda y = 0$$

$$x^2 + y^2 -1 = 0$$

其是否为局部极大极小值，仍须进一步证明。

- 另一个例子

求此离散分布的最大熵：

$f(p_1,p_2,\ldots,p_n) = -\sum_{k=1}^n p_k\log_2 p_k$。

所有概率的总和是1，因此我们得到的约束是g(p)= 1即

$g(p_1,p_2,\ldots,p_n)=\sum_{k=1}^n p_k=1$。

可以使用拉格朗日乘数找到最高熵（概率的函数）。对于所有的k从1到n，要求

$$\frac{\partial}{\partial p_k}(f+\lambda (g-1))=0,$$

由此得到

$\frac{\partial}{\partial p_k}\left(-\sum_{k=1}^n p_k \log_2 p_k + \lambda (\sum_{k=1}^n p_k - 1) \right) = 0$。

计算出这n个等式的微分，我们得到：

$-\left(\frac{1}{\ln 2}+\log_2 p_k \right) + \lambda = 0$。

这说明pi都相等（因为它们都只是λ的函数）。解出约束∑k pk = 1，得到

$p_k = \frac{1}{n}$。

因此，使用均匀分布可能是熵的局部极值。其是否为局部极值，仍须进一步证明。

## 经济学

约束最优化在经济学占有很重要的地位。例如一个消费者的选择问题可以被视为一个求效用方程在预算约束下的极值问题。拉格朗日乘数在经济学中被解释为影子价格，设定在某种约束下，在这里即收入的边际效用。

拉格朗日乘数就是效用函数在最优解处对收入的偏导数，也就是在最优解处增加一个单位收入带来的效用增加，或者说在最优解处有效用衡量收入的价值，称之为收入的边际效用。

在企业生产问题中，拉格朗日乘数用来衡量要素投入变动所带来的收入变动，du/dm=λ,u表示效用函数或生产函数，m表示收入或要素投入。

在具体数学推导中还可以运用包络定理的内容。

## 对外链接

参考拉格朗日原作或方法的命名：

- Earliest known uses of some of the words of mathematics: L

更深入的介绍和互动applet：

- Applet
- Tutorial and applet
- Conceptual introduction (概念介绍和对于拉格朗日乘数方法在变分法以及物理中的运用)
- Lagrange Multipliers without Permanent Scarring (tutorial by Dan Klein)