拉格朗日乘子法的通俗理解

  • 1. 举例
  • 2. 求偏导
  • 3. 拉格朗日乘子法
  • 4. 乘子



1. 举例

这里举个简单的例子吧

在家里做蛋糕,假如只计算鸡蛋和牛奶的价格

其中鸡蛋的价格为4.5¥/斤,牛奶为12¥/升,而预算刚好是20¥

那么就有:

拉格朗日乘法 python 拉格朗日乘法怎么解_极值


经过分析,蛋糕的总量跟两种原材料(x1,x2)具有如下关系:

拉格朗日乘法 python 拉格朗日乘法怎么解_方程组_02


那么最少能做多少蛋糕


2. 求偏导

在 线性最小二乘法的通俗理解 中提到极值点可以通过求偏导来实现
函数 拉格朗日乘法 python 拉格朗日乘法怎么解_方程组_03(x1,x2) 对x1,x2分别求偏导,那么得出的结论是:x1,x2都为0的时候最小

单独看这个函数,这个结论对的,
但问题是它不满足预算为20的限制条件


3. 拉格朗日乘子法

拉格朗日想到 既然 拉格朗日乘法 python 拉格朗日乘法怎么解_极值_04(x1,x2) = 0
那函数 拉格朗日乘法 python 拉格朗日乘法怎么解_方程组_03(x1,x2) 是否可以加上这个拉格朗日乘法 python 拉格朗日乘法怎么解_极值_04(x1,x2)再乘以一个系数也应该不变
任何数乘以0当然是0,拉格朗日乘法 python 拉格朗日乘法怎么解_方程组_03(x1,x2) 加上0当然保持不变

所以其实就可以等同于求下面这个函数的极值:

拉格朗日乘法 python 拉格朗日乘法怎么解_方程组_08


对x1,x2以及 λ 分别求偏导:

拉格朗日乘法 python 拉格朗日乘法怎么解_拉格朗日乘法 python_09


解上面的方程组得到 x1=0.8889,x2=1.3333

然后代入 拉格朗日乘法 python 拉格朗日乘法怎么解_方程组_03(x1,x2) 即可


4. 乘子

这里为什么要多加一个乘子λ呢
试想一下,如果 λ 是个固定的数(比如1),也能通过上面的前两条方程式求解得到x1,x2
但是就得不到第三条方程式,其实也就是没有 约束条件

在求偏导(极值点)以后,还能保留原有的约束条件
把约束条件带进来,跟求其他变量的偏导结果放在一起
既能满足约束条件,又能保证是约束条件下的极值

当然这是一个约束条件的情况,如果有多个约束条件呢?
那就要用多个不同的 λ,正如最上面的那个定义那样,把这些加起来(这些0加起来也是0)

最优问题,这个思维很重要,求 条件极值 转化为求 函数和条件 的极值


谢谢!