为什么斜率变平标记出最佳点
想象你沿着一座光滑的小山行走,这座山画成函数 f 的图像。在山峰的最顶端,你此刻既不在爬升也不在下降——脚下的地面是平的。在谷底也一样:有那么一瞬间是平的。既然导数 f'(x) 度量的是斜率,那么光滑曲线的山峰与山谷就藏在斜率为零的地方。这一个观察,就是几乎每一个现实世界中「寻找最优值」问题背后的引擎。
值得检查的地方是临界点:那些使 f'(x) = 0 的 x 值(斜率为平),或使 f'(x) 不存在的地方(尖角或竖直切线,那里根本没有唯一的斜率)。一个光滑函数的高点或低点只可能发生在这些位置之一——所以你不必搜遍整条曲线,只需检查一份很短的候选名单。
甄别候选点:一阶与二阶导数检验
找到一个临界点只告诉你那里斜率为平;它还没说你是在山峰上、在山谷里,还是只在一个一闪而过的平台上。一阶导数检验靠观察你走过该点时 f' 的正负号来甄别它们。如果 f' 从正(上升)翻成负(下降),你刚翻过一个山峰——一个极大值。如果它从负翻成正,你刚穿过谷底——一个极小值。如果符号没翻,那它两者都不是。
通常更快的是二阶导数检验,它用二阶导数 f'' 来读出平点处曲线的凹凸性。在一个满足 f'(x) = 0 的临界点处:若 f''(x) > 0,曲线像碗一样向上凹,所以你在极小值;若 f''(x) < 0,它像穹顶一样向下凹,所以你在极大值。若 f''(x) = 0,这个检验失效——曲线可能在做某种微妙的事,此时退回去用一阶导数检验。
这多走的一步就是检查端点。如果你只关心一个闭区间上的 x,比如 [0, 10],那么最优值可能根本不在某个平坦的内部点上——它也许被挤在边缘处,曲线还在往上爬就到头了。所以在闭区间上稳妥的做法是:在每个临界点以及两个端点上都算出 f 的值,然后直接比较这些高度。f 值最大的是全局极大值,最小的是全局极小值。
最优化工作流程,配一道盒子例题
真正的最优化问题以文字而非公式出现——「让盒子装得最多」、「用最少的围栏」。这里的本事是把文字翻译成一个单变量的函数,然后摇动微积分的曲柄。这是经典的开口盒子问题:你有一张 12 乘 12 的正方形硬纸板,从每个角剪掉一个边长为 x 的相等的正方形,再把四边翻起来做成一个开口的盒子。什么样的 x 给出最大体积?
- 建立模型。剪掉边长为 x 的角后,底面是 (12 - 2x) 乘 (12 - 2x),高是 x,所以体积 V(x) = x (12 - 2x)^2。变量在物理上限定为 0 < x < 6(剪得太多就没有底了)。
- 求导。展开得 V(x) = 144x - 48x^2 + 4x^3,所以 V'(x) = 144 - 96x + 12x^2 = 12(x^2 - 8x + 12) = 12(x - 2)(x - 6)。
- 找临界点。令 V'(x) = 0:得到 x = 2 或 x = 6。但 x = 6 是被禁止的边界(没有盒子),所以在我们的范围内唯一的候选是 x = 2。
- 确认它是极大值。V''(x) = -96 + 24x,而 V''(2) = -96 + 48 = -48 < 0——向下凹,所以 x = 2 是极大值。两个端点 x->0 和 x->6 都给出体积 0,所以 x = 2 在全局上胜出。
- 用文字作答。剪掉边长为 2 的正方形,得到一个 8 乘 8 乘 2 的盒子,体积 V(2) = 2 * 8^2 = 128 立方单位——这是你能从那张纸折出的最大盒子。
V(x) = x (12 - 2x)^2 = 144x - 48x^2 + 4x^3 V'(x) = 12(x - 2)(x - 6) -> zero at x = 2, x = 6 V''(x) = -96 + 24x -> V''(2) = -48 < 0 (a max) V(2) = 2 * 8 * 8 = 128
让你避免出错的习惯
同样的工作流程也能很好地处理「最少围栏」问题:如果一位农夫想靠着一堵墙、用最少的围栏围出固定的面积 A,你就把周长写成某一条边的函数,令它的导数为零,最省料的形状就出来了。反复出现的窍门是用约束条件(固定面积、固定纸板)去消掉第二个变量,于是你剩下的就是优化一个单变量的函数——这正是你已经会的微积分。
再给两个诚实的提醒。第一,f' 不存在的临界点(尖角)仍然可能是极值,所以要把这些候选也算进去,而不只是 f'=0 的那些。第二,在一个开区间上、或一个延伸到无穷的区间上,可能根本不存在全局极大值——曲线也许会永远升上去。最优化之所以强大,恰恰因为它是机械化的,但人的判断在于设定正确的函数和正确的区域。