基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数 f(x1,x2,...) 在 g(x1,x2,...)=C 的约束条件下的极值的方法。其主要思想是引入一个新的参数 λ (即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。拉格朗日乘子是数学分析中同一名词的推广。

什么是拉格朗日乘数法

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

  这里的最值不能简单地使用临界点,因为临界点通常不满足关系方程g。如何解决这个问题呢?当这个限制g(x,y,z)非常简单的时候,我们可以解出其中一个变量的表达式,把这个表达式代入f(x,y,z)后求得最值,这也是中学阶段常用的方法。但问题是,很多时候我们并不能解出x,y,z,因为关系方程g太复杂了,这就需要一个全新的方法求解,拉格朗日乘数法就是其中一种。

寻找最值

  示例:找出双曲线xy = 3上离原点最近的点。

  如果(x, y)是曲线上的点,原点到该点的距离是:

  求离原点最近的点实际上是求f(x,y)的最小值。可以使用一个更容易的方程去掉根号:

  在计算最小值时候有一个限制是:

  把这个较为简单的例子用等高线图表示:

  很明显,当f和g相切的时候,能得到f的最小值。如果把双曲线看作自身的等高线,那么当f的等高线和g的等高线相切时,f值最小。实际上这也是找到最值的一般情形。

  如果两个等高线相切,则二者在切点处的切线也相同,也就是说它们的梯度向量平行,即:

  如果两个向量平行,则其中一个向量是另一个向量的倍数,由此得到:

  这里的λ是一个常数,我们需要做的是找到这个λ和特定的(x,y)使得上式成立。这实际上是把2个变量加一个关系限制的最值问题转换为一个含有3个变量的方程组。

  现在已经通过梯度向量平行,将原来的最值问题转换为一般的方程组,这个方程组被称为拉格朗日方程组,它的解就是最值点。

  接下来就是解方程组,可以将其看作是关于xy的矩阵方程:

  一个满足方程组的解是x = 0, y = 0,但这个解不满约束条件g(x,y) = xy = 3;此外,只有当系数行列式的值是0时,方程才有多个解:

  把两个值分别代入方程组:

  现在可以回答原问题,双曲线xy = 3距离原点最近的点有两个:(31/2, 31/2)和(-31/2, -31/2)。

  在这个例子中,λ就是拉格朗日乘子。

最小值和最大值

  拉格朗日乘数法并不会告诉我们最值的类型,结果可能是最大值、最小值或鞍点,由于存在限制条件,这里也不能像《多变量微积分3——二元函数的极值》那样使用二阶导数判断。那么如何判断是最大值还是最小值呢?只能通过将拉格朗日方程组的解代入问题方程f来判断。举例来说,如果有三组解,代入f后分别是4,6,9,在不存在边界值时,4就是最小值,9就是最大值;如果存在边界,还需要比较边界值。在双曲线的例子中,由于能够确定边界在无穷远处,所以其结果就是最小值。

表面积最小的金字塔

  给定金字塔的体积和底面积(底面的三边确定,分别是a1,a2,a3),如何建造一个表面积最小的金字塔?

  如上图所示,将金字塔模型放入三维坐标系中,底面对应xy轴。由于体积和底面积已知,根据体积公式,高也是定值,那么实际问题就是回答Q点的位置。一种思路是利用向量的叉积计算三角形的面积(参考《线性代数笔记4——向量3(叉积)》):

  展开后将得到一个很长的式子,看起来并不是什么好方法。现在换一种思路,利用三角形面积的几何公式,如下图所示:

  h1是三角形PP1P2的高,设点Q是(x,y,0),则:

  这就转换成了有三个变量的函数,目标是求得f的最小值:

  接下来需要寻找约束条件g。由于a1⊥h1且a1⊥h,所以a1垂直于h1和h所在的平面,a1⊥u1

  上图可知:

  这就是约束条件g:

  知道了f和g,就可以使用拉格朗日乘数法:

  当Q点的位置距离三边距离相等时,金字塔的表面积最小。

  备注:

  f对u1偏导将u2和u3看作常数,这相当于求f(u)的导数,

综合示例

示例1

  在椭圆x+ 4y2 = 4中有内接的矩形,该矩形的边平行于x轴和y轴,找出这些矩形中周长最大的一个。

  如上图所示,长方形的周长函数是f(x,y) = 4x + 4y,约束函数g(x,y) = x+ 4y2 = 4

  由于拉格朗日乘数法无法确定最值的类型,所以还要对函数边界进行计算。当P在椭圆上移动时,如果正好落在x轴上,则长方形退化成直线,此时 ;另一个极值是,所以判定 是最大值,此时长方形的一点的坐标是

示例2

  计算f(x,y,z)= x+ x + 2y2 + 3z2在约束条件x+ y2 + z= 1下的最值。

  由于约束条件是球体,所以不存在边界,只需把这些解导入f即可。当点在(-1,0,0)时,f最小,f = 0;当点在(1/4,0,±151/2/4)时f最大,f = 25/8


  作者:我是8位的

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

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

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

  

ML(附录4)——拉格朗日乘数法的更多相关文章

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

    拉格朗日乘数法(Lagrange Multiplier Method)之前听数学老师授课的时候就是一知半解,现在越发感觉拉格朗日乘数法应用的广泛性,所以特意抽时间学习了麻省理工学院的在线数学课程.新学 ...

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

    求解条件极值的方法:拉格朗日乘数法 基于对多元函数极值方法的了解,再具体的问题中我们发现这样一个问题,在求解f(x,y,z)的极值的时候,我们需要极值点落在g(x,y,z)上这种对极值点有约束条件,通 ...

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

    题目描述 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因此在每天的骑行 ...

  4. CodeChef TWOROADS(计算几何+拉格朗日乘数法)

    题面 传送门 简要题意:给出\(n\)个点,请求出两条直线,并最小化每个点到离它最近的那条直线的距离的平方和,\(n\leq 100\) orz Shinbokuow 前置芝士 给出\(n\)个点,请 ...

  5. BZOJ3775: 点和直线(计算几何+拉格朗日乘数法)

    题面 传送门 题解 劲啊-- 没有和\(Claris\)一样推,用了类似于\(Shinbokuow\)推已知点求最短直线的方法,结果\(WA\)了好几个小时,拿\(Claris\)代码拍了几个小时都没 ...

  6. BZOJ2876 [Noi2012]骑行川藏 【拉格朗日乘数法】

    题目链接 BZOJ 题解 拉格朗日乘数法 拉格朗日乘数法用以求多元函数在约束下的极值 我们设多元函数\(f(x_1,x_2,x_3,\dots,x_n)\) 以及限制\(g(x_1,x_2,x_3,\ ...

  7. 拉格朗日乘数法 和 KTT条件

    预备知识 令 \(X\) 表示一个变量组(向量) \((x_1, x_2, \cdots, x_n)\) 考虑一个处处可导的函数 \(f(X)\), 为了方便描述, 这里以二元函数为例 对于微分, 考 ...

  8. CodeForces - 813C The Tag Game(拉格朗日乘数法,限制条件求最值)

    [传送门]http://codeforces.com/problemset/problem/813/C [题意]给定整数a,b,c,s,求使得  xa yb zc值最大的实数 x,y,z , 其中x ...

  9. Wannafly模拟赛2 B river(拉格朗日乘数法)

    题目 https://www.nowcoder.com/acm/contest/4/B题意 有n条南北流向的河并列排着,水流速度是v,现在你需要从西岸游到东岸,总共T个时间,你的游泳速度是u,问东岸的 ...

随机推荐

  1. python的条件判断

    条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age >= ...

  2. set,pair容器使用方法

    题目链接:http://codeforces.com/gym/100989/problem/D In this cafeteria, the N tables are all ordered in o ...

  3. java 移动开发获取多级下拉框json数据的类和mobile-select-area插件

    我这里以行政区划做例子 //这个类是把数据库中的行政区划转化为json格式的data @SuppressWarnings("rawtypes")public class XzqhL ...

  4. 数据库和redis的一致性

    之前的讲解,主要是在讲解redis如何支撑海量数据.高并发读写.高可用服务的架构 从这一讲开始,正式开始做业务系统的开发 商品详情页,缓存架构,90%是大量的业务(没有什么级数含量),10%最有级数含 ...

  5. 又一个opengl教程,多多益善

    http://ogldev.atspace.co.uk/index.html http://wiki.jikexueyuan.com/project/modern-opengl-tutorial/tu ...

  6. 【图像处理基础】LBP特征

    前言 其中dsptian的博客不仅给出了LBP的实现,还计算了LBPH,计算LBP过程中有点小瑕疵,评论中有给出修改方法.除了使用power还可以使用bitxor函数实现. lbpcode = bit ...

  7. xdoj1321----简单搜索

    1321: 营救公主 时间限制: 1 Sec  内存限制: 128 MB提交: 156  解决: 37[提交][状态][讨论版] 题目描述 DSKer今天又做梦了,他的睡眠质量一直很差.他梦见他化身骑 ...

  8. scripy

    性能相关 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢. import requests def fetch_async(url): ...

  9. UV纹理+修改器:VertexWeightEdit+修改器:Mask遮罩

    UV纹理+修改器: VertexWeightEdit+修改器: Mask遮罩 基本流程, 如下图,准备地图一份, 黑白色即可. 纹理使用颜色绘制权重. 白色为1, 黑色为0. 新增球体, 细分多次, ...

  10. odoo软件名称及授权协议的变化

    先看一张表格 起步时叫TinyERP,微小的ERP:发展中期叫做OpenERP,开放的ERP:历经10年积累的软件,客户群,开发支持用户群,开始构筑自己的商业模式.到8版本,改名为Odoo.同时,软件 ...