约束最优化问题的拉格朗日乘子法与KKT条件详解
罗光宣
一、拉格朗日乘子法核心用途
在高数、线性代数、机器学习优化中,我们常遇到两类极值问题:
1.无约束极值:自由求函数最大 / 最小值,直接令偏导数为 0 即可。
2.带等式约束极值:变量必须满足固定条件,不能自由取值。
拉格朗日乘子法唯一核心功能:求解【带等式约束】的多元函数极值。
标准数学形式:
通俗理解:
在约束曲线
的轨迹上,找到目标函数
的最高点或最低点。
二、核心几何原理
1.函数
有无数条等高线(同一高度的曲线);
2.约束
是一条固定轨迹曲线;
3.极值出现的唯一条件:等高线与约束曲线相切。
这里重点精讲:为什么约束极值点,等高线必须和约束曲线相切,相交绝对无法取到极值?
我们的求解前提是:所有可行点,都必须牢牢落在约束曲线
上,只能沿着这条曲线移动,寻找目标函数
的最值。
假设等高线与约束曲线相交而非相切:相交点处,两条曲线存在不同的切线方向,也就意味着目标函数的梯度、约束曲线的梯度不在同一直线上。此时沿着约束曲线向前、向后微小移动,都能切换到数值更大或更小的等高线上,函数值还能继续变化、升降,说明这个交点只是普通可行点,并非最高点或最低点,自然不是极值点。
只有二者相切时:切点处两条曲线共用同一条切线,没有任何可移动的微小空间能让函数值继续升降。沿着约束曲线任意方向移动,都会离开当前等高线,且函数值只会单向变化,无法再优化,此时达到临界平衡点,这就是约束条件下唯一的极值位置。
核心原理衔接:相切与拉格朗日函数的对等关系
几何相切的本质是:极值点处目标函数与约束函数的梯度向量相互平行。向量平行的数学定义为:一个向量可由另一个向量常数倍缩放得到,即
。
我们构造拉格朗日函数
,并令其梯度
,本质就是通过代数公式,强行锁死梯度平行的几何相切条件。其中常数
为拉格朗日乘子,仅用于缩放约束梯度的长度,实现两组梯度完美对齐,这也是拉格朗日方法能求解约束极值的根本原因。
从数学本质来看:相切意味着两条曲线在该点法线平行、梯度共线,目标函数的梯度可以被约束函数的梯度线性表示,由此推导出拉格朗日乘子的核心公式。
其中
称为拉格朗日乘子(仅为常数,无固定正负)。
三、通用解题步骤(万能四步法)
步骤 1:构造拉格朗日函数
已知:目标函数
,约束 
构造:
步骤 2:列偏导方程组
对
分别求偏导,并令偏导数为0: 
步骤 3:解方程组
求出所有驻点
。
步骤 4:判断极值
代入原函数,比较大小,确定最大值、最小值。
四、拓展知识
1. 多等式约束
若存在多个等式约束
,可拓展构造多元拉格朗日函数,引入多个对应的拉格朗日乘子
,构造形式为:

多约束极值核心判定规则不变:极值点处目标函数梯度为所有约束函数梯度的线性组合,几何上依旧满足与全部约束边界相切的条件,求解步骤和单约束完全一致。
多约束极值核心判定规则不变:极值点处目标函数梯度为所有约束函数梯度的线性组合,几何上依旧满足与全部约束边界相切的条件,求解步骤和单约束完全一致。

核心原理与单约束完全一致:极值点处目标函数梯度为各约束函数梯度的线性组合,依旧满足等高线与所有约束曲线同时相切的几何条件,求解方式同样遵循求偏导、联立方程组、代入约束求解的核心步骤。
2. 不等式约束(KKT 条件)
名词解释: KKT(Karush–Kuhn–Tucker),即卡鲁什 - 库恩 - 塔克条件,以三位数学家 William Karush、Harold Kuhn、Albert Tucker 的姓氏联合命名。
普通拉格朗日乘子法仅适用于等式约束,实际优化问题中还存在大量不等式约束场景,此时需要用到进阶的KKT条件,也是高数进阶、运筹学、机器学习优化的核心知识点。
1. 约束松弛(不起作用):若极值点落在可行域内部,满足
,此时约束不限制变量取值,等价于无约束极值,直接令函数偏导数为0即可,对应拉格朗日乘子
。
标准不等式约束极值问题:在约束
下,求解目标函数
的最值。
我们依旧沿用梯度共线的核心思想,但不等式约束存在两种可行状态,需要分类讨论:
1. 约束松弛(不起作用):若极值点落在可行域内部,满足
,此时约束不限制变量取值,等价于无约束极值,直接令函数偏导数为0即可,对应拉格朗日乘子
。
2. 约束紧致(起作用):若极值点落在可行域边界,满足
,此时不等式约束退化为等式约束,和普通拉格朗日乘子法原理一致,等高线与约束边界曲线相切,对应拉格朗日乘子
。
3. 核心 KKT 四条件汇总
针对不等式约束优化问题:
构造拉格朗日函数
,极值点必须同时满足:
① 平稳性条件:
② 互补松弛条件:
③ 原始约束:
④ 对偶约束:
KKT 条件经典例题
题目:用 KKT 条件求目标函数
在不等式约束
下的最小值。
解:
步骤1:构造拉格朗日函数

步骤2:列出全部 KKT 条件
平稳性条件:
互补松弛:
约束条件:
对偶条件:
步骤3:分类讨论求解(KKT 核心)
情况一:约束松弛,(
)
代入偏导方程得:
。
验证约束:
,满足条件。此时函数值
。
情况二:约束紧致,(
)
由互补松弛条件得:
。
由偏导方程得:
,即
。
联立约束解得:
,全部条件满足。
此时函数值
。
步骤4:比较取值,确定最值
对比两组可行解函数值:
。
结论:该不等式约束下,函数最小值为
,极值点为
。
例题总结:本题直观体现了 KKT 条件的核心价值,通过互补松弛条件分情况讨论,既能判定可行域内部极值,也能判定边界极值,完美解决普通拉格朗日无法求解的不等式约束问题。
基于以上特性,KKT条件整合出不等式约束极值的核心判定条件,统一构造拉格朗日函数
,需同时满足:
① 梯度条件:
(驻点条件);
② 互补松弛条件:
(核心关键,区分松弛/紧致状态);
③ 约束条件:
;
④ 乘子非负:
。
通俗总结:KKT条件是拉格朗日乘子法的升级版,兼容等式、不等式所有约束场景,通过互补松弛条件自动判断约束是否生效,是解决有界优化问题的通用方法。

五、例题
例题 1
题目:求函数
在约束
下的最小值。
解:
1.构造拉格朗日函数

2.求偏导、列方程
3.解方程
由前两式:
代入约束:
4.求最值
代入原函数:
结论:最小值为
,无最大值。

例题 2
题目:求
在约束
(
)下的最大值。
解:
1.构造函数
2.求偏导列方程 
3.联立求解
得:
代入约束:
4.计算最值
代入原函数:
结论:该约束下函数最大值为
。

六、常见易错点(避坑总结)
1.拉格朗日求出的点是驻点,不直接等于极值,需要代入验证;
等式约束中
可正可负,不用强制大于 0;
1.必须严格带入原始约束条件解方程,不能漏方程;
2.仅适用于连续可导函数。

七、练习题
作业题 1
求函数
在约束
条件下的极小值。
作业题 2
已知周长固定
的矩形,设长、宽为
矩形面积
的最大值。问题。

