拉格朗日乘数法与一个100元最值问题探究

· · 学习·文化课

前言

主播备考羟基时遇到了这么一道题:

已知 99 个实数 a_1,a_2,\dots,a_{99}\forall i,a_i\in[-2,2]\sum\limits_{i=1}^{99}a_i=0,求 \sum\limits_{i=1}^{99} a_i^3 的最大值。

答案给的方法是,构造局部不等式:x\in[-2,2] 时,x^3\le 3x+2,当且仅当 x=2x=-1 时取等。然后我们有:

\sum_{i=1}^{99}a_i^3\le\sum_{i=1}^{99}(3a_i+2)=99\times 2=198

当且仅当 a_1,a_2,\dots,a_{99} 中有 33 个为 266 个为 -1 时取等号。故最大值为 198

然而这个取等条件看起来很凑巧,当元素个数变为 100 个时就无法取到了。那么有没有方法能得到 n=100 时的最大值呢?

偏导数

对于二元函数 f(x,y),定义

\lim_{\Delta x\rightarrow0}\frac{f(x_0+\Delta x,y_0)-f(x_0,y_0)}{\Delta x}

f(x,y)(x_0,y_0) 处对 x 的偏导数,在本文中,我们将其记作 f_x(x_0,y_0)。类似地,我们也可以定义 f_y(x_0,y_0)​。

例如,对于 f(x,y)=xy^2,有 f_x(x,y)=y^2,f_y(x,y)=2xy

这容易推广到自变量更多的情况,不再赘述。

拉格朗日乘数法

对于多元函数 f:\R^n\rightarrow \R,我们要求在满足以下条件时的极值:

\begin{cases} \varphi_1(x_1,x_2,\dots,x_n)=0\\ \varphi_2(x_1,x_2,\dots,x_n)=0\\ \dots\\ \varphi_m(x_1,x_2,\dots,x_n)=0 \end{cases}

可以采用以下方法:

构造函数 L(x_1,x_2,\dots,x_n,\lambda_1,\lambda_2,\dots,\lambda_m)=f(x_1,x_2,\dots,x_n)+\lambda_1\varphi_1(x_1,x_2,\dots,x_n)+\lambda_2\varphi_2(x_1,x_2,\dots,x_n)+\dots+\lambda_m\varphi_m(x_1,x_2,\dots,x_n), 令 L 的每一维(共 n+m 维)偏导数均为 0,解出的 (x_1,x_2,\dots,x_n)可能f 的一个极值点。

如果上面的描述过于抽象,可以考虑 n=2,m=1 的例子:

要求 f(x,y)\varphi(x,y)=0 条件下的极值,构造 L(x,y,\lambda)=f(x,y)+\lambda\varphi(x,y),解方程组:

\begin{cases} L_x(x,y,\lambda)=0\\ L_y(x,y,\lambda)=0\\ L_\lambda(x,y,\lambda)=\varphi(x,y)=0 \end{cases}

解出的 (x_0,y_0)可能f 的一个极值点。

求最值

显然极值点不一定是最值点,最值还可能在某些自变量取到边界值时取到,因此,要注意验证边界情况。

例题

已知 n=100 个实数 a_1,a_2,\dots,a_{n}\forall i,a_i\in[-2,2]\sum\limits_{i=1}^{n}a_i=0,求 \sum\limits_{i=1}^{n} a_i^3 的最大值。

f(a_1,a_2,\dots,a_n)=\sum\limits_{i=1}^na_i^3\varphi(a_1,a_2,\dots,a_n)=\sum\limits_{i=1}^n a_i,则 L(a_1,a_2,\dots,a_n,\lambda)=\sum\limits_{i=1}^na_i^3+\lambda\sum\limits_{i=1}^na_i

易知 L_{a_i}(a_1,a_2,\dots,a_n,\lambda)=3a_i^2+\lambda=0,我们要解以下方程组:

\left\{ \begin{aligned} &3a_1^2+\lambda=0\\ &3a_2^2+\lambda=0\\ &\dots\\ &3a_n^2+\lambda=0\\ &\sum\limits_{i=1}^na_i=0 \end{aligned} \right.

a_i=\sqrt{-\dfrac3\lambda}a_i=-\sqrt{-\dfrac3\lambda}。记 t=\sqrt{-\dfrac3\lambda}t\in[0,2]

又因为 \sum\limits_{i=1}^na_i=0,那么必然是 \dfrac n2t\dfrac n2-t

在这种情况下,f(a_1,a_2,\dots,a_n)=0,显然这不是最大值,因此我们要考虑一些自变量取到边界时的情况。

显然取 -2 一定不优,因此设有 k\,(k\in\N^*) 个自变量取到 2,在剩余的 n-k 个自变量中,有 m\,(m\in\N)tn-m-k-t

\begin{aligned} &\sum_{i=1}^na_i=2k+mt+(n-m-k)(-t)=2k-(n-k-2m)t&(1)\\ &\sum_{i=1}^na_i^3=8k+mt^3+(n-m-k)(-t)^3=8k-(n-k-2m)t^3&(2) \end{aligned}

换元令 s=n-k-2m,考虑一下 ks 的范围:

首先 m=-\dfrac12(s+k)+\dfrac n2\in[0,n-k],解得 k-n\le s\le n-k

又由于 (1) 式为 0,所以 t=\dfrac{2k}s\in[0,2),解得 k<s​。

所以 k<s\le n-k

我们要求的 (2) 式可化为 8k-st^3=8k-2kt^2=(8-2t^2)k,我们要求这个式子的最大值:

固定 k,由于 k>0,我们要求 t 尽可能小。

根据 k<s\le n-k ,容易知道 t=\dfrac{2k}s\ge\dfrac{2k}{n-k},因此我们只需求 g(k)=\left[8-2\left(\dfrac{2k}{n-k}\right)^2\right]k 的最大值。

用 Geogebra 画出 g(k)g'(k) 的图像,当 n=100 时,g'(k) 的零点是 \dfrac{100}{33},在区间 (33,34) 内。

此外,如果我们令 $n=99$,则 $g'(k)$ 的零点为 $33$,正对应着前言的那道题。