多变量极值与优化
上一章我们用方向导数和梯度回答了一个局部问题:函数在某一点附近,沿哪个方向增长最快。本章换一个问题:如果把整块曲面看成一张地形图,哪里可能是山顶、谷底,哪里只是看起来平却并不稳定?
多变量极值问题的基本动作有两个。先用一阶导数找出“可能发生转折”的点,再用二阶导数或边界比较判断这些点到底是什么。这个过程比单变量多一个难点:在平面上离开一点有无穷多个方向,所以“斜率为零”只说明一阶变化消失,并不能直接说明那里一定有最大值或最小值。

局部极大、局部极小和鞍点都可能出现在曲面看起来“平”的位置。区别藏在附近所有方向的二阶弯曲里。
临界点
设 f(x,y) 在点 (a,b) 附近有定义。如果 fx(a,b)=0 且 fy(a,b)=0,或者某个一阶偏导数在该点不存在,我们把 (a,b) 称为 f 的临界点。对可微函数来说,条件可以写成
∇f(a,b)=⟨fx(a,b),fy(a,b)⟩=0
这句话的几何意思是:在这个点,所有方向导数的一阶线性部分都消失了。因为任意单位方向 u 上的方向导数是
Duf(a,b)=∇f(a,b)⋅u
所以当梯度为零时,沿任意方向的一阶变化率都是零。

临界点只是候选点,不是结论。单变量里 f′(a)=0 也可能只是拐点;多变量里类似的现象更常见,因为曲面可以在一个方向上向上弯,在另一个方向上向下弯。
局部极值的必要条件
如果 f 在 (a,b) 处可微,并且 (a,b) 是局部极大点或局部极小点,那么
∇f(a,b)=0
证明思路和单变量一致。固定 y=b,得到单变量函数 g(x)=f(x,b)。如果 (a,b) 是局部极值点,那么 x=a 也是 g 的局部极值点,所以 g′(a)=fx(a,b)=0。同理,固定 x=a,得到 fy(a,b)=0。
这个结论只给出必要条件。找极值时,它告诉我们该检查哪里;它不保证这些地方真的有极值。
例题:先找候选点
求函数
f(x,y)=x2+y2−4x+6y+10
的临界点,并判断它的类型。
先求一阶偏导数:
fx=2x−4,fy=2y+6令两个偏导数同时为零:
2x−4=0,2y+6=0得到唯一临界点 (2,−3)。
把原函数配方:
f(x,y)=(x−2)2+(y+3)2−3两个平方项都不小于零,所以 (2,−3) 处取得局部最小值,也是整个平面上的绝对最小值。
这个例子很温和,因为函数本身是一个向上开的椭圆抛物面。实际题目中,配方不总是方便;这时需要 Hessian。
Hessian 与二阶判别法
在一点附近,可微函数的一阶近似给出切平面。若临界点处梯度为零,切平面只剩常数项,下一层信息来自二阶近似。对二元函数来说,二阶偏导数组成的矩阵叫 Hessian:
Hf(x,y)=(fxx(x,y)fyx(x,y)fxy(x,y)fyy(x,y))
当二阶偏导连续时,fxy=fyx。在临界点 (a,b) 附近,函数的主要形状由下面这个二次型控制:
21(hk)Hf(a,b)(hk)
如果这个二次型在每个非零方向上都为正,曲面向各个方向上弯,是局部极小;如果每个非零方向上都为负,曲面向各个方向下弯,是局部极大;如果有的方向为正、有的方向为负,就是鞍点。

二阶判别法
对二元函数,常用一个判别式来压缩 Hessian 信息:
D(a,b)=fxx(a,b)fyy(a,b)−[fxy(a,b)]2
在临界点 (a,b) 处:
这里的 D 是 Hessian 行列式。D>0 表示两个主方向的弯曲同号,再用 fxx 的符号判断它们是同为正还是同为负。D<0 表示弯曲异号,所以必然是鞍点。
二阶判别法只在临界点上使用。若某点的梯度不为零,即使 D 的符号看起来很漂亮,也不能拿它来判断局部极值。
例题:用 Hessian 分类
求函数
f(x,y)=x3−3x+y2
的临界点,并分类。
先求一阶偏导数:
fx=3x2−3,fy=2y令一阶偏导数同时为零:
3x2−3=0,2y=0得到两个临界点 (1,0) 和 (−1,0)。
求二阶偏导数:
fxx=6x,fyy=2,fxy=0因此
D=fxxfyy−fxy2=12x在 (1,0) 处,D=12>0 且 fxx=6>0,所以 (1,0) 是局部极小点。在 (−1,0) 处,D=−12<0,所以 (−1,0) 是鞍点。
注意这里没有局部极大点。一个函数可以有多个临界点,也可以某一类极值完全没有。
鞍点与不确定情形
鞍点的特点是:从某些方向看,点附近像谷底;从另一些方向看,又像山顶。最经典的例子是
f(x,y)=x2−y2
原点处 fx=2x,fy=−2y,所以 (0,0) 是临界点。沿 x 轴看,f(x,0)=x2≥0;沿 y 轴看,f(0,y)=−y2≤0。同一个点附近既有比 f(0,0) 大的函数值,也有比它小的函数值,因此原点是鞍点。
D=0 时不要硬判
二阶判别法给出 D=0 时,结论是不确定,而不是“没有极值”。例如
f(x,y)=x4+y4
在原点处有局部极小,但二阶偏导给不出有效弯曲信息,因为最低阶的非零变化来自四次项。
另一个例子是
g(x,y)=x4−y4
原点是鞍点,二阶判别式同样为零。这两个例子说明,当二阶项全部退化时,要回到定义、路径比较或更高阶项。
常见错误是把 D=0 当成“鞍点”或“没有极值”。它只说明二阶判别法在这个点失效。此时要看原函数在附近的符号、沿不同路径的表现,或者尝试配方与因式分解。
例题:用路径识别鞍点
判断
f(x,y)=x2−y4
在原点附近的行为。
一阶偏导数为
fx=2x,fy=−4y3所以原点是临界点。
二阶偏导数为
fxx=2,fyy=−12y2,fxy=0在原点处 D=2⋅0−0=0,二阶判别法不确定。
沿 x 轴,f(x,0)=x2>0;沿 y 轴,f(0,y)=−y4<0。原点附近同时出现大于和小于 f(0,0) 的值,所以原点是鞍点。
闭有界区域上的绝对极值
局部极值只看一个点附近。绝对极值要看整个区域。若 f 在闭有界区域 R 上连续,那么 f 一定在 R 上取得绝对最大值和绝对最小值。
这个结论给出存在性,但不告诉我们极值在哪里。实际计算时,要检查三类候选对象:
- 区域内部的临界点。
- 边界曲线上的候选点。
- 边界的端点、角点或分段连接点。

闭有界区域上的绝对极值问题,最后一步总是比较函数值。Hessian 可以帮助判断内部临界点的局部类型,但绝对最大值和绝对最小值来自候选值的整体比较。
处理边界
边界通常把二元问题降成单变量问题。例如在矩形区域
R=[a,b]×[c,d]
上,边界有四条线段。在线段 y=c 上,函数变成 f(x,c),只需要在 a≤x≤b 上找单变量极值;其他边界同理。
如果区域边界由曲线给出,例如 y=ϕ(x),就把边界上的函数写成
F(x)=f(x,ϕ(x))
再按单变量方法找候选点。下一章的拉格朗日乘子会给出更统一的约束优化方法;本章先用“参数化边界并比较候选值”的方式。
例题:矩形区域上的绝对极值
求
f(x,y)=x2+y2−2x−4y
在矩形
R={(x,y)∣0≤x≤3, 0≤y≤4}
上的绝对最大值和绝对最小值。
先找内部临界点。因为
fx=2x−2,fy=2y−4所以临界点是 (1,2)。它位于矩形内部,函数值为
f(1,2)=1+4−2−8=−5检查边界 x=0。此时
f(0,y)=y2−4y=(y−2)2−4在 0≤y≤4 上,候选点包括 y=2,0,4,函数值分别为 −4,0,0。
检查边界 x=3。此时
f(3,y)=y2−4y+3=(y−2)2−1候选点包括 y=2,0,4,函数值分别为 −1,3,3。
检查边界 y=0。此时
f(x,0)=x2−2x=(x−1)2−1候选点包括 x=1,0,3,函数值分别为 −1,0,3。
检查边界 y=4。此时
f(x,4)=x2−2x=(x−1)2−1候选点包括 x=1,0,3,函数值分别为 −1,0,3。
汇总候选值,最小值是 −5,在 (1,2) 处取得;最大值是 3,在 (3,0) 和 (3,4) 处取得。
边界检查看起来有重复,这是正常的。矩形四条边会共享角点,所以同一个点可能被算到两次;最终只要比较完整候选集合即可。
实际优化模型
优化题的数学难点常常不是求导,而是把问题翻译成函数。一个实际问题通常包含三个部分:变量、目标函数、可行区域。

建模步骤
先选变量。变量应当能独立描述方案,例如材料用量 x 和工时 y,或平面上一点的坐标 (x,y)。
写目标函数。题目要“最大产量”,目标函数可能是 P(x,y);要“最小成本”,目标函数可能是 C(x,y);要“最短距离”,目标函数常常可以写成距离平方,避免根号。
写可行区域。若变量没有限制,先做无约束优化;若有范围、边界或实际条件,就把区域写清楚。闭有界区域上可以按候选点比较法求绝对极值。
求候选点并解释结果。最后的答案不能只写一个坐标,还要说明这个坐标在原问题中代表什么,并检查它是否满足题目条件。
例题:最接近一点的平面点
在平面
z=2x−y+1
上找一点,使它到点 P=(1,2,3) 的距离最短。
因为平面上的点可以写成 (x,y,2x−y+1),它到 P 的距离平方为
F(x,y)=(x−1)2+(y−2)2+(2x−y+1−3)2
也就是
F(x,y)=(x−1)2+(y−2)2+(2x−y−2)2
最小化距离等价于最小化 F。
求一阶偏导数:
Fx=2(x−1)+4(2x−y−2)=10x−4y−10Fy=2(y−2)−2(2x−y−2)=−4x+4y解方程组
10x−4y−10=0,−4x+4y=0由第二个方程得 y=x,代入第一个方程得 6x=10,所以 x=y=35。
对应平面上的点为
(35,35,2⋅35−35+1)=(35,35,38)这个候选点是最短距离点。理由是 F 是三个平方项之和展开后的二次函数,Hessian 为正定矩阵;也可以从几何上理解为点到平面的垂足。
这个例题展示了优化建模中的一个常用技巧:若目标是最短距离,可以先最小化距离平方。平方函数在非负区间上单调增加,所以不会改变最优点。
常见误区
只求临界点,不分类
求出 ∇f=0 只是第一步。题目问局部极值时,还要用 Hessian、配方、路径比较或定义判断类型。
忘记检查边界
绝对极值题最容易漏的是边界。即使内部有局部最小点,绝对最大值也可能出现在边界角点;即使内部没有临界点,连续函数在闭有界区域上仍然会取得绝对极值。
在非闭有界区域上直接套存在性
若区域不是闭有界,绝对最大值或最小值可能不存在。例如 f(x,y)=x2+y2 在整个平面上有绝对最小值 0,但没有绝对最大值。
把应用题的变量范围漏掉
现实变量常常有范围限制,例如长度不能为负,材料不能超过库存,概率或比例必须在 [0,1] 内。范围决定了候选点集合,也会改变最优解。
练习
练习:临界点分类
求
f(x,y)=x2+xy+y2−3x+2y
的临界点,并判断它的类型。
先求偏导数:
fx=2x+y−3,fy=x+2y+2解方程组
2x+y−3=0,x+2y+2=0得到 x=38, y=−37。二阶偏导数为
fxx=2,fyy=2,fxy=1所以
D=2⋅2−12=3>0且 fxx>0,因此该临界点是局部极小点。
练习:识别鞍点
判断
f(x,y)=xy
在原点附近的行为。
偏导数为 fx=y, fy=x,所以原点是临界点。二阶偏导数为 fxx=0, fyy=0, fxy=1,因此
D=0⋅0−12=−1<0原点是鞍点。也可以沿直线 y=x 得到 f(x,x)=x2>0,沿 y=−x 得到 f(x,−x)=−x2<0,说明原点附近同时有更大值和更小值。
练习:闭区域绝对极值
求
f(x,y)=x+y−xy
在正方形
0≤x≤2,0≤y≤2
上的绝对最大值和绝对最小值。
内部临界点满足
fx=1−y=0,fy=1−x=0所以候选点是 (1,1),函数值为 1。
检查边界。若 x=0,f=y,在 [0,2] 上取值从 0 到 2。若 x=2,f=2−y,在 [0,2] 上取值从 2 到 0。若 y=0,f=x,在 [0,2] 上取值从 0 到 2。若 y=2,f=2−x,在 [0,2] 上取值从 2 到 0。
汇总可知,绝对最小值为 0,在 (0,0) 和 (2,2) 处取得;绝对最大值为 2,在 (2,0) 和 (0,2) 处取得。
练习:应用建模
某产品的总成本近似为
C(x,y)=2x2+y2−2xy−8x−2y+30
其中 x 表示材料批量,y 表示工时批量。若暂不考虑边界限制,求使成本最小的 (x,y)。
求偏导数:
Cx=4x−2y−8,Cy=2y−2x−2令它们同时为零:
4x−2y−8=0,2y−2x−2=0第二个方程给出 y=x+1。代入第一个方程:
4x−2(x+1)−8=0得到 2x=10,所以 x=5, y=6。
Hessian 为
(4−2−22)其判别式为 D=4⋅2−(−2)2=4>0,且 Cxx=4>0,所以这是局部极小点。由于该二次成本函数的 Hessian 正定,这个点也是无约束情况下的全局最小点。