Joseph Louis Lagrange
多个约束条件
引言
现在我们来看看,在一般情况下,当我们在 k个约束条件下:gi(x1,…,xn)=0gi(x1,…,xn)=0,其中 ii 从 11到kk ,求最小化 nn个变量的函数f(x1,…,xn)f(x1,…,xn)。拉格朗日函数
和前文一样,除了每个约束有不同的λλ。
约束:
(我们将jj用于kk作为约束索引,将ii用于nn作为变量的索引xixi。)约束最小值出现在所有变量对LL的偏导数为零的点上。
简单例子
我们将使用一个相对简单的例子来说明方法:我们试图最小化 x21+x22+x23x21+x22+x23
有两个约束条件:x1=1x1=1 和 x2=1x2=1Lagrangian
: x21+x22+x23−λ1(x1−1)−λ2(x2−1)x21+x22+x23−λ1(x1−1)−λ2(x2−1)
它的偏导数是:
解
将它们全部设置为零得到答案:(x1,x2,x3)=(1,1,0)(x1,x2,x3)=(1,1,0) 和 λ1=λ2=2λ1=λ2=2.
在一个约束情形中,拉格朗日乘子方程
等价于矢量方程 ∇f=λ∇g∇f=λ∇g
对于多个约束,相应的向量方程是:
解释
上述等式将得出以下事实:对于变量 ii,当 ∂L/∂xi=∂f/∂xi−∑kj=1λj∂gj/∂xi∂L/∂xi=∂f/∂xi−∑kj=1λj∂gj/∂xi成立时有∂f/∂xi=∑kj=1λj∂gj/∂xi∂f/∂xi=∑kj=1λj∂gj/∂xi ,因此把∂L/∂xi∂L/∂xi(ii从11到nn)偏导数置为零等效于上述向量方程。注意,将偏导数∂L/∂λj∂L/∂λj等于零只会强化gj(x1,…,xn)=0gj(x1,…,xn)=0的约束。
如何相切
在一个约束情形中,找到点是有用的, ∇f=λ∇g∇f=λ∇g因为这意味着水平曲线ff 与水平曲线gg相切。在多重约束的情况下,它并不那么简单。单个约束gigi的水平表面不一定与ff约束最小值处的水平表面相切。(在上面的示例中,约束平面x1=1x1=1与ff球体的水平面x21+x22+x23=2x21+x22+x23=2在最佳点处相交(1,1,0)(1,1,0)。)相反,事实证明,所有gigi水平面的交点都与ff水平面的相切。
为了更好的理解,让我们直接看xx的小扰动对 ff和约束方程gjgj的影响,有x=(x1,…,xn)x=(x1,…,xn),同时使Δx=(Δx1,…,Δxn)Δx=(Δx1,…,Δxn)我们有:
f(x+Δx)−f(x)≈n∑i=1Δxi∂f∂xif(x+Δx)−f(x)≈n∑i=1Δxi∂f∂xi条件
如果更改xx,有扰动ΔxΔx 能保持所有gjgj约束方程有相同的(一阶导),同时引起f(x)f(x)的非零变化,则xx不可能是受约束的局部最小值。因为在某些方向上沿的交点移动所有的水平曲线gjgj都会导致ff减少(或增加)。所以我们想要的条件是:
- 对于所有可能使 ∇gj(x)⊥Δx∇gj(x)⊥Δx ,(jj从11到kk) 成立的 ΔxΔx, 有∇f(x)⊥Δx.∇f(x)⊥Δx.
对每个jj有∇gj(x)⊥Δx∇gj(x)⊥Δx, ΔxΔx在与gjgj水平面相切的方向上。如果ΔxΔx在与所有的gjgj水平面交点相切的方向上,那么每一个jj都成立。条件一表示任何此类ΔxΔx也与水平面相切ff。另一方面,拉格朗日乘子法
强制执行的条件是:
- 存在 λ1λ1 到 λkλk 使得 ∇f=∑kj=1λj∇gj∇f=∑kj=1λj∇gj.
令人高兴的是,事实证明条件1和2等价。
定理:条件1和2等价
证明
证明:(为什么现在我们一整天挥手都有严格的证据?有时最直观的论证就是证明;也许就是这种情况。)首先我们将证明2、1等价.假设对于每一个jj从11到kk,有 ∇f=∑kj=1λj∇gj∇f=∑kj=1λj∇gj, ∇gj(x)⊥Δx∇gj(x)⊥Δx 。因为∇gj(x)⊥Δx$,$∇gj(x)⋅Δx=0∇gj(x)⊥Δx$,$∇gj(x)⋅Δx=0。所以 ∇f⋅Δx=(∑kj=1λj∇gj)⋅Δx=∑kj=1λj∇gj⋅Δx=0.∇f⋅Δx=(∑kj=1λj∇gj)⋅Δx=∑kj=1λj∇gj⋅Δx=0.。这意味着 ∇f⊥Δx∇f⊥Δx。
接下来我们将证明1意味着2,或等效地,不是2意味着不是1.否定2表示∇f∇f不在向量的跨度内。让我们用zz来表示 ∇f∇f 在 ∇gj∇gj 跨度内的投影,并设置Δx=∇f−zΔx=∇f−z。我们将证明这是建立否定条件1的反例。
证否
我们知道 ∇f≠z∇f≠z 所以有 Δx≠0Δx≠0,通过投影的定义,对每个jj有Δx⊥gjΔx⊥gj。此外,∇f⋅Δx=(z+Δx)⋅Δx=z⋅Δx+Δx⋅Δx∇f⋅Δx=(z+Δx)⋅Δx=z⋅Δx+Δx⋅Δx,因为 zz 是在gjgj域上垂直于ΔxΔx,同样的有z⊥Δxz⊥Δx。
新增z⋅Δx=0z⋅Δx=0 和Δx⋅Δx≠0Δx⋅Δx≠0 ,我们得到 (z+Δx)⋅Δx≠0(z+Δx)⋅Δx≠0。 也就是说∇f⋅Δx≠0∇f⋅Δx≠0,所以∇f∇f不垂直ΔxΔx。由于ΔxΔx垂直于所有∇gj∇gj,但不垂直∇f∇f,所以条件一也被证否。我们假设条件2的否定,因此这表明不是2意味着不是1,或者等效地,1意味着2。
小结
现在我们已经看到拉格朗日乘子法
通过找到 xx 一组 λjλj 这样 ∇f=∑kj=1λj∇gj∇f=∑kj=1λj∇gj 的东西而发挥作用。这个等式意味着不存在局部变化 ,使一阶导数,符合所有约束但改变目标函数 ff 的值。因此满足该等式的值xx是受约束的局部最小值或最大值的候选值。求解该向量方程等效于将拉格朗日函数
的偏导数设置为零。
我希望能够说明拉格朗日乘子法
的工作方式和原因,并稍使它们看起来不这么像魔术。
后记
感觉原文作者描述的非常严谨,有很多地方我没法跟上作者的思路。
就我个人较感性的理解
单约束的表达式中:
L(x,y,λ)=f(x,y)−λg(x,y)L(x,y,λ)=f(x,y)−λg(x,y)拉格朗日函数
偏导为零,表明梯度∇f=(∂f∂x,∂f∂y)∇f=(∂f∂x,∂f∂y) ,和梯度 ∇g=(∂g∂x,∂g∂y)∇g=(∂g∂x,∂g∂y) 成比例。
只有在切点处才有梯度重叠,才可以向量互相线性表示;
在切点处是局部的极值点,任何符合gg的微小扰动(Δx,Δy)(Δx,Δy) 会导致函数ff的增大或减小。
所以解LL偏导等于零的方程组(2+1),可以得到候选极值点。
在多约束表达式中:
L(x1,...,xn,λ1,...,λk)=f(x1,...,xn)−k∑j=1λjgj(x1,...,xn)L(x1,...,xn,λ1,...,λk)=f(x1,...,xn)−k∑j=1λjgj(x1,...,xn)有多变量,多约束条件;可以认为是求解极值向量的问题
多约束的条件下,单条件相切并不一定是局部极值;
需要做到ff与所有gigi的相交处相切,即在约束面上各方向目标函数偏导数为零处。
梯度的原理同单约束,梯度向量在各方向上成比例。
在局部最优解的向量上,符合所有约束gg的微小扰动向量(Δx1,Δx2,…Δxn)(Δx1,Δx2,…Δxn)都会导致函数ff的增大或减小。
所以解LL偏导等于零的方程组(n+1),可以得到候选极值向量。
g(x1,x2,z3)=x21+x22+x23x21+x22+x23=2x1=1x2=1g(x1,x2,z3)=x21+x22+x23x21+x22+x23=2x1=1x2=1
将目标函数约束到三维空间,超平面中的球体半径为所求目标函数的值。
在(1,1,0)(1,1,0)处球体与约束平面相切,取到极值2。
https://danstronger.wordpress.com/2015/08/08/lagrange-multipliers/
https://jermmy.github.io/2017/07/27/2017-7-27-understand-lagrange-multiplier/
https://www.svm-tutorial.com/2016/09/duality-lagrange-multipliers/