前言
同学问的,轻喷
这真的是一道初一的人做的数学题
正题
有一个函数
\[f(x) = \sum_{i=1}^{2023} i|x-i|, x\in \mathbb{R}\]求其最小值,以及取到最小值时 $x$ 的取值。
代数解法
令答案为 $ANS,ans = \lfloor ANS \rfloor~ ~(ans \in \mathbb{Z^+})$
那么当 $x \in [ans, ans+1]$ 时
\[\begin{aligned} f(x) &= \sum_{i=1}^{2023} i|x-i|\\ &= \sum_{i=1}^{ans} i(x-i) + \sum_{i=ans+1}^{2023} i(i-x)\\ &= x\sum_{i=1}^{ans} i - \sum_{i=1}^{ans}i^2 - x\sum_{i=ans+1}^{2023} i + \sum_{i=ans+1}^{2023}i^2\\ &= (2\sum_{i=1}^{ans}i - \sum_{i=1}^{2023})x + b\\ &= ((ans+1)ans - 2023 \times 1012)x + b\\ \end{aligned}\]其中,$b$ 是只含有 $i$ 的依托常数。
这是一个 $kx + b$ 的形式。由于 $x$ 要取到较小的 $ans$ ,所以这个式子的值是随着 $x$ 的减小而减小的,说明 $k \ge 0$ 。所以有
\[((ans+1)ans - 2023 \times 1012) \ge 0~~~~~~~~(1)\]同理当 $x \in [ans-1, ans]$ 时
\[\begin{aligned} f(x) &= \sum_{i=1}^{2023} i|x-i|\\ &= \sum_{i=1}^{ans-1} i(x-i) + \sum_{i=ans}^{2023} i(i-x)\\ &= x\sum_{i=1}^{ans-1} i - \sum_{i=1}^{ans-1}i^2 - x\sum_{i=ans}^{2023} i + \sum_{i=ans}^{2023}i^2\\ &= (2\sum_{i=1}^{ans-1}i - \sum_{i=1}^{2023})x + b\\ &= ((ans-1)ans - 2023 \times 1012)x + b\\ \end{aligned}\]其中,$b$ 是只含有 $i$ 的另依托常数。
这又是一个 $kx + b$ 的形式。由于 $x$ 要取到较大的 $ans$ ,所以这个式子的值是随着 $x$ 的增大而减小的,说明 $k \le 0$ 。所以又有
\[((ans-1)ans - 2023 \times 1012) \le 0~~~~~~~~(2)\]$(1)(2)$ 联立得
\[\begin{cases} ((ans+1)ans - 2023 \times 1012) \ge 0~~~~~~~~(1)\\ ((ans-1)ans - 2023 \times 1012) \le 0~~~~~~~~(2) \end{cases}\]解得可行的解集为 $\frac{\sqrt{4c+1}-1}{2} \le ans \le \frac{\sqrt{4c+1}+1}{2}$
其中, $c = 2023 \times 1012$ 。
又因 $ans \in \mathbb{Z^+}$,所以 $ans = 1431$ 。
所以 $\lfloor ANS \rfloor = ans = 1431$,即 $ANS \in [1431, 1432)$ !
果真如此吗?
随便跑一下程序就知道不是这样
为什么错呢
先猜结论: $ANS$ 必须是整数,即 $ANS = 1431$ 。
那我们从定义出发,设 $ANS = 1431+x ~(x \in [0,1))$ 。
当 $x$ 从 $0$ 增大的时候, $ANS$ 距离左边的点越来越远,距离右边的点越来越近。
具体而言,对于左边,$f(1431+x)$ 比 $f(1431)$ 多了
\[\begin{aligned} \sum_{i=1}^{1431} ix &= x \sum_{i=1}^{1431}i\\ &= \frac{1431\times1432}{2} x \end{aligned}\]对于右边, $f(1431+x)$ 比 $f(1431)$ 少了
\[\begin{aligned} \sum_{i=1432}^{2023} ix &= x \sum_{i=1432}^{2023}i\\ &= \frac{2023\times2024 - 1431\times1432}{2} x \end{aligned}\]由 $\frac{1431\times1432}{2} > \frac{2023\times2024 - 1431\times1432}{2}$ 可以得出,$f(1431+x)$ 随着 $x$ 的增大而增大,所以当 $x = 0$ 时, $f(ANS) = f(1431+x) = f(1431)$ 取到最小值。
计算 $f(1431)$ 可得答案。
几何意义解法
神仙 piggy123 考古时发现了这个解法。
考虑绝对值的几何意义:$ | a-b | $ 代表了 $a$ 与 $b$ 数轴上的距离。 |
看一下原式
\[f(x) = \sum_{i=1}^{2023} i|x-i|, x\in \mathbb{R}\]就相当于数轴上 $1 \sim 2023$ 这些数中,$1$ 上面有 $1$ 个点,$2$ 上面有 $2$ 个点……$2023$ 上面有 $2023$ 个点,这时在数轴上选一点 $x$ ,计算点 $x$ 到这 $1+2+3+\cdots+2023$ 个点的距离。
神仙 piggy123 立马明白,$x$ 应该选 $1,2,2,3,3,3,4,4,4,4,\cdots,2023$ 的中位数,也就是 $1431$。
拓展题
有一个函数
\[f(x) = \sum_{i=1}^{2023} |ix-1|, x\in \mathbb{R}\]求其最小值,以及取到最小值时 $x$ 的取值。
易得
\[\begin{aligned} f(x) &= \sum_{i=1}^{2023} |ix-1|\\ &= \sum_{i=1}^{2023} i|x-\frac{1}{i}| \end{aligned}\]然后与上文题目形式相同。