寻找“最好”(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位的”

  

原文地址:https://www.cnblogs.com/bigmonkey/p/9525161.html

时间: 2024-11-05 10:26:41

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

拉格朗日乘数法

目录(?)[-] 介绍 拉格朗日乘数的运用方法 例子 很简单的例子 另一个例子 经济学 在数学最优化问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束.这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度(gradient)的线性组合里每个向量的系数. 此方法的证明牵涉到偏微分,全微分或链法,从

《University Calculus》-chaper12-多元函数-拉格朗日乘数法

求解条件极值的方法:拉格朗日乘数法 基于对多元函数极值方法的了解,再具体的问题中我们发现这样一个问题,在求解f(x,y,z)的极值的时候,我们需要极值点落在g(x,y,z)上这种对极值点有约束条件,通过直接代换消元的方法似乎会出现一些问题. 比如这个例题. 它面临的问题是,代换消元然后通过求偏导得来的驻点,我们无法控制其满足约束条件g(x,y,z),因此我们需要寻找新的方法来解决这种条件极值问题. 首先这里给出方向导数和梯度中给出的等式关系,这个具体的由来我们会在该小结中详细介绍. 对于可微函数

[转] 拉格朗日乘数法

在数学最优化问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束.这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度(gradient)的线性组合里每个向量的系数. 此方法的证明牵涉到偏微分,全微分或链法,从而找到能让设出的隐函数的微分为零的未知数的值. 介绍 先看一个二维的例子:假设有函数:f

ML(附录4)——拉格朗日乘数法

基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数 f(x1,x2,...) 在 g(x1,x2,...)=C 的约束条件下的极值的方法.其主要思想是引入一个新的参数 λ (即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解.拉格朗日乘子是数学分析中同一名词的推广. 什么是拉格朗日乘数法 简单地说,拉格朗日乘数法是用来最小化或最大化多元函数的.如果有一个方程f(x,y,z),在这个方程里的变量之间不是独立的,也就是说这

拉格朗日乘数法与KKT条件

关于拉格朗日乘数法和KKT条件的一些思考 从我开始接触拉格朗日乘数法到现在已经将近有四个月了,但似乎直到今天我对其的理解才开始渐渐清晰,相信很多人在科研初期也会对一些基础的算法困惑不解,而一篇好的教程则可以大大缩短困惑的时间,从而把更多时间用在开创性的工作上去.经过近几日的搜索,我发现网上还是有一些说明是很不错得,英文较好的同学可以直接去阅读Hugo的介绍(http://www.onmyphd.com/?p=lagrange.multipliers).下面是我近几日学下来的一些见解,看下来如果有

[Math & Algorithm] 拉格朗日乘数法

拉格朗日乘数法(Lagrange Multiplier Method)之前听数学老师授课的时候就是一知半解,现在越发感觉拉格朗日乘数法应用的广泛性,所以特意抽时间学习了麻省理工学院的在线数学课程.新学到的知识一定要立刻记录下来,希望对各位博友有些许帮助. 1. 拉格朗日乘数法的基本思想 作为一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题.拉格朗日乘子背后的数学意义是其

浅谈拉格朗日乘数法

最近偶然看到一篇文章介绍到拉格朗日乘数法, 先贴出地址:cnblogs.com/maybe2030/p/4946256.html 因为我也是刚学了这个方法,对这个东西一知半解,然而初读这篇文章后,感觉有必要好好搞懂这个东西,因为原文写的比较正式,有一些晦涩的词汇难以理解,所以我自己翻书重新学习了一下,以下是个人感悟,并不权威,欢迎指摘! 高等数学同济第5版中这样讲: 要找到函数z=f(x,y)在附加条件g(x,y)=0下的可能极值点,可令L(x,y)=f(x,y)+ug(x,y); 解出x,y,

bzoj2876 [NOI2012]骑行川藏(拉格朗日乘数法)

题目描述 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因此在每天的骑行前设定好目的地.同时合理分配好自己的体力是一件非常重要的事情. 由于蛋蛋装备了一辆非常好的自行车,因此在骑行过程中可以认为他仅在克服风阻做功(不受自行车本身摩擦力以及自行车与地面的摩擦力影响).某一天他打算骑\(N\)段路,每一段内的路况可视为相同:对于第\(i\)段路,我们给出有关这段路况的3个参

bzoj 2876: [Noi2012]骑行川藏【拉格朗日乘数法+二分】

详见: http://blog.csdn.net/popoqqq/article/details/42366599 http://blog.csdn.net/whzzt/article/details/51346228 用拉格朗日乘数法,求了偏导之后二分λ.然后求完偏导的那个一元三次式的解可以二分求,因为是单调递增的. 总复杂度\( O(nlog^2n) \) #include<cstdio> #include<cmath> using namespace std; const i