zoukankan      html  css  js  c++  java
  • 拉格朗日乘数法

    数学最优化问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数极值的方法。这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束。这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度(gradient)的线性组合里每个向量的系数。

    此方法的证明牵涉到偏微分全微分链法,从而找到能让设出的隐函数的微分为零的未知数的值。

    介绍

    先看一个二维的例子:假设有函数:f(x,y),要求其极值(最大值/最小值),且

    g\left( x,y \right) = c,

    c 为常数。对不同dn的值,不难想像出

    f \left( x, y \right)=d_n

    的等高线。而方程g的等高线正好是g(x,y) = c。想像我们沿着g = c的等高线走;因为大部分情况下fg的等高线不会重合,但在有解的情况下,这两条线会相交。想像此时我们移动g = c上的点,因为f是连续的方程,我们因此能走到f \left( x, y \right)=d_n更高或更低的等高线上,也就是说dn可以变大或变小。只有当g = cf \left( x, y \right)=d_n相切,也就是说,此时,我们正同时沿着g = cf \left( x, y \right)=d_n走。这种情况下,会出现极值鞍点

    气象图中就很常出现这样的例子,当温度和气压两列等高线同时出现的时候,切点就意味着约束极值的存在。

    向量的形式来表达的话,我们说相切的性质在此意味着fg的斜率在某点上平行。此时引入一个未知标量λ,并求解:

     \nabla \Big[f \left(x, y \right) + \lambda \left(g \left(x, y \right) - c \right) \Big] = 0

    λ ≠ 0.

    一旦求出λ的值,将其套入下式,易求在无约束极值和极值所对应的点。

     F \left( x , y \right) =  f \left( x , y \right) + \lambda \left( g \left( x , y \right) - c \right)

    新方程F(x,y)在达到极值时与f(x,y)相等,因为F(x,y)达到极值时g(x,y) − c总等于零。

    拉格朗日乘数的运用方法

    f定义为在Rn上的方程,约束为gkx)= ck(或将约束左移得到gk(x) − ck = 0)。定义拉格朗日Λ

    \Lambda(\mathbf x, \boldsymbol \lambda) = f + \sum_k \lambda_k(g_k-c_k).

    注意极值的条件和约束现在就都被记录到一个式子里了:

    \nabla \Lambda = 0 \Leftrightarrow \nabla f = - \sum_k \lambda_k \nabla\ g_k,

    \nabla_{\mathbf \lambda} \Lambda = 0 \Leftrightarrow g_k = c_k.

    拉格朗日乘数常被用作表达最大增长值。原因是从式子:

    \frac{\partial \Lambda}{\partial {g_k}} = \lambda_k.

    中我们可以看出λk是当方程在被约束条件下,能够达到的最大增长率。拉格朗日力学就使用到这个原理。

    拉格朗日乘数法在Karush-Kuhn-Tucker最优化条件被推广。

    例子

    很简单的例子

    求此方程的最大值:

    f(x,y) = x2y

    同时未知数满足

    x2 + y2 = 1

    因为只有一个未知数的限制条件,我们只需要用一个乘数λ.

    g(x,y) = x2 + y2 − 1
    Φ(x,y,λ) = f(x,y) + λg(x,y) = x2y + λ(x2 + y2 − 1)

    将所有Φ方程的偏微分设为零,得到一个方程组,最大值是以下方程组的解中的一个:

    2xy + 2λx = 0
    x2 + 2λy = 0
    x2 + y2 − 1 = 0

    另一个例子

    求此离散分布的最大

    f(p_1,p_2,\ldots,p_n) = -\sum_{k=1}^n p_k\log_2 p_k.

    所有概率的总和是1,因此我们得到的约束是gp)= 1即

    g(p_1,p_2,\ldots,p_n)=\sum_{k=1}^n p_k=1.

    可以使用拉格朗日乘数找到最高熵(概率的函数)。对于所有的k 从1到n,要求

    \frac{\partial}{\partial p_k}(f+\lambda (g-1))=0,

    由此得到

    \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.

    计算出这n个等式的微分,我们得到:

    -\left(\frac{1}{\ln 2}+\log_2 p_k \right) + \lambda = 0.

    这说明pi都相等 (因为它们都只是λ的函数). 解出约束∑k pk = 1,得到

    p_k = \frac{1}{n}.

    因此,使用均匀分布可得到最大熵的值。

    经济学

    约束最优化在经济学占有很重要的地位。例如一个消费者的选择问题可以被视为一个求效用方程预算约束下的最大值问题。拉格朗日乘数在经济学中被解释为影子价格,设定在某种约束下,在这里即收入的边际效用

    拉格朗日乘数就是效用函数在最优解出对收入的偏导数,也就是在最优解处增加一个单位收入带来的效用增加,或者说在最优解处有效用衡量收入的价值,称之为收入的边际效用。

    在企业生产问题中,拉格朗日乘数用来衡量要素投入变动所带来的收入变动,du/dm=λ,u表示效用函数或生产函数,m表示收入或要素投入。

    在具体数学推导中还可以运用包络定理的内容。

  • 相关阅读:
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
  • 原文地址:https://www.cnblogs.com/yysblog/p/2221987.html
Copyright © 2011-2022 走看看