# 1. 拉格朗日乘子法与KKT条件

# 1.1. 定义

设给定二元函数z=ƒ(x,y)和附加条件φ(x,y)=0,为寻找z=ƒ(x,y)在附加条件下的极值点,先做拉格朗日函数

img

,其中λ为参数。

令F(x,y,λ)对x和y和λ的一阶偏导数等于零,即

F'x=ƒ'x(x,y)+λφ'x(x,y)=0 
F'y=ƒ'y(x,y)+λφ'y(x,y)=0
F'λ=φ(x,y)=0

由上述方程组解出x,y及λ,如此求得的(x,y),就是函数z=ƒ(x,y)在附加条件φ(x,y)=0下的可能极值点

若这样的点只有一个,由实际问题可直接确定此即所求的点

即:

img

# 1.2. 举例

img

解:

img

# 1.3. 理解

要求方程x^2^y-3=0与原点的最小距离,问题被转化为了同心圆与x^2^y-3=0什么时候相切:

img

相切就是在极小值点有相同的切线,只要能通过数学把相切这个条件表示出来,就可以得到解。

我们把同心圆可以看作凸函数f(x,y)=x^2^+y^2^的等高线

img

把方程x^2^y-3=0看作凸函数g(x,y)=x^2^y的等高线中的一条

img

这样f的等高线,同心圆,的法线就是▽f

img

g的等高线的其中一条,方程x^2^y-3=0,的法线就是▽g

两者相切就意味着,在切点,两者法线平行,也就是: ▽f+λ▽g=0

img

# 1.3.1. 代数

上面的问题形式化后,用代数表示为(subject to的意思是服从于,约束于的意思):

img

只需解如下方程组:

img

# 1.4. 多等式约束下的极值

比如下图

img

要求f被g1=0,g2=0约束后的极值,可以证明在极值点▽f必然在▽g1, ▽g2张成的空间中。 那么上面的问题形式化后就是:

img

只需解如下方程组:

img

更一般的,如果有n个约束等式:

img

只需解如下方程组:

img

# 1.5. 不等式约束下的极值

比如,我们要求刚才同心圆的最小值

img

那肯定就是原点啦,半径为0肯定就是最小值了

从代数上看就是要求:

img

解:

img

# 1.5.1. 情况一

我们给它添加一个不等式约束,也就是求:

img

可以看到,这个不等式约束实际上包含了原点

img

所以这个约束等于没有,依然求解:

img

# 1.5.2. 情况二

换一个不等式约束:

img

不等式约束如下图所示。

因为同心圆是凸函数的等高线,所以等高线的值是这么排列的。

所以,在不等式约束下,最小值是在边缘相切的地方取得,和用等式h(x,y)=x+y=-2进行约束效果是一样的

img

因此可以通过解方程组求出答案:

img

# 1.5.3. 新增的条件

仔细研究,不等式实际上带来了新的条件。

同心圆是凸函数的等高线,等高线的值如下排列,所以在相切处,法线也就是▽f的方向如下(法线也就是梯度,指向增长最快的方向,也就是等高线的值变大的方向)。

凸函数h(x,y)的法线▽h也一样指向h(x,y)增长的方向,这个方向正好和▽f相反

img

因此: ▽f+μ▽h=0, μ>0 其中,μ>0 就表明▽f, ▽h方向相反。因此刚才的方程组可以再增加一个条件:

img

# 1.6. KKT条件

因此,综合上面的所有情况,可以把求如下的极值:

img

通过解下面这个方程组来得到答案:

img

这个方程组也就是所谓的KKT条件。进一步解释下方程组的各个项::

img