拉格朗日乘子法的由来

前言

本文并非要涉及数学史,只是追求推导及结果的严密性。
最初接触到拉格朗日乘子是求函数的条件极值,当时只是感觉这个算法比较巧妙,可无法从直观上去分析它的原理,感觉它的背后一定有一段故事。后来从图书馆里了解了它本质上属于最优化问题,也进一步了解了它的证明、 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τ=0yτ=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) α:vv(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=xfdx+yfdy但是,上式的 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 xgdx+ygdy=0
当我在学习数学物理方程的时候,我就有个疑问:为啥偏微分方程的求解总是人为的添加上一个或者几个的初始条件?后来想想,大概是因为偏微分方程是对流形求解,无法像一些特殊条件方程那样可以很容易的求到全局极值,只能通过对稠密子集的极值的求解来近似的表达这个全局极值。在这里,我们也人为的添加一个初始条件,它不改变流形的测度:假定 ∂ g ∂ y ≠ 0 \frac{\partial g}{\partial y}\neq 0 yg=0,这样,对上式进行求解,可得: d y d x = − ∂ g ∂ x ∂ g ∂ y \frac{dy}{dx}=-\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}} dxdy=ygxg
而上面提到的 d f = ∂ f ∂ x d x + ∂ f ∂ y d y df=\frac{\partial f}{\partial x}dx+\frac{\partial f}{\partial y}dy df=xfdx+yfdy就转化为
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=(xf+yfdxdy)dx=(xfyfygxg)=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. {(xfyfygxg)=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 (xfyfygxg)=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. originalformulayfxf=ygxg{xf+λxg=0yf+λyg=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τ=(xf+λxg)dx+(yf+λyg)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

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
拉格朗日乘子法是一种优化算法,应用于具有约束条件的优化问题。它的原理是基于拉格朗日乘子的概念,在求解有约束问题的时候,将约束条件转化为目标函数的一部分,通过求解该新的目标函数,得到问题的最优解。 在使用拉格朗日乘子法时,首先根据问题的约束条件构造拉格朗日函数。拉格朗日函数是由目标函数和约束条件组成的,目标函数会被调整为加入拉格朗日乘子与约束条件的乘积,同时每个约束条件都会有一个对应的拉格朗日乘子。然后,通过求取拉格朗日函数的偏导数,将其等于0,可以得到一组方程,包括目标函数的梯度和约束条件的梯度。将这些方程联立求解,就可以得到问题的最优解。 对于拉格朗日函数的求解,可以采用数值方法,例如使用fmincon算法。fmincon是一种非线性约束最小化算法,可以求解具有非线性约束的优化问题。它的实现基于拉格朗日乘子法,通过迭代的方式逼近最优解。在每一次迭代中,通过求解一组子问题,不断调整拉格朗日乘子的值,直到找到最优解为止。 总之,拉格朗日乘子法是一种基于拉格朗日函数的优化算法,通过将约束条件转化为目标函数的一部分,再利用数值方法求解最优解。而fmincon算法则是一种具体的数值方法实现,可以应用于求解具有非线性约束的优化问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值