前言
本文并非要涉及数学史,只是追求推导及结果的严密性。
最初接触到拉格朗日乘子是求函数的条件极值,当时只是感觉这个算法比较巧妙,可无法从直观上去分析它的原理,感觉它的背后一定有一段故事。后来从图书馆里了解了它本质上属于最优化问题,也进一步了解了它的证明、
K
K
T
KKT
KKT条件以及拉格朗日对偶。但还是无法对其最基本最重要的由来问题找到一个解释,看李天岩老师的一篇文章《回首来时路》,里面的一句话让我印象深刻——“非常遗憾的是,极多数重要 论文的作者都不会轻易把他们脑子里真正的重点用力写出来。你必须自己去问这些问题,自己去追寻它的答案。”拉格朗日乘子,是我能与这段话产生共鸣的数学思想之一。我觉得我需要自己去寻找答案。
记得第一次遇到拉格朗日乘子法(拉格朗日乘数法),是这样描述的:
求
f
(
x
,
y
)
f(x,y)
f(x,y)在
g
(
x
,
y
)
=
0
g(x,y)=0
g(x,y)=0时的极值,我们引入新变量拉格朗日乘子
λ
\lambda
λ,这时,我们只需要求下列拉格朗日函数的极值:
τ
(
x
,
y
,
λ
)
=
f
(
x
,
y
)
+
λ
⋅
g
(
x
,
y
)
\tau (x,y,\lambda )=f(x,y)+\lambda \cdot g(x,y)
τ(x,y,λ)=f(x,y)+λ⋅g(x,y)
分别求
∂
τ
∂
x
=
0
∂
τ
∂
y
=
0
∂
τ
∂
λ
=
0
\begin{matrix} \frac{\partial \tau}{\partial x}=0 & \frac{\partial \tau}{\partial y}=0 & \frac{\partial \tau}{\partial \lambda }=0 \end{matrix}
∂x∂τ=0∂y∂τ=0∂λ∂τ=0联立求出
x
x
x和
y
y
y代入
f
(
x
,
y
)
f(x,y)
f(x,y)即得条件极值。算法在形式上极为简洁。不带有任何先验条件,可谓算法中的典范!可是它是如何被设计出来的?原作者是如何构思这个算法的?纵使我查遍那所图书馆所有关于凸优化和最优化的书籍依然没有得到答案。
某日偶然间翻看钱伟长的《变分法及有限元》,只翻看了前面几页,但已经有所收获。虽然还有很多可以补充,以及还有更高的层次可以提升;其中的逻辑在某些拐点处也略显卡顿。但毕竟这是困扰着很多人的一个问题,我下面将要讲述的,是对条件极值的纯代数的解析,希望能对读者有一点点启发。
我认为:条件极值问题可以理解为是流形上的余切向量场的零值问题。
流形上的余切向量场
设微分流形
M
M
M:
g
(
x
,
y
)
=
0
g(x,y)=0
g(x,y)=0,假设流形上的任意一点
p
p
p,切向量
v
v
v定义如下:
v
:
γ
→
γ
′
(
p
)
(
∀
γ
∈
C
p
∞
)
v:\gamma\rightarrow{\gamma}'(p)\left ( \forall \gamma\in C_{p}^{\infty } \right )
v:γ→γ′(p)(∀γ∈Cp∞)该泛函显然满足线性以及
L
e
i
b
n
i
z
Leibniz
Leibniz法则。然后我们定义余切向量
α
:
v
→
v
(
f
)
\alpha :v\rightarrow v(f)
α:v→v(f)
这样即生成一个流形
M
M
M上的余切向量场
A
1
(
M
)
A^{1}(M)
A1(M),也叫光滑的
(
0
,
1
)
(0,1)
(0,1)型张量场,或者一次微分式。
上述的条件极值问题等价于余切向量场
A
1
(
M
)
A^{1}(M)
A1(M)的零点问题。
该如何从整体而非局部(剖分)的角度上表达这个余切向量场呢?当然是用偏微分方程,即为下面的一阶线性偏微分方程:
d
f
=
∂
f
∂
x
d
x
+
∂
f
∂
y
d
y
df=\frac{\partial f}{\partial x}dx+\frac{\partial f}{\partial y}dy
df=∂x∂fdx+∂y∂fdy但是,上式的
d
x
dx
dx,
d
y
dy
dy不是独立的,由于
g
(
x
,
y
)
=
0
g(x,y)=0
g(x,y)=0,所以上式还要满足于下面的一阶线性齐次偏微分方程:
∂
g
∂
x
d
x
+
∂
g
∂
y
d
y
=
0
\frac{\partial g}{\partial x}dx+\frac{\partial g}{\partial y}dy=0
∂x∂gdx+∂y∂gdy=0
当我在学习数学物理方程的时候,我就有个疑问:为啥偏微分方程的求解总是人为的添加上一个或者几个的初始条件?后来想想,大概是因为偏微分方程是对流形求解,无法像一些特殊条件方程那样可以很容易的求到全局极值,只能通过对稠密子集的极值的求解来近似的表达这个全局极值。在这里,我们也人为的添加一个初始条件,它不改变流形的测度:假定
∂
g
∂
y
≠
0
\frac{\partial g}{\partial y}\neq 0
∂y∂g=0,这样,对上式进行求解,可得:
d
y
d
x
=
−
∂
g
∂
x
∂
g
∂
y
\frac{dy}{dx}=-\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}}
dxdy=−∂y∂g∂x∂g
而上面提到的
d
f
=
∂
f
∂
x
d
x
+
∂
f
∂
y
d
y
df=\frac{\partial f}{\partial x}dx+\frac{\partial f}{\partial y}dy
df=∂x∂fdx+∂y∂fdy就转化为
d
f
=
(
∂
f
∂
x
+
∂
f
∂
y
d
y
d
x
)
d
x
=
(
∂
f
∂
x
−
∂
f
∂
y
∂
g
∂
x
∂
g
∂
y
)
=
0
df=(\frac{\partial f}{\partial x}+\frac{\partial f}{\partial y}\frac{dy}{dx})dx=(\frac{\partial f}{\partial x}-\frac{\partial f}{\partial y}\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}})=0
df=(∂x∂f+∂y∂fdxdy)dx=(∂x∂f−∂y∂f∂y∂g∂x∂g)=0
偏微分方程
则上面的问题就转化成偏微分方程组:
{
(
∂
f
∂
x
−
∂
f
∂
y
∂
g
∂
x
∂
g
∂
y
)
=
0
g
(
x
,
y
)
=
0
\left\{\begin{matrix} (\frac{\partial f}{\partial x}-\frac{\partial f}{\partial y}\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}})=0\\ g(x,y)=0 \end{matrix}\right.
{(∂x∂f−∂y∂f∂y∂g∂x∂g)=0g(x,y)=0
下面就解这个方程组,其主要的还是解
(
∂
f
∂
x
−
∂
f
∂
y
∂
g
∂
x
∂
g
∂
y
)
=
0
(\frac{\partial f}{\partial x}-\frac{\partial f}{\partial y}\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}})=0
(∂x∂f−∂y∂f∂y∂g∂x∂g)=0。
o
r
i
g
i
n
a
l
−
f
o
r
m
u
l
a
⇒
∂
f
∂
x
∂
f
∂
y
=
∂
g
∂
x
∂
g
∂
y
⇒
{
∂
f
∂
x
+
λ
∂
g
∂
x
=
0
∂
f
∂
y
+
λ
∂
g
∂
y
=
0
original-formula\Rightarrow \frac{\frac{\partial f}{\partial x}}{\frac{\partial f}{\partial y}}=\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}}\Rightarrow \left\{\begin{matrix} \frac{\partial f}{\partial x}+\lambda \frac{\partial g}{\partial x}=0\\ \frac{\partial f}{\partial y}+\lambda \frac{\partial g}{\partial y}=0 \end{matrix}\right.
original−formula⇒∂y∂f∂x∂f=∂y∂g∂x∂g⇒{∂x∂f+λ∂x∂g=0∂y∂f+λ∂y∂g=0
观察上面的方程组,上面的方程只含有未知数
x
x
x,下面的方程只含有未知数
y
y
y,它们实际上是某个流形的偏微分,假设该流形为
τ
\tau
τ,则实际上等价于
d
τ
=
(
∂
f
∂
x
+
λ
∂
g
∂
x
)
d
x
+
(
∂
f
∂
y
+
λ
∂
g
∂
y
)
d
y
=
0
d\tau=(\frac{\partial f}{\partial x}+\lambda \frac{\partial g}{\partial x})dx+(\frac{\partial f}{\partial y}+\lambda \frac{\partial g}{\partial y})dy=0
dτ=(∂x∂f+λ∂x∂g)dx+(∂y∂f+λ∂y∂g)dy=0
这时候答案已经很清楚了吧,两边积分得
τ
(
x
,
y
)
=
f
(
x
,
y
)
+
λ
g
(
x
,
y
)
\tau(x,y )=f(x,y)+\lambda g(x,y)
τ(x,y)=f(x,y)+λg(x,y)
完整形式如下
{
τ
(
x
,
y
)
=
f
(
x
,
y
)
+
λ
g
(
x
,
y
)
g
(
x
,
y
)
=
0
\left\{\begin{matrix} \tau(x,y)=f(x,y)+\lambda g(x,y)\\ g(x,y)=0 \end{matrix}\right.
{τ(x,y)=f(x,y)+λg(x,y)g(x,y)=0
观察即可得:上面的方程组的极值可以化简为一个方程的极值,即是把常数
λ
\lambda
λ转化为参数变量,即是传说中的拉格朗日乘子:
τ
(
x
,
y
,
λ
)
=
f
(
x
,
y
)
+
λ
g
(
x
,
y
)
\tau(x,y,\lambda)=f(x,y)+\lambda g(x,y)
τ(x,y,λ)=f(x,y)+λg(x,y)
对上式
λ
\lambda
λ求导等价于
g
(
x
,
y
)
=
0
g(x,y)=0
g(x,y)=0。另外:
τ
\tau
τ分明就是一个单参数变换群嘛,可见,求条件极值的过程其实就是找一个切向量场的过程。
当然,条件极值问题还有更复杂的形式——约束条件更多以及参数更多,从上述的最简单的形式很容易的推广,在本文就不再赘述了。
参考文献
[1] 变分法及有限元 钱伟长著
[2] 最优化问题的扰动分析 【法】J.F.博南,【美】A.夏皮罗 著 张立卫译
转载请注明出处:http://blog.csdn.net/fourierFeng/article/details/77929297