• 寻找“最好”(3)——函数和泛函的拉格朗日乘数法


    拉格朗日乘数法

      大多数的优化问题都会加入特定的约束,而不仅仅是指定起点和终点,此时需要更好的办法去解决优化问题,拉格朗日乘数法正是一种求约束条件下极值的方法。

      简单地说,拉格朗日乘数法(又称为拉格朗日乘数法)是用来最小化或最大化多元函数的。如果有一个方程f(x,y,z),在这个方程里的变量之间不是独立的,也就是说这些变量之间是有联系的,这个联系可能是某个方程g(x,y,z) = C;也就是g(x,y,z) = C定义了x,y,z之间的关系,这个关系对变量做出了一定的的限制,我们需要在这个限制下来最小化或最大化f(x,y,z)。

    拉格朗日乘数法的解释

      假设(x,y)表示经纬度,f(x, y)是江浙两省所有大山的海拔高度;g(x, y) = C是约束条件,将范围缩小到江浙边界。现在需要找出找出在跨越江浙两省的大山中,处于江浙边界的最高点,用数学符号表示:

     

       s.t.是subject to 的缩写,意思是使maxf满足于s.t.中规定的条件。由于约束条件是等式,所以这种优化也称为等式约束优化。我们以位于两省边界附近的大山为例,画出它的等高线和两省的分界线:

      如果f(x,y)中有满足g(x,y) = C的点,那么一定处于二者相切处:

     

      切点就是极值,该极值的判定条件是,红绿两条等高线的梯度方向相同。这里切点是必要条件,如果有极值,极值点一定在切点处,但切点未必是极值点。这类似于普通条件下的极值判定,导数为0的点也可能是鞍点。

    求解过程

      根据上一节的思路,可以将最初的问题转换为方程组:

     

      其中λ就是拉格朗日乘子,这就将极值问题转换成普通的方程组求解问题。更多拉格朗日乘数法,可参考《多变量微积分笔记6——拉格朗日乘数法》。

    盒子的最小表面积

      固定容积的无顶盖的盒子,盒子底部是正方形,使其表面积最小是多少?

      如上图所示,设盒子的底边x,高为y,则体积V = x2y,表面积S = x2 + 4xy。该问题可以使用单变量的极值求解法处理(可参考《单变量微积分笔记8——最值问题和相关变率》),但是有些复杂,现在用拉格朗日乘数法直接求解:

     

      根据拉格朗日乘数法:

     

      当x = 2y时,便面积最小。

    多个约束条件

      上面的例子仅有一个约束条件,如果碰到多约束条件的时候如何处理?

    一般过程

      设目标函数为f(x,y,z),约束条件为gk(x,y,z),如果寻找在约束下f(x)的最小值:

      如果用向量表示,还可以写成:

      然后对F中的所有未知量(x和λ)求偏导,令其等于0:

     

      这将形成一个方程组,通过解方程组求得所有未知量。

    示例

      5个方程,5个未知数,可以求得方程组的解。

    泛函拉格朗日乘数法

    一般形式

      拉格朗日乘数法也可以在泛函中使用,它的一般形式是:

      这里F和G都是简单泛函,C是一个常数。因为C是常数,所以求A的极值等同于求A – λC的极值,这就将问题和约束条件联合到一起,构成新的泛函极值问题:

    周长固定的图形中,面积最大的是圆

      长度固定的绳子围成的图形中,面积最大的是什么图形?

      令曲线方程是y = y(x),线段长度是C,问题用数学描述就是:

     

      使用拉格朗日乘数法,求A的极值相当于求A-λC的极值:

     

      设置泛函L:

     

      现在可以使用欧拉-拉格朗日方程:

     

      这正是圆的公式,所以说长度固定的绳子围成的图形中,面积最大的是圆。


       作者:我是8位的

      出处:http://www.cnblogs.com/bigmonkey

      本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途! 

      扫描二维码关注公众号“我是8位的”

      

  • 相关阅读:
    过用户层HOOK思路
    Linux LVM实践
    matlab演奏卡农 Cripple Pachebel's Canon on Matlab
    rman备份恢复总结
    郁金香VC外挂教程(全) 翻录版 免Key(精品教程)
    C# string 中的 @ 作用处理\等字符
    (抓)2分法通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高)
    怎样应用OracleParameter怎样写like查询语句?
    (转)DirectoryEntry的使用
    解决模式对话框和window.open打开新页面Session会丢失问题
  • 原文地址:https://www.cnblogs.com/bigmonkey/p/9525161.html
Copyright © 2020-2023  润新知