如何使用?

我们首先关注怎么调用这个方法。

一个二维的例子

$$ \begin{align} \min &f(x,y) = x^2y\\ \text{s.t. } & x^2 + y^2 = 1 \end{align} $$

解:

设 $g = x^2 + y^2 - 1$

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

$$ \left\{\begin{array}{l} \dfrac{\partial L}{\partial x}= 2xy + 2x \lambda =0 \\ \dfrac{\partial L}{\partial y}=x^2 + 2y \lambda =0 \\ \dfrac{\partial L}{\partial \lambda}=x^2 + y^2 - 1=0 \end{array}\right. $$

解方程,得:

$$ \begin{aligned} &\min \left\{x^{2} y \mid x^{2}+y^{2}=1\right\}=-\frac{2}{3 \sqrt{3}} \text { at }(x, y)=\left(-\sqrt{\frac{2}{3}},-\frac{1}{\sqrt{3}}\right) \\ &\min \left\{x^{2} y \mid x^{2}+y^{2}=1\right\}=-\frac{2}{3 \sqrt{3}} \text { at }(x, y)=\left(\sqrt{\frac{2}{3}},-\frac{1}{\sqrt{3}}\right) \end{aligned} $$

一个三维的例子

$$ \begin{align} \min &f(x,y,z) = xyz\\ \text{s.t. } &\frac{1}{x}+\frac{1}{y}+\frac{1}{z}=\frac{1}{a} \\ &\text{and } x,y,z,a >0 \end{align} $$

解:

设函数 $L (x,y,z,\lambda) = xyz - \lambda \left (\dfrac {1}{x}+\dfrac {1}{y}+\dfrac {1}{z}-\dfrac {1}{a}\right)$

求各参数的偏导,并令之为 0:

$$ \left\{\begin{array}{l} \dfrac{\partial L}{\partial x}=y z-\dfrac{\lambda}{x^{2}}=0 \\ \dfrac{\partial L}{\partial y}=x z-\dfrac{\lambda}{y^{2}}=0 \\ \dfrac{\partial L}{\partial z}=x y-\dfrac{\lambda}{z^{2}}=0 \\ \dfrac{\partial L}{\partial \lambda}=\dfrac{1}{x}+\dfrac{1}{y}+\dfrac{1}{z}-\dfrac{1}{a}=0 \end{array}\right. $$

解得 $x = y = z= 3a$,代入,得到最小值:$27a^3$

为什么能求出最小值?

何时函数取极值? 我们可以想象函数作为一个标量场,是一个曲面。曲面上各点的 梯度向量,指向了函数增长最快的方向。如果各方向增长都一样,则 $\nabla f = \vec {0}$,函数无法向周围调整以取得更好的值。此时,函数一定在一个(局部)极值点。

推而广之,若函数取极值,必有切平面与梯度正交。即:梯度要么为零向量,要么与切平面法向同向。

设梯度为 $\nabla f$,切平面(切空间)的法向为 $n$,则 $\nabla f = kn$

当约束条件增加时,我们不能单纯求出 $f$ 的极值,因为这很可能不满足约束条件。怎么办?只有联立二者。

以第一题为例,首先我们放入 $f = x^2y$ 的曲面:

image-20211129234700025

然后我们添加约束 $g (x) = x^2 + y^2 -1 = 0$,它与上面的曲面的交界如下图蓝色闭合曲线所示:

image-20211129233340394

相当于问:如果点只能在上图蓝色空间(曲线)上移动,则点的最小 $z$ 坐标是多少?

为了直到怎么求极值点,我们看极值点有何性质。我们在曲线 $C$ 上移动,当 $z$ 不能再往下时,就达到最小值。这个时候,$f$ 与 $g$ 相切,(看下面的图)从切点的情况看,无法通过向周围调整使得函数值更小。即此时 $f,g$ 的梯度向量共线(下图绿线)(还问为什么?看本节开头第一句话)。

image-20211130003624968

为什么取极值时一定相切?

再详细说说为什么相切。还是这个图,不过我们换个视角,从上往下去看:

image-20211130004133637

我们将看到一个圆,这是 $g (x)$ 在 $xOy$ 平面的投影。可以很明显注意到相切。那么对于切点的两侧,梯度自然就是共线的:

image-20211130004322633

则 $f,g$ 的梯度向量必须同向。即:

$$ \nabla f = \lambda \nabla g $$

这就是拉格朗日乘数法的方程。

对于计算以下方程的解

$$ \nabla f - \lambda \nabla g = \vec{0} $$

相当于求解各分量为 0 的联立方程。由于梯度是向量,向量可以按分量做加减法,同时梯度又具有微分的性质,所以整体可以作为一个关于 {各维度分量、 $\lambda$} 的函数 $L = \vec {0}$,求解其各偏导为 0 时的解。

再来个例子

读者可能会不服,因为上面正好是个圆,太特殊了。下面,求函数 $f = (a+1)(b+2)$ 在约束 $a^2+2b^2 = 2$ 下的最大值和最小值。

约束联立形成的曲线如下图所示:

image-20211130104149192

最小值点,二面相切:

image-20211130104328202

最大值点,二面相切:

image-20211130104411872

为什么相切的几何原理上面已经说过,再次重申:如果不相切,那么朝着切点调整,可以取到更优的值。

分析学证明

这里只是简单证明三维的情况,更高维度同理。设 $f$ 在约束曲面上有极值点 $P$,令 $\mathbf {r}(t)=\langle x (t), y (t), z (t)\rangle$ 使得 $P = (x (0),y (0),z (0))$

令 $h (t)=f (x (t), y (t), z (t))$. 这样 $h (t)$ 在 $t=0$ 时,$h (0) = f (\vec {P})$,即取到极值。根据多元函数链式法则:

$$ h^{\prime}(t)=f^{\prime}(\vec{r})=\left.\nabla f\right|_{\mathbf{r}(t)} \cdot \mathbf{r}^{\prime}(t) $$

因为 $t=0$ 取到局部极值,因此有(高中都学过,取到极值则导数为 0):

PS:实际上充分条件是邻域同号,但我们相当于已经直到了是极值,所以用必要条件导数为零即可。

$$ h^{\prime}(0)=\left.\nabla f\right|_{P} \cdot \mathbf{r}^{\prime}(0)=0 $$

Thus, $\left.\nabla f\right|_{P}$ is perpendicular to any curve on the constraint surface through $P$. This implies $\left.\nabla f\right|_{P}$ is perpendicular to the surface. Since $\left.\nabla g\right|_{P}$ is also perpendicular to the surface we have proved $\left.\nabla f\right|_{P}$ is parallel to $\left.\nabla g\right|_{P} . \quad$ QED

参考

(1)拉格朗日乘数法方程组四种解法 _哔哩哔哩 _bilibili

(2)calculus - Why do Lagrange Multipliers work? - Mathematics Stack Exchange

(3)Math3d: Online 3d Graphing Calculator / CalcPlot3D (libretexts.org) 自己画图试试~

(4)Lagrange multiplier - Wikipedia

(5)18.02SC Notes: Proof of Lagrange Multipliers - MIT

(6)极值的三个充分条件及其应用 - 知乎 (zhihu.com)