查看“拉格朗日乘数”的源代码
←
拉格朗日乘数
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{expert|time=2014-07-22T20:07:35+00:00}} {{NoteTA|G1=Math}} {{微积分学}} [[File:Lagrange_multiplier.png|thumb|300px|图1:绿线标出的是约束''g''(''x'',''y'') = ''c''的点的轨迹。蓝线是''f''的等高线。箭头表示梯度,和等高线的法线平行。]] 在[[数学]]中的[[最优化]]问题中,'''拉格朗日乘数法'''(以数学家[[约瑟夫·拉格朗日]]命名)是一种寻找多元[[函数]]在其[[自变量|变量]]受到一个或多个条件的约束时的[[极值]]的方法。这种方法可以将一个有''n''个变量与''k''个约束条件的最优化问题转换为一个解有''n'' + ''k''个变量的[[方程]]组的解的问题。这种方法中引入了一个或一组新的[[未知数]],即'''拉格朗日乘数''',又称'''拉格朗日乘子''',或'''拉氏乘子''',它们是在转换后的方程,即约束方程中作为[[梯度]](gradient)的[[线性组合]]中各个向量的系数。 比如,要求<math>f(x, y) \,</math>在<math>g(x, y) = c\, </math>时的最大值时,我们可以引入新变量拉格朗日乘数<math>\lambda</math>,这时我们只需要下列拉格朗日函数的极值: :<math> \mathcal{L}(x,y,\lambda) = f(x,y) + \lambda \cdot \Big(g(x,y)-c\Big)</math> 更一般地,对含''n''个变量和''k''个约束的情况,有: :<math>\mathcal{L}\left( x_1,\ldots , x_n, \lambda_1, \ldots, \lambda_k \right) = f\left( x_1, \ldots, x_n \right) - \sum\limits_{i=1}^k {\lambda_i g_i\left( x_1, \ldots , x_n \right)},</math> 拉格朗日乘数法所得的极点会包含原问题的所有极值点,但并不保证每个极值点都是原问题的极值点。拉格朗日乘数法的正确性的证明牵涉到[[偏微分]],[[全微分]]或[[链法]]。 == 介绍 == 微积分中最常见的问题之一是求一个函数的极大极小值(极值)。但是很多时候找到极值函数的显式表达是很困难的,特别是当函数有先决条件或约束时。拉格朗日乘数则提供了一个非常便利方法来解决这类问题,而避开显式地引入约束和求解外部变量。 先看一个三维的例子:假设有函数:<math>f(x, y)</math>,要求其极值(最大值/最小值),且满足条件 :<math>g\left( x,y \right) = c</math> ''c''为常数。對不同<math>d_n</math>的值,不难想像出 :<math>f \left( x, y \right)=d_n</math> 的等高线。而方程<math> g </math>的可行集所构成的线正好是<math> g ( x, y ) = c </math>。想像我们沿着<math> g = c </math>的可行集走;因为大部分情况下<math> f </math>的等高线和<math> g </math>的可行集线不会重合,但在有解的情况下,这两条线会相交。想像此时我们移动<math> g = c </math>上的点,因为<math> f </math>是连续的方程,我们因此能走到<math>f \left( x, y \right)=d_n</math>更高或更低的等高线上,也就是说<math>d_n</math>可以变大或变小。只有当<math> g = c </math>和<math>f \left( x, y \right)=d_n</math>相切,也就是说,此时,我们正同时沿着<math> g = c </math>和<math>f \left( x, y \right)=d_n</math>走。这种情况下,会出现[[极值]]或[[鞍点]]。 气象图中就很常出现这样的例子,当温度和气压两列等高线同时出现的时候,切点就意味着约束极值的存在。 用[[向量]]的形式来表达的话,我们说相切的性质在此意味着<math> f </math>和<math> g </math>的切线在某点上平行,同时也意味着两者的梯度向量有如下关系(引入一个未知标量<math>\lambda</math>): :<math> \nabla f \left(x, y \right) = - \lambda \nabla \left(g \left(x, y \right) - c \right) </math> 即: :<math> \nabla \Big[f \left(x, y \right) + \lambda \left(g \left(x, y \right) - c \right) \Big] = 0 </math>. 一旦求出<math>\lambda</math>的值,将其套入下式,易求在无约束条件下的极值和对应的极值点。 :<math> F \left( x , y , \lambda \right) </math> = <math> f \left( x , y \right) + \lambda \left( g \left( x , y \right) - c \right) </math> 新方程<math>F(x,y,\lambda)</math>在达到极值时与<math>f(x,y)</math>相等,因为<math>F(x,y,\lambda)</math>达到极值时<math>g(x,y)-c</math>总等于零。 == 证明 == 设函数<math>f(x,y)</math>在<math>A</math>点处有极值<math>\kappa</math>,且在<math>A</math>点的邻域内连续。则在<math>A</math>点处有 :<math>f \left(x,y \right)=\kappa</math> 另有一常值函数 :<math>g\left(x,y \right) = c</math> 两函数在<math>A</math>点处的全微分为 :<math> \mathrm{d}f = \frac{\partial{f}}{\partial{x}}\mathrm{d}x + \frac{\partial{f}}{\partial{y}}\mathrm{d}y = 0</math> :<math> \mathrm{d}g = \frac{\partial{g}}{\partial{x}}\mathrm{d}x + \frac{\partial{g}}{\partial{y}}\mathrm{d}y = 0</math> 由于<math>\mathrm{d}x</math>和<math>\mathrm{d}y</math>是任取的无穷小量,故该线性方程组的系数成比例,有 :<math> \dfrac{\dfrac{\partial{f}}{\partial{x}}}{\dfrac{\partial{g}}{\partial{x}}} = \dfrac{\dfrac{\partial{f}}{\partial{y}}}{\dfrac{\partial{g}}{\partial{y}}} = -\lambda</math> 即 :<math>\frac{\partial{f}}{\partial{x}} + \lambda \cdot \frac{\partial{g}}{\partial{x}} = 0</math> :<math>\frac{\partial{f}}{\partial{y}} + \lambda \cdot \frac{\partial{g}}{\partial{y}} = 0</math> 将上二式分别乘以<math>\mathrm{d}x</math>和<math>\mathrm{d}y</math>,再相加并积分,得到一新函数 :<math>\mathcal{L}(x, y,\lambda) = f(x, y) + \lambda \cdot g(x, y)</math> 那么,求原函数极值的问题就转化为求该函数极值的问题。 类似地,这种求极值的方法也可以推广到多维函数<math>f\left( x_1, \ldots, x_n \right)</math>。 == 拉格朗日乘数的运用方法 == 如''f''定义为在'''R'''<sup>''n''</sup>上的方程,约束为''g<sub>k</sub>''('''x''')= ''c<sub>k</sub>''(或将约束左移得到''g''<sub>''k''</sub>('''x''') − ''c<sub>k</sub>'' = ''0'')。定义拉格朗日''Λ''为 :<math>\Lambda(\mathbf x, \boldsymbol \lambda) = f + \sum_k \lambda_k(g_k-c_k)</math>。 注意极值的条件和约束现在就都被记录到一个式子里了: :<math>\nabla \Lambda = 0 \Leftrightarrow \nabla f = - \sum_k \lambda_k \nabla\ g_k,</math> 和 :<math>\nabla_{\mathbf \lambda} \Lambda = 0 \Leftrightarrow g_k = c_k</math>。 拉格朗日乘数常被用作表达最大增长值。原因是从式子: :<math>-\frac{\partial \Lambda}{\partial {c_k}} = \lambda_k</math>。 中我们可以看出''λ''<sub>''k''</sub>是当方程在被约束条件下,能够达到的最大增长率。[[拉格朗日力学]]就使用到这个原理。 拉格朗日乘数法在[[卡羅需-庫恩-塔克條件|卡罗需-库恩-塔克条件]]被推广。 == 例子 == === 很简单的例子 === 求此方程的最小值: :<math> f(x, y) = x^2 y</math> 同时未知数满足 :<math> x^2 + y^2 = 1</math> 因为只有一个未知数的限制条件,我们只需要用一个乘数<math>\lambda</math>. :<math>g (x, y) = x^2 +y^2 -1</math> :<math>\Phi (x, y, \lambda) = f(x,y) + \lambda g(x, y) = x^2 y + \lambda (x^2 + y^2 - 1)</math> 将所有<math>\Phi</math>方程的偏微分设为零,得到一个方程组,最小值是以下方程组的解中的一个: :<math>2 x y + 2 \lambda x = 0</math> :<math>x^2 + 2 \lambda y = 0</math> :<math>x^2 + y^2 -1 = 0</math> === 另一个例子 === 求此[[概率分布|离散分布]]的最大[[熵 (信息论)|熵]]: :<math>f(p_1,p_2,\ldots,p_n) = -\sum_{k=1}^n p_k\log_2 p_k</math>。 所有概率的总和是1,因此我们得到的约束是''g''('''p''')= 1即 :<math>g(p_1,p_2,\ldots,p_n)=\sum_{k=1}^n p_k=1</math>。 可以使用拉格朗日乘数找到最高熵(概率的函数)。对于所有的''k''从1到''n'',要求 :<math>\frac{\partial}{\partial p_k}(f+\lambda (g-1))=0,</math> 由此得到 :<math>\frac{\partial}{\partial p_k}\left(-\sum_{k=1}^n p_k \log_2 p_k + \lambda (\sum_{k=1}^n p_k - 1) \right) = 0</math>。 计算出这''n''个等式的微分,我们得到: :<math>-\left(\frac{1}{\ln 2}+\log_2 p_k \right) + \lambda = 0</math>。 这说明''p''<sub>''i''</sub>都相等(因为它们都只是λ的函数)。解出约束∑<sub>''k''</sub> ''p''<sub>''k''</sub> = 1,得到 :<math>p_k = \frac{1}{n}</math>。 因此,使用均匀分布可得到最大熵的值。 == 经济学 == 约束最优化在[[经济学]]占有很重要的地位。例如一个[[消费者]]的选择问题可以被视为一个求[[效用|效用方程]]在[[预算约束]]下的最大值问题。拉格朗日乘数在经济学中被解释为[[影子价格]],设定在某种约束下,在这里即收入的[[边际效用]]。 拉格朗日乘数就是效用函数在最优解处对收入的偏导数,也就是在最优解处增加一个单位收入带来的效用增加,或者说在最优解处有效用衡量收入的价值,称之为收入的边际效用。 在企业生产问题中,拉格朗日乘数用来衡量要素投入变动所带来的收入变动,du/dm=λ,u表示效用函数或生产函数,m表示收入或要素投入。 在具体数学推导中还可以运用包络定理的内容。 == 参考 == * [[卡罗需-库恩-塔克条件]]:拉格朗日乘数的推广。 * [[拉格朗日方程式]] * [[哈密頓原理]] * [[作用量]] == 对外链接 == 参考拉格朗日原作或方法的命名: * [https://web.archive.org/web/19991003023640/http://members.aol.com/jeff570/l.html Earliest known uses of some of the words of mathematics: L] 更深入的介绍和互动applet: * [https://web.archive.org/web/20070101204006/http://www-math.mit.edu/18.02/applets/LagrangeMultipliersTwoVariables.html Applet] * [https://web.archive.org/web/20061110031805/http://www.math.gatech.edu/~carlen/2507/notes/lagMultipliers.html Tutorial and applet] * [http://www.slimy.com/~steuard/teaching/tutorials/Lagrange.html Conceptual introduction] (概念介绍和对于拉格朗日乘数方法在[[变分法]]以及物理中的运用) * [http://www.cs.berkeley.edu/~klein/papers/lagrange-multipliers.pdf Lagrange Multipliers without Permanent Scarring] (tutorial by Dan Klein) [[Category:多变量微积分]] [[Category:最优化]] [[Category:数理经济学]]
本页使用的模板:
Template:Expert
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
Template:微积分学
(
查看源代码
)
返回
拉格朗日乘数
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息