博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拉格朗日乘子
阅读量:5286 次
发布时间:2019-06-14

本文共 1290 字,大约阅读时间需要 4 分钟。

在数学  问题中, 拉格朗日乘数(以 命名) 是一种寻找变量受一个或多个限制的多元的的方法。 这种方法将一个有n 变量与 k 约束的问题转换为一个更易解的n + k个变量的方程组,其变量不受任何约束。这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的斜率(gradient)的里每个向量的系数。

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

先看一个二维的例子:假设有方程: f(x,y),要求其最大值,且

gleft( x,y right) = c,

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

f left( x, y right)=d_n

的等高线。而方程g的等高线正好是g(x,y) = c。想象我们沿着g = c的等高线走;因为大部分情况下fg的等高线不会重合,但在有解的情况下,这两条线会相交。想象此时我们移动gc上的点,因为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上的方程,约束为gk(x) = c(或将约束左移得到gk(x) ? c = 0)。定义拉格朗日Λ

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

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

nabla_{mathbf x} Lambda = 0 Leftrightarrow nabla_{mathbf x} f = - sum_k lambda_k nabla_{mathbf x} g_k,

nabla_{mathbf lambda} Lambda = 0 Leftrightarrow g_k = c.

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

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

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

拉格朗日乘数法在被推广。

很简单的例子

求此方程的最大值:

f(
x,
y) = 
x
2
y

同时未知数满足

x
2 + 
y
2 = 1

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

g(
x,
y) = 
x
2 + 
y
2 - 1
Φ(
x,
y,λ) = 
f(
x,
y) + λ
g(
x,
y) = 
x
2
y + λ(
x
2 + 
y
2 - 1)

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

2
x
y + 2λ
x = 0
x
2 + 2λ
y = 0
x
2 + 
y
2 - 1 = 0

 

另一个例子

求此的最大:

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

所有概率的总和是1,因此我们得到的约束是g(p) = 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}.

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

转载于:https://www.cnblogs.com/alexanderkun/p/4432636.html

你可能感兴趣的文章
java获取hostIp和hostName
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
OMG: daily scrum nine
查看>>
redis与spring结合错误情况
查看>>
第六章 字节码执行方式--解释执行和JIT
查看>>
字符串方法title()、istitle()
查看>>
yield语句
查看>>
查看linux系统中占用cpu最高的语句
查看>>
[洛谷P1738]洛谷的文件夹
查看>>
ubuntu server设置时区和更新时间
查看>>
【京东咚咚架构演进】-- 好文收藏
查看>>
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
jQuery之end()和pushStack()
查看>>
Bootstrap--响应式导航条布局
查看>>
Learning Python 009 dict(字典)和 set
查看>>
JavaScript中随着鼠标拖拽而移动的块
查看>>
HDU 1021 一道水题
查看>>
The operation couldn’t be completed. (LaunchServicesError error 0.)
查看>>