您的位置:首页 > 其它

【优化】拉格朗日(Lagrange)乘子法超简说明

2017-02-19 21:34 316 查看
本文不做数学推导,从物理意义上讲解拉格朗日乘子法。

原问题

我们要解决带有等式约束的最优化问题。为方便书写,以二维函数为例:

max f(x,y), s.t.g(x,y)=0

用下图表示这个问题。f(x)参数在二维平面内,其本身是一个曲面,用等高线(蓝色)表示。g(x)=0是二维平面内的一条曲线(红色)。



我们要找g(x,y)=0上的一个点,其位于f(x,y)最大的等高线上。

问题转换

Step 1

求解上述问题等价于:

找到g(x,y)=0上的一点,这一点处g(x,y)=0和该点f(x,y)的等高线相切。

可以用反例直观地理解。如果g(x,y)=0和该点f(x,y)等高线相交(黑点),如下图:



g(x,y)=0能够延伸到等高线f(x,y)=d更大的一侧。这个区域内的解(灰点),同样满足g(x,y)=0,但f(x,y)更大。

Step 2

更进一步,这一条件等价于:

找到g(x,y)=0上的一点,这一点g(x,y)=0和f(x,y)=d的梯度共线。

我们可以把这句话拆分成三个条件:

g(x,y)=0

∂f(x,y)∂x=λ∂g(x,y)∂x

∂f(x,y)∂y=λ∂g(x,y)∂y

三个方程,三个未知数,这样实际就可以求解了。

不过,为了记忆简洁,同时方便计算机运算,我们还可以把三式合为一式:

L(x,y,λ)=f(x,y)−λg(x,y)

∇L(x,y,λ)=0

其中∇表示对三个参数求导。其中λ称为拉格朗日乘子,L称为拉格朗日函数

求解

通过∇L=0可以求解出若干组参数,分别代入f(x,y),找出值最大的一组,即为所求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数学 优化