# 1. 拉格朗日乘子法与KKT条件
# 1.1. 定义
设给定二元函数z=ƒ(x,y)和附加条件φ(x,y)=0,为寻找z=ƒ(x,y)在附加条件下的极值点,先做拉格朗日函数
,其中λ为参数。
令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下的可能极值点。
若这样的点只有一个,由实际问题可直接确定此即所求的点。
即:
# 1.2. 举例
解:
# 1.3. 理解
要求方程x^2^y-3=0与原点的最小距离,问题被转化为了同心圆与x^2^y-3=0什么时候相切:
相切就是在极小值点有相同的切线,只要能通过数学把相切这个条件表示出来,就可以得到解。
我们把同心圆可以看作凸函数f(x,y)=x^2^+y^2^的等高线:
把方程x^2^y-3=0看作凸函数g(x,y)=x^2^y的等高线中的一条:
这样f的等高线,同心圆,的法线就是▽f:
g的等高线的其中一条,方程x^2^y-3=0,的法线就是▽g
两者相切就意味着,在切点,两者法线平行,也就是: ▽f+λ▽g=0
# 1.3.1. 代数
上面的问题形式化后,用代数表示为(subject to的意思是服从于,约束于的意思):
只需解如下方程组:
# 1.4. 多等式约束下的极值
比如下图
要求f被g1=0,g2=0约束后的极值,可以证明在极值点▽f必然在▽g1, ▽g2张成的空间中。 那么上面的问题形式化后就是:
只需解如下方程组:
更一般的,如果有n个约束等式:
只需解如下方程组:
# 1.5. 不等式约束下的极值
比如,我们要求刚才同心圆的最小值:
那肯定就是原点啦,半径为0肯定就是最小值了。
从代数上看就是要求:
解:
# 1.5.1. 情况一
我们给它添加一个不等式约束,也就是求:
可以看到,这个不等式约束实际上包含了原点:
所以这个约束等于没有,依然求解:
# 1.5.2. 情况二
换一个不等式约束:
不等式约束如下图所示。
因为同心圆是凸函数的等高线,所以等高线的值是这么排列的。
所以,在不等式约束下,最小值是在边缘相切的地方取得,和用等式h(x,y)=x+y=-2进行约束效果是一样的:
因此可以通过解方程组求出答案:
# 1.5.3. 新增的条件
仔细研究,不等式实际上带来了新的条件。
同心圆是凸函数的等高线,等高线的值如下排列,所以在相切处,法线也就是▽f的方向如下(法线也就是梯度,指向增长最快的方向,也就是等高线的值变大的方向)。
而凸函数h(x,y)的法线▽h也一样指向h(x,y)增长的方向,这个方向正好和▽f相反:
因此: ▽f+μ▽h=0, μ>0 其中,μ>0 就表明▽f, ▽h方向相反。因此刚才的方程组可以再增加一个条件:
# 1.6. KKT条件
因此,综合上面的所有情况,可以把求如下的极值:
通过解下面这个方程组来得到答案:
这个方程组也就是所谓的KKT条件。进一步解释下方程组的各个项::