此条目需要精通或熟悉相关主题的编者参与及协助编辑。 (2014年7月22日)请
邀请 适合的人士
改善本条目 。更多的细节与详情请参见
讨论页 。
图1:绿线标出的是约束g (x ,y ) = c 的点的轨迹。蓝线是f 的等高线。箭头表示梯度,和等高线的法线平行。 拉格朗日乘数法 (英语:Lagrange multiplier ,以数学家约瑟夫·拉格朗日 命名),在数学 中的最优化 问题中,是一种寻找多元函数 在其变量 受到一个或多个条件的约束时的局部极值的方法。这种方法可以将一个有n 个变量与k 个约束条件的最优化问题转换为一个解有n + k 个变量的方程 组的解的问题。这种方法中引入了一个或一组新的未知数 ,即拉格朗日乘数 ,又称拉格朗日乘子 ,或拉氏乘子 ,它们是在转换后的方程,即约束方程中作为梯度 (gradient)的线性组合 中各个向量的系数。
比如,要求
f
(
x
,
y
)
{\displaystyle f(x,y)\,}
在
g
(
x
,
y
)
=
0
{\displaystyle g(x,y)=0\,}
时的局部极值时,我们可以引入新变量拉格朗日乘数
λ
{\displaystyle \lambda }
,这时我们只需要求下列拉格朗日函数的局部极值:
L
(
x
,
y
,
λ
)
=
f
(
x
,
y
)
−
λ
⋅
g
(
x
,
y
)
{\displaystyle {\mathcal {L))(x,y,\lambda )=f(x,y)-\lambda \cdot g(x,y)}
更一般地,对含n 个变量和k 个约束的情况,有:
L
(
x
1
,
…
,
x
n
,
λ
1
,
…
,
λ
k
)
=
f
(
x
1
,
…
,
x
n
)
−
∑
i
=
1
k
λ
i
g
i
(
x
1
,
…
,
x
n
)
,
{\displaystyle {\mathcal {L))\left(x_{1},\ldots ,x_{n},\lambda _{1},\ldots ,\lambda _{k}\right)=f\left(x_{1},\ldots ,x_{n}\right)-\sum \limits _{i=1}^{k}{\lambda _{i}g_{i}\left(x_{1},\ldots ,x_{n}\right)},}
拉格朗日乘数法所得的临界点 会包含原问题的所有临界点 ,但并不保证每个拉格朗日乘数法所得的临界点都是原问题的临界点。拉格朗日乘数法的正确性的证明牵涉到偏微分 ,全微分 或链式法则 。
介绍
微积分中最常见的问题之一是求一个函数的极大极小值(极值)。但是很多时候找到极值函数的显式表达是很困难的,特别是当函数有先决条件或约束时。拉格朗日乘数则提供了一个非常便利方法来解决这类问题,而避开显式地引入约束和求解外部变量。
先看一个三维的例子:假设有函数:
f
(
x
,
y
)
{\displaystyle f(x,y)}
,要求其极值(最大值/最小值),且满足条件
g
(
x
,
y
)
=
c
{\displaystyle g\left(x,y\right)=c}
c 为常数。对不同
d
n
{\displaystyle d_{n))
的值,不难想像出
f
(
x
,
y
)
=
d
n
{\displaystyle f\left(x,y\right)=d_{n))
的等高线。而方程
g
{\displaystyle g}
的可行集所构成的线正好是
g
(
x
,
y
)
=
c
{\displaystyle g(x,y)=c}
。想像我们沿着
g
=
c
{\displaystyle g=c}
的可行集走;因为大部分情况下
f
{\displaystyle f}
的等高线和
g
{\displaystyle g}
的可行集线不会重合,但在有解的情况下,这两条线会相交。想像此时我们移动
g
=
c
{\displaystyle g=c}
上的点,因为
f
{\displaystyle f}
是连续的方程,我们因此能走到
f
(
x
,
y
)
=
d
n
{\displaystyle f\left(x,y\right)=d_{n))
更高或更低的等高线上,也就是说
d
n
{\displaystyle d_{n))
可以变大或变小。只有当
g
(
x
,
y
)
=
c
{\displaystyle g(x,y)=c}
和
f
(
x
,
y
)
=
d
n
{\displaystyle f\left(x,y\right)=d_{n))
相切,也就是说,此时,我们正同时沿着
g
(
x
,
y
)
=
c
{\displaystyle g(x,y)=c}
和
f
(
x
,
y
)
=
d
n
{\displaystyle f\left(x,y\right)=d_{n))
走。这种情况下,会出现极值 或鞍点 。
气象图中就很常出现这样的例子,当温度和气压两列等高线同时出现的时候,切点就意味着约束极值的存在。
用向量 的形式来表达的话,我们说相切的性质在此意味着
f
{\displaystyle f}
和
g
{\displaystyle g}
的切线在某点上平行,同时也意味着两者的梯度向量有如下关系(引入一个未知标量
λ
{\displaystyle \lambda }
):
∇
f
(
x
,
y
)
=
−
λ
∇
(
g
(
x
,
y
)
−
c
)
{\displaystyle \nabla f\left(x,y\right)=-\lambda \nabla \left(g\left(x,y\right)-c\right)}
即:
∇
[
f
(
x
,
y
)
+
λ
(
g
(
x
,
y
)
−
c
)
]
=
0
{\displaystyle \nabla {\Big [}f\left(x,y\right)+\lambda \left(g\left(x,y\right)-c\right){\Big ]}={\boldsymbol {0))}
.一旦求出
λ
{\displaystyle \lambda }
的值,将其套入下式,易求在无约束条件下的极值和对应的极值点。
F
(
x
,
y
,
λ
)
{\displaystyle F\left(x,y,\lambda \right)}
=
f
(
x
,
y
)
+
λ
(
g
(
x
,
y
)
−
c
)
{\displaystyle f\left(x,y\right)+\lambda \left(g\left(x,y\right)-c\right)}
新方程
F
(
x
,
y
,
λ
)
{\displaystyle F(x,y,\lambda )}
在达到极值时与
f
(
x
,
y
)
{\displaystyle f(x,y)}
相等。因为
F
(
x
,
y
,
λ
)
{\displaystyle F(x,y,\lambda )}
达到极值时
∇
F
(
x
,
y
,
λ
)
=
0
{\displaystyle \nabla F(x,y,\lambda )=0}
,而
∂
F
∂
λ
=
g
(
x
,
y
)
−
c
{\displaystyle {\frac {\partial F}{\partial \lambda ))=g\left(x,y\right)-c}
,也就是说
g
(
x
,
y
)
−
c
{\displaystyle g(x,y)-c}
等于零。
证明
设函数
f
(
x
,
y
)
{\displaystyle f(x,y)}
在
A
{\displaystyle A}
点处有极值
κ
{\displaystyle \kappa }
,且在
A
{\displaystyle A}
点的邻域内连续。则在
A
{\displaystyle A}
点处有
f
(
x
,
y
)
=
κ
{\displaystyle f\left(x,y\right)=\kappa }
另有一常值函数
g
(
x
,
y
)
=
c
{\displaystyle g\left(x,y\right)=c}
两函数在
A
{\displaystyle A}
点处的全微分为
d
f
=
∂
f
∂
x
d
x
+
∂
f
∂
y
d
y
=
0
{\displaystyle \mathrm {d} f={\frac {\partial {f)){\partial {x))}\mathrm {d} x+{\frac {\partial {f)){\partial {y))}\mathrm {d} y=0}
d
g
=
∂
g
∂
x
d
x
+
∂
g
∂
y
d
y
=
0
{\displaystyle \mathrm {d} g={\frac {\partial {g)){\partial {x))}\mathrm {d} x+{\frac {\partial {g)){\partial {y))}\mathrm {d} y=0}
当中的等式右方等于零是由于极值会发生在两者函数斜率完全相同且
f
(
x
,
y
)
{\displaystyle f\left(x,y\right)}
在区段内有极值的时候
由于
d
x
{\displaystyle \mathrm {d} x}
和
d
y
{\displaystyle \mathrm {d} y}
是任取的无穷小量,故该线性方程组的系数成比例,有
∂
f
∂
x
∂
g
∂
x
=
∂
f
∂
y
∂
g
∂
y
=
−
λ
{\displaystyle {\dfrac {\dfrac {\partial {f)){\partial {x))}{\dfrac {\partial {g)){\partial {x))))={\dfrac {\dfrac {\partial {f)){\partial {y))}{\dfrac {\partial {g)){\partial {y))))=-\lambda }
即
∂
f
∂
x
+
λ
⋅
∂
g
∂
x
=
0
{\displaystyle {\frac {\partial {f)){\partial {x))}+\lambda \cdot {\frac {\partial {g)){\partial {x))}=0}
∂
f
∂
y
+
λ
⋅
∂
g
∂
y
=
0
{\displaystyle {\frac {\partial {f)){\partial {y))}+\lambda \cdot {\frac {\partial {g)){\partial {y))}=0}
将上二式分别乘以
d
x
{\displaystyle \mathrm {d} x}
和
d
y
{\displaystyle \mathrm {d} y}
,再相加并积分,得到一新函数
L
(
x
,
y
,
λ
)
=
f
(
x
,
y
)
+
λ
⋅
g
(
x
,
y
)
{\displaystyle {\mathcal {L))(x,y,\lambda )=f(x,y)+\lambda \cdot g(x,y)}
那么,求原函数极值的问题就转化为求该函数极值的问题。
类似地,这种求极值的方法也可以推广到多维函数
f
(
x
1
,
…
,
x
n
)
{\displaystyle f\left(x_{1},\ldots ,x_{n}\right)}
。
拉格朗日乘数的运用方法
如f 定义为在R n 上的方程,约束为gk (x )= ck (或将约束左移得到g k (x ) − ck = 0 )。定义拉格朗日Λ 为
Λ
(
x
,
λ
)
=
f
+
∑
k
λ
k
(
g
k
−
c
k
)
{\displaystyle \Lambda (\mathbf {x} ,{\boldsymbol {\lambda )))=f+\sum _{k}\lambda _{k}(g_{k}-c_{k})}
。注意极值的条件和约束现在就都被记录到一个式子里了:
∇
Λ
=
0
⇔
∇
f
=
−
∑
k
λ
k
∇
g
k
,
{\displaystyle \nabla \Lambda =0\Leftrightarrow \nabla f=-\sum _{k}\lambda _{k}\nabla \ g_{k},}
和
∇
λ
Λ
=
0
⇔
g
k
=
c
k
{\displaystyle \nabla _{\mathbf {\lambda } }\Lambda =0\Leftrightarrow g_{k}=c_{k))
。拉格朗日乘数常被用作表达最大增长值。原因是从式子:
−
∂
Λ
∂
c
k
=
λ
k
{\displaystyle -{\frac {\partial \Lambda }{\partial {c_{k))))=\lambda _{k))
。中我们可以看出λ k 是当方程在被约束条件下,能够达到的最大增长率。拉格朗日力学 就使用到这个原理。
拉格朗日乘数法在卡罗需-库恩-塔克条件 被推广。
例子
求此方程的最小值:
f
(
x
,
y
)
=
x
2
y
{\displaystyle f(x,y)=x^{2}y}
同时未知数满足
x
2
+
y
2
=
1
{\displaystyle x^{2}+y^{2}=1}
因为只有一个未知数的约束条件,我们只需要用一个乘数
λ
{\displaystyle \lambda }
.
g
(
x
,
y
)
=
x
2
+
y
2
−
1
{\displaystyle g(x,y)=x^{2}+y^{2}-1}
Φ
(
x
,
y
,
λ
)
=
f
(
x
,
y
)
+
λ
g
(
x
,
y
)
=
x
2
y
+
λ
(
x
2
+
y
2
−
1
)
{\displaystyle \Phi (x,y,\lambda )=f(x,y)+\lambda g(x,y)=x^{2}y+\lambda (x^{2}+y^{2}-1)}
将所有
Φ
{\displaystyle \Phi }
方程的偏微分设为零,得到一个方程组,最小值是以下方程组的解中的一个:
2
x
y
+
2
λ
x
=
0
{\displaystyle 2xy+2\lambda x=0}
x
2
+
2
λ
y
=
0
{\displaystyle x^{2}+2\lambda y=0}
x
2
+
y
2
−
1
=
0
{\displaystyle x^{2}+y^{2}-1=0}
求此离散分布 的最大熵 :
f
(
p
1
,
p
2
,
…
,
p
n
)
=
−
∑
k
=
1
n
p
k
log
2
p
k
{\displaystyle f(p_{1},p_{2},\ldots ,p_{n})=-\sum _{k=1}^{n}p_{k}\log _{2}p_{k))
。所有概率的总和是1,因此我们得到的约束是g (p )= 1即
g
(
p
1
,
p
2
,
…
,
p
n
)
=
∑
k
=
1
n
p
k
=
1
{\displaystyle g(p_{1},p_{2},\ldots ,p_{n})=\sum _{k=1}^{n}p_{k}=1}
。可以使用拉格朗日乘数找到最高熵(概率的函数)。对于所有的k 从1到n ,要求
∂
∂
p
k
(
f
+
λ
(
g
−
1
)
)
=
0
,
{\displaystyle {\frac {\partial }{\partial p_{k))}(f+\lambda (g-1))=0,}
由此得到
∂
∂
p
k
(
−
∑
k
=
1
n
p
k
log
2
p
k
+
λ
(
∑
k
=
1
n
p
k
−
1
)
)
=
0
{\displaystyle {\frac {\partial }{\partial p_{k))}\left(-\sum _{k=1}^{n}p_{k}\log _{2}p_{k}+\lambda (\sum _{k=1}^{n}p_{k}-1)\right)=0}
。计算出这n 个等式的微分,我们得到:
−
(
1
ln
2
+
log
2
p
k
)
+
λ
=
0
{\displaystyle -\left({\frac {1}{\ln 2))+\log _{2}p_{k}\right)+\lambda =0}
。这说明p i 都相等(因为它们都只是λ的函数)。解出约束∑k p k = 1,得到
p
k
=
1
n
{\displaystyle p_{k}={\frac {1}{n))}
。因此,使用均匀分布可得到最大熵的值。
经济学
约束最优化在经济学 占有很重要的地位。例如一个消费者 的选择问题可以被视为一个求效用方程 在预算约束 下的最大值问题。拉格朗日乘数在经济学中被解释为影子价格 ,设定在某种约束下,在这里即收入的边际效用 。
拉格朗日乘数就是效用函数在最优解处对收入的偏导数,也就是在最优解处增加一个单位收入带来的效用增加,或者说在最优解处有效用衡量收入的价值,称之为收入的边际效用。
在企业生产问题中,拉格朗日乘数用来衡量要素投入变动所带来的收入变动,du/dm=λ,u表示效用函数或生产函数,m表示收入或要素投入。
在具体数学推导中还可以运用包络定理的内容。
对外链接
参考拉格朗日原作或方法的命名:
更深入的介绍和互动applet: