zoukankan      html  css  js  c++  java
  • 寻找“最好”(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位的”

      

  • 相关阅读:
    Atitit 华为基本法 attilax读后感
    Atitit 华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感
    Atitit 项目版本管理gitflow 与 Forking的对比与使用
    Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
    Atitit 乌合之众读后感attilax总结 与读后感结构规范总结
    深入理解 JavaScript 异步系列(4)—— Generator
    深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise
    深入理解 JavaScript 异步系列(2)—— jquery的解决方案
    深入理解 JavaScript 异步系列(1)——基础
    使用 github + jekyll 搭建个人博客
  • 原文地址:https://www.cnblogs.com/bigmonkey/p/9525161.html
Copyright © 2011-2022 走看看