在数学中的最优化问题中,拉格朗日乘数法(以数学家约瑟夫·拉格朗日命名)是一种寻找多元函数在其变量受到一个或多个条件的约束时的极值的方法。这种方法能够将一个有n个变量与k个约束条件的最优化问题转换为一个解有n + k个变量的方程组的解的问题。这种方法中引入了一个或一组新的未知数,即拉格朗日乘数,又称拉格朗日乘子,或拉氏乘子,它们是在转换后的方程,即约束方程中做为梯度(gradient)的线性组合中各个向量的系数。函数
好比,要求 f(x,y)在g(x, y) = c 时的最大值,c为常数。先来看图优化
绿线标出的是约束g(x,y) = c的点的轨迹,也是g(x,y)的一条等高线。蓝线是f的等高线,f(x,y)分别取d1 , d2 ,.....dn。箭头表示梯度,和等高线的法线平行。spa
假设g(x,y) = c 等高线 与 f(x,y) = dn 等高线相交,交点就是同时知足等式约束条件和目标函数的可行域的值,但确定不是最优值,由于相交意味着确定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,可能取得最优值,即等高线和目标函数的曲线在该点的法向量必须有相同方向,因此最优值必须知足:f(x,y)的梯度 = λ * g(x,y)的梯度,λ是常数,表示左右两边同向。这个等式就是拉格朗日函数L(x,y,λ)对参数求导的结果。 blog
咱们先写出拉格朗日函数,数学
L(x,y,λ) = f(x,y) + λ * (g(x,y) - c)class
求解▽L(x,y,λ) 的梯度为0。L(x,y,λ)梯度为0时,则L(x,y,λ)对参数λ的偏导为0,即g(x,y) - c = 0,也是就知足了咱们的约束条件g(x,y) = c。这就是拉格朗日乘子λ的神奇之处。变量
另外 ▽L(x,y,λ) = 0,必须知足方法
▽f(x,y) = - λ * ▽g(x,y)im
为何呢?我是这样考虑的,不对的地方,请读者指正。命名
▽L(x,y,λ) 为0,则L(x,y,λ) 对x的偏导等于0,对y的偏导等于0。也就是它在这两个方向上Δx或者Δy趋近于0时,增量ΔL也趋近于0。而L(x,y,λ)是一个复合函数,由 f(x,y)和 λ * (g(x,y) - c)加和得来的,若是某一点(x0,y0)的梯度知足▽f(x,y) = - ▽(λ * (g(x,y) - c))的话,它们梯度的方向正好相反,并且大小相同的话,则能够在x和y方向彻底抵消,即L在(x0,y0)处的梯度为0。必然可以获得L(x,y,λ) 对x的偏导等于0,对y的偏导等于0。