自在学
分类课程智能体订阅
分类课程AI导师价格
课程进度
12 / 25
上一节多变量极值与优化下一节二重积分:从小矩形累加到曲面下体积
自在学

© 2025 - 2026 自在学,保留所有权利。

公网安备湘公网安备43020302000292号 | 湘ICP备2025148919号-1

关于我们隐私政策使用条款

© 2025 自在学,保留所有权利。

公网安备湘公网安备43020302000292号湘ICP备2025148919号-1

数学多变量微积分 I:偏导数、重积分与向量场约束优化与拉格朗日乘子

约束优化与拉格朗日乘子

很多优化问题并不是让变量随便取值。矩形的周长已经固定,预算已经给定,点必须落在某个平面上,材料必须满足某个配比,这些限制会把可选范围压成一条曲线、一个曲面,或它们的交集。约束优化研究的就是:在这些限制内,目标函数在哪里达到最大或最小。

本章的主角是拉格朗日乘子法。它把“在约束上找最优点”的几何直觉转成一个可计算的方程组。核心句子很短:在光滑约束上的内部最优点,目标函数的梯度与约束函数的梯度平行。

目标函数等值线与约束曲线在候选最优点相切,两个梯度方向平行的示意图。


约束最优点在哪里

先看一个二元目标函数 f(x,y)f(x,y)f(x,y),再给一个约束方程

g(x,y)=0g(x,y)=0g(x,y)=0

没有约束时,我们在整个平面上找 fff 的极值。加上约束后,可行点只剩下满足 g(x,y)=0g(x,y)=0g(x,y)=0 的点。若 g(x,y)=0g(x,y)=0g(x,y)=0 是一条曲线,问题就变成:沿着这条曲线走,fff 的值在哪里最大或最小。

等值线给出最直接的画面。f(x,y)=cf(x,y)=cf(x,y)=c 是目标函数取同一个值的位置。随着 ccc 改变,等值线像一组轮廓线一样移动。约束曲线能碰到的最高一条等值线,通常不是横穿约束曲线,而是刚好与约束曲线相切。若还横穿,就说明沿约束曲线继续走,一侧会让 fff 更大,另一侧会让 fff 更小,这个点还不是约束最优点。

“相切”不是装饰性的几何语言。它说的是两个一阶变化方向的关系:在约束允许的切向方向上,目标函数的一阶变化必须为零。否则只要沿着约束曲线走一小步,就能把目标值继续推高或推低。

下面的交互把这个画面具体化。拖动等值线水平,观察它从穿过约束圆到刚好相切,再到完全碰不到约束圆的过程。


梯度平行的理由

设约束曲线可以写成一条光滑参数曲线

r(t)=⟨x(t),y(t)⟩\mathbf r(t)=\langle x(t),y(t)\rangler(t)=⟨x(t),y(t)⟩

并且曲线上的点都满足 g(r(t))=0g(\mathbf r(t))=0g(r(t))=0。如果 r(t0)\mathbf r(t_0)r(t0​) 是约束上的一个内部极值点,那么沿这条可行曲线看,单变量函数 f(r(t))f(\mathbf r(t))f(r(t)) 在 t0t_0t0​ 处有极值,所以

ddtf(r(t))∣t=t0=0\frac{d}{dt}f(\mathbf r(t))\bigg|_{t=t_0}=0dtd​f(r(t))​t=t0​​=0

由链式法则,

∇f(r(t0))⋅r′(t0)=0\nabla f(\mathbf r(t_0))\cdot \mathbf r'(t_0)=0∇f(r(t0​))⋅r′(t0​)=0

这说明 ∇f\nabla f∇f 垂直于约束曲线的切向量。同时,因为 g(r(t))g(\mathbf r(t))g(r(t)) 恒等于 000,同样有

ddtg(r(t))∣t=t0=0\frac{d}{dt}g(\mathbf r(t))\bigg|_{t=t_0}=0dtd​g(r(t))​t=t0​​=0

也就是

∇g(r(t0))⋅r′(t0)=0\nabla g(\mathbf r(t_0))\cdot \mathbf r'(t_0)=0∇g(r(t0​))⋅r′(t0​)=0

因此,在二维平面里,只要约束曲线在该点有唯一切线,∇f\nabla f∇f 和 ∇g\nabla g∇g 都是这条切线的法向量。两个非零法向量只能平行,于是存在一个数 λ\lambdaλ,使得

∇f=λ∇g\nabla f=\lambda \nabla g∇f=λ∇g

这个 λ\lambdaλ 就叫拉格朗日乘子。

坐标平面上一条约束曲线在最优点处的可行切向,以及共线的蓝色梯度∇f和绿色梯度∇g,说明∇f = λ∇g。

拉格朗日乘子法的常用形式依赖一个光滑条件:约束梯度 ∇g\nabla g∇g 在候选点不能为零。若约束有尖点、端点,或者 ∇g=0\nabla g=0∇g=0,最优点仍可能存在,但它不一定会被 ∇f=λ∇g\nabla f=\lambda\nabla g∇f=λ∇g 捕捉到。


从几何到方程组

对一个约束 g(x,y)=0g(x,y)=0g(x,y)=0,拉格朗日乘子法把原问题

在 g(x,y)=0 下优化 f(x,y)\text{在 } g(x,y)=0 \text{ 下优化 } f(x,y)在 g(x,y)=0 下优化 f(x,y)

转成未知量 x,y,λx,y,\lambdax,y,λ 的方程组:

∇f(x,y)=λ∇g(x,y)\nabla f(x,y)=\lambda \nabla g(x,y)∇f(x,y)=λ∇g(x,y) g(x,y)=0g(x,y)=0g(x,y)=0

如果写成分量形式,就是

fx=λgx,fy=λgy,g(x,y)=0f_x=\lambda g_x,\qquad f_y=\lambda g_y,\qquad g(x,y)=0fx​=λgx​,fy​=λgy​,g(x,y)=0

对于三元函数和一个约束 g(x,y,z)=0g(x,y,z)=0g(x,y,z)=0,形式完全类似:

∇f(x,y,z)=λ∇g(x,y,z)\nabla f(x,y,z)=\lambda \nabla g(x,y,z)∇f(x,y,z)=λ∇g(x,y,z) g(x,y,z)=0g(x,y,z)=0g(x,y,z)=0

拉格朗日乘子法四步流程图:写目标函数与约束、建立梯度方程、联立求候选点、比较函数值并检查约束。

先明确目标函数和约束函数。目标函数是你要最大化或最小化的量,约束函数要整理成 g=0g=0g=0 的形式。若题目给的是 x2+y2=1x^2+y^2=1x2+y2=1,可以写成 g(x,y)=x2+y2−1g(x,y)=x^2+y^2-1g(x,y)=x2+y2−1。

写出梯度方程 ∇f=λ∇g\nabla f=\lambda\nabla g∇f=λ∇g。这一行不是凭空来的,它表达的是目标等值线与约束曲线相切,或者说两个法向量平行。

把梯度方程与原约束联立求候选点。不要把 λ\lambdaλ 当成目标,它只是帮助我们表达平行关系的辅助未知量。

把候选点代回 fff 比较函数值。若可行集合不是闭有界的,或者约束有端点、尖点、分段边界,还要另外检查这些没有被梯度方程覆盖的位置。


例题:固定周长的矩形

设矩形边长为 x,yx,yx,y,周长固定为 PPP,求面积最大时的形状。目标函数和约束为

A(x,y)=xyA(x,y)=xyA(x,y)=xy 2x+2y=P2x+2y=P2x+2y=P

把约束写成

g(x,y)=2x+2y−P=0g(x,y)=2x+2y-P=0g(x,y)=2x+2y−P=0

梯度分别为

∇A=⟨y,x⟩,∇g=⟨2,2⟩\nabla A=\langle y,x\rangle,\qquad \nabla g=\langle 2,2\rangle∇A=⟨y,x⟩,∇g=⟨2,2⟩

所以拉格朗日方程为

⟨y,x⟩=λ⟨2,2⟩\langle y,x\rangle=\lambda\langle 2,2\rangle⟨y,x⟩=λ⟨2,2⟩

也就是

y=2λ,x=2λy=2\lambda,\qquad x=2\lambday=2λ,x=2λ

由此得到 x=yx=yx=y。再代入周长约束,

2x+2x=P2x+2x=P2x+2x=P

所以

x=y=P4x=y=\frac{P}{4}x=y=4P​

最大面积为

Amax⁡=P216A_{\max}=\frac{P^2}{16}Amax​=16P2​

固定周长下矩形面积最大化示意图,矩形边长为 x 和 y,满足 2x+2y=P,面积 A=xy,最优时 x=y。

这个结论并不意外,但拉格朗日乘子法给了一个统一做法:不用先把 yyy 消去,也不用猜“对称时最好”。它直接从“面积等值线与周长约束线相切”推出 x=yx=yx=y。


例题:到原点最近的平面点

求平面

x+2y+2z=9x+2y+2z=9x+2y+2z=9

上离原点最近的点。

离原点的距离为 x2+y2+z2\sqrt{x^2+y^2+z^2}x2+y2+z2​。因为平方根单调递增,可以改为最小化

f(x,y,z)=x2+y2+z2f(x,y,z)=x^2+y^2+z^2f(x,y,z)=x2+y2+z2

约束写成

g(x,y,z)=x+2y+2z−9=0g(x,y,z)=x+2y+2z-9=0g(x,y,z)=x+2y+2z−9=0

写出梯度方程。这里 ∇f=⟨2x,2y,2z⟩\nabla f=\langle 2x,2y,2z\rangle∇f=⟨2x,2y,2z⟩,∇g=⟨1,2,2⟩\nabla g=\langle 1,2,2\rangle∇g=⟨1,2,2⟩,所以

⟨2x,2y,2z⟩=λ⟨1,2,2⟩\langle 2x,2y,2z\rangle=\lambda\langle 1,2,2\rangle⟨2x,2y,2z⟩=λ⟨1,2,2⟩

由分量方程得到 2x=λ2x=\lambda2x=λ,2y=2λ2y=2\lambda2y=2λ,2z=2λ2z=2\lambda2z=2λ,也就是

x=λ2,y=λ,z=λx=\frac{\lambda}{2},\qquad y=\lambda,\qquad z=\lambdax=2λ​,y=λ,z=λ

把这些表达式代入平面约束:

λ2+2λ+2λ=9\frac{\lambda}{2}+2\lambda+2\lambda=92λ​+2λ+2λ=9

因此 92λ=9\frac{9}{2}\lambda=929​λ=9,得到 λ=2\lambda=2λ=2。

候选点为 (1,2,2)(1,2,2)(1,2,2)。它到原点的距离是

12+22+22=3\sqrt{1^2+2^2+2^2}=312+22+22​=3

平面是闭但无界集合,不过距离平方在远离原点时会变大,所以这个候选点给出最近距离。

这里的几何解释也很清楚。以原点为球心的球面逐渐变大,第一次碰到平面时正好相切。球面的法向量与平面的法向量平行,这正是拉格朗日方程。


预算约束中的乘子

拉格朗日乘子法在经济学模型中常见。设 U(x,y)U(x,y)U(x,y) 表示消费两种商品得到的效用,价格分别是 px,pyp_x,p_ypx​,py​,预算为 BBB。预算约束为

pxx+pyy=Bp_xx+p_yy=Bpx​x+py​y=B

在预算线内寻找最大效用时,拉格朗日方程给出

∇U=λ⟨px,py⟩\nabla U=\lambda\langle p_x,p_y\rangle∇U=λ⟨px​,py​⟩

写成分量就是

Ux=λpx,Uy=λpyU_x=\lambda p_x,\qquad U_y=\lambda p_yUx​=λpx​,Uy​=λpy​

若 px,pyp_x,p_ypx​,py​ 都不为零,可以得到

Uxpx=Uypy\frac{U_x}{p_x}=\frac{U_y}{p_y}px​Ux​​=py​Uy​​

这句话的意思是:在最优组合处,每花一单位货币买任一商品,带来的边际效用要相等。若某个商品的单位货币边际效用更高,就可以把预算从另一个商品挪过来,效用还会继续增加。

二维商品平面中预算约束线与效用等值线相切,红点标出最优组合。

在许多模型中,乘子 λ\lambdaλ 还能读成“放宽约束一小点时,最优目标值变化多少”。例如预算增加一点,最大可达效用大约增加 λ\lambdaλ 乘以那一点预算。这个解释依赖问题足够光滑,并且最优点没有突然跳到另一个约束位置。


多个约束

有时一个约束不够。空间中的点可能既要落在球面上,又要落在某个平面上;生产方案可能同时受材料、时间和预算限制。

若目标函数是 f(x,y,z)f(x,y,z)f(x,y,z),两个约束为

g(x,y,z)=0,h(x,y,z)=0g(x,y,z)=0,\qquad h(x,y,z)=0g(x,y,z)=0,h(x,y,z)=0

可行集合通常是一条空间曲线。最优点处,目标函数沿这条可行曲线的一阶变化为零,所以 ∇f\nabla f∇f 要垂直于可行曲线的切向量。另一方面,∇g\nabla g∇g 和 ∇h\nabla h∇h 都垂直于这条曲线。若 ∇g\nabla g∇g 与 ∇h\nabla h∇h 独立,它们张成可行曲线的法平面,于是 ∇f\nabla f∇f 应落在这个法平面内:

∇f=λ∇g+μ∇h\nabla f=\lambda\nabla g+\mu\nabla h∇f=λ∇g+μ∇h

再加上两个约束方程,就是完整的方程组:

∇f=λ∇g+μ∇h\nabla f=\lambda\nabla g+\mu\nabla h∇f=λ∇g+μ∇h g=0,h=0g=0,\qquad h=0g=0,h=0

三维示意图:半透明球面约束 g=0 与半透明平面约束 h=0 相交形成可行曲线,曲线上一点处显示 ∇f、∇g、∇h 及线性组合关系。

下面的交互把“线性组合”单独拿出来看。调节 λ\lambdaλ 与 μ\muμ,观察 λ∇g+μ∇h\lambda\nabla g+\mu\nabla hλ∇g+μ∇h 怎样追上目标梯度。

多个约束例题

在约束

x2+y2+z2=1,x−y=0x^2+y^2+z^2=1,\qquad x-y=0x2+y2+z2=1,x−y=0

下,求

f(x,y,z)=x+y+zf(x,y,z)=x+y+zf(x,y,z)=x+y+z

的最大值和最小值。

令

g(x,y,z)=x2+y2+z2−1g(x,y,z)=x^2+y^2+z^2-1g(x,y,z)=x2+y2+z2−1 h(x,y,z)=x−yh(x,y,z)=x-yh(x,y,z)=x−y

拉格朗日方程为

⟨1,1,1⟩=λ⟨2x,2y,2z⟩+μ⟨1,−1,0⟩\langle 1,1,1\rangle = \lambda\langle 2x,2y,2z\rangle +\mu\langle 1,-1,0\rangle⟨1,1,1⟩=λ⟨2x,2y,2z⟩+μ⟨1,−1,0⟩

再加上两个约束。分量方程是

1=2λx+μ1=2\lambda x+\mu1=2λx+μ 1=2λy−μ1=2\lambda y-\mu1=2λy−μ 1=2λz1=2\lambda z1=2λz

由 x−y=0x-y=0x−y=0 得 x=yx=yx=y。把前两式相加可得

2=2λ(x+y)2=2\lambda(x+y)2=2λ(x+y)

又因为第三式给出 1=2λz1=2\lambda z1=2λz,结合 x=yx=yx=y 可推出 x=y=zx=y=zx=y=z。代入球面约束,

3x2=13x^2=13x2=1

因此候选点为

(13,13,13)\left(\frac{1}{\sqrt3},\frac{1}{\sqrt3},\frac{1}{\sqrt3}\right)(3​1​,3​1​,3​1​)

和

(−13,−13,−13)\left(-\frac{1}{\sqrt3},-\frac{1}{\sqrt3},-\frac{1}{\sqrt3}\right)(−3​1​,−3​1​,−3​1​)

对应函数值为

3,−3\sqrt3,\qquad -\sqrt33​,−3​

所以最大值是 3\sqrt33​,最小值是 −3-\sqrt3−3​。


常见误区

不要把“解出拉格朗日方程”当成“已经找到最大最小”。方程给出的是候选点。最后仍要比较函数值,并检查约束集合的端点、分段处、奇异点,以及题目是否保证最大值或最小值存在。

忽略约束梯度为零

若约束写成 g(x,y)=0g(x,y)=0g(x,y)=0,但某个可行点上 ∇g=0\nabla g=0∇g=0,常规拉格朗日方程可能失效。比如约束

x2+y2=0x^2+y^2=0x2+y2=0

只包含原点一个可行点。任何目标函数在这个集合上的最大值和最小值都只能发生在原点,但这里

∇g(0,0)=⟨0,0⟩\nabla g(0,0)=\langle 0,0\rangle∇g(0,0)=⟨0,0⟩

无法提供有效的法向量。

忘记边界或变量范围

固定周长的矩形例题通常隐含 x>0,y>0x>0,y>0x>0,y>0。如果允许 x=0x=0x=0 或 y=0y=0y=0,还要检查退化矩形。它们面积为 000,不是最大值,但在别的题里,边界完全可能给出最大或最小。

过早消去变量

代换法当然可以用。例如由 x+y=10x+y=10x+y=10 写成 y=10−xy=10-xy=10−x,再做单变量优化。但当约束变多、变量变多、约束曲面难以参数化时,代换会变得笨重。拉格朗日乘子法的优势是保留变量之间的对称结构。


练习

  1. 在约束 x2+y2=1x^2+y^2=1x2+y2=1 下,求 f(x,y)=xyf(x,y)=xyf(x,y)=xy 的最大值和最小值。

设 g=x2+y2−1g=x^2+y^2-1g=x2+y2−1。由 ∇f=λ∇g\nabla f=\lambda\nabla g∇f=λ∇g 得

⟨y,x⟩=λ⟨2x,2y⟩\langle y,x\rangle=\lambda\langle 2x,2y\rangle⟨y,x⟩=λ⟨2x,2y⟩

即 y=2λxy=2\lambda xy=2λx,x=2λyx=2\lambda yx=2λy。若 x,yx,yx,y 都不为零,则 x2=y2x^2=y^2x2=y2。结合单位圆,得到 x=±yx=\pm yx=±y。同号时 xy=12xy=\frac12xy=21​,异号时 xy=−12xy=-\frac12xy=−21​。所以最大值为 12\frac1221​,最小值为 −12-\frac12−21​。

  1. 在约束 x2+y2=5x^2+y^2=5x2+y2=5 下,求 f(x,y)=x+2yf(x,y)=x+2yf(x,y)=x+2y 的最大值和最小值。

拉格朗日方程为

⟨1,2⟩=λ⟨2x,2y⟩\langle 1,2\rangle=\lambda\langle 2x,2y\rangle⟨1,2⟩=λ⟨2x,2y⟩

因此 (x,y)(x,y)(x,y) 与 (1,2)(1,2)(1,2) 同向或反向。单位方向 (1,2)/5(1,2)/\sqrt5(1,2)/5​ 乘半径 5\sqrt55​ 得到 (1,2)(1,2)(1,2),反向点为 (−1,−2)(-1,-2)(−1,−2)。函数值分别为 555 和 −5-5−5,所以最大值是 555,最小值是 −5-5−5。

  1. 周长为 202020 的矩形,面积最大时边长是多少?

令面积 A=xyA=xyA=xy,约束 2x+2y=202x+2y=202x+2y=20。由本章例题可知最优时 x=y=P/4x=y=P/4x=y=P/4。这里 P=20P=20P=20,所以 x=y=5x=y=5x=y=5,最大面积为 252525。

  1. 求直线 x+y=6x+y=6x+y=6 上离原点最近的点。

最小化 f=x2+y2f=x^2+y^2f=x2+y2,约束 g=x+y−6=0g=x+y-6=0g=x+y−6=0。由

⟨2x,2y⟩=λ⟨1,1⟩\langle 2x,2y\rangle=\lambda\langle 1,1\rangle⟨2x,2y⟩=λ⟨1,1⟩

得到 x=yx=yx=y。再代入 x+y=6x+y=6x+y=6,得 x=y=3x=y=3x=y=3。最近点是 (3,3)(3,3)(3,3),距离为 323\sqrt232​。

  1. 设效用函数 U(x,y)=xyU(x,y)=\sqrt{xy}U(x,y)=xy​,预算约束为 2x+y=122x+y=122x+y=12。在 x>0,y>0x>0,y>0x>0,y>0 下,求最大效用的消费组合。

有

Ux=12yx,Uy=12xyU_x=\frac12\sqrt{\frac{y}{x}},\qquad U_y=\frac12\sqrt{\frac{x}{y}}Ux​=21​xy​​,Uy​=21​yx​​

最优时

UxUy=21\frac{U_x}{U_y}=\frac{2}{1}Uy​Ux​​=12​

左边化简为 y/xy/xy/x,所以 y=2xy=2xy=2x。代入预算约束 2x+y=122x+y=122x+y=12,得 4x=124x=124x=12,所以 x=3,y=6x=3,y=6x=3,y=6。

  1. 在约束 x2+y2+z2=1x^2+y^2+z^2=1x2+y2+z2=1 与 x=yx=yx=y 下,求 f(x,y,z)=x+y+zf(x,y,z)=x+y+zf(x,y,z)=x+y+z 的最大值。

可行点满足 x=yx=yx=y,所以可写成 (x,x,z)(x,x,z)(x,x,z),并有 2x2+z2=12x^2+z^2=12x2+z2=1。由多个约束的拉格朗日条件可得最优候选点满足 x=y=zx=y=zx=y=z。代入球面约束,3x2=13x^2=13x2=1。最大点为

(13,13,13)\left(\frac{1}{\sqrt3},\frac{1}{\sqrt3},\frac{1}{\sqrt3}\right)(3​1​,3​1​,3​1​)

最大值为 3\sqrt33​。

  • 约束最优点在哪里
  • 梯度平行的理由
  • 从几何到方程组
  • 例题:固定周长的矩形
  • 例题:到原点最近的平面点
  • 预算约束中的乘子
  • 多个约束
    • 多个约束例题
  • 常见误区
    • 忽略约束梯度为零
    • 忘记边界或变量范围
    • 过早消去变量
  • 练习

目录

  • 约束最优点在哪里
  • 梯度平行的理由
  • 从几何到方程组
  • 例题:固定周长的矩形
  • 例题:到原点最近的平面点
  • 预算约束中的乘子
  • 多个约束
    • 多个约束例题
  • 常见误区
    • 忽略约束梯度为零
    • 忘记边界或变量范围
    • 过早消去变量
  • 练习