好久不见的拉格朗日乘数法

1 引例

我想大多数人对于朗格朗日乘数法的学习已经是好多年前的事情,其中的细节也自然是慢慢模糊了起来,但是对于它的作用我想几乎是不会忘记的,那就是用来求解条件极值。既然大多数人的记忆都停留在这个地方,那么我们就从这个开始重新拾起拉格朗日乘数法。下面就以一个例题来重温一下求解过程:

求解目标函数 z = x y z=xy z=xy在约束条件下 x + y = 1 x+y=1 x+y=1的条件极值。

解:作拉格朗日函数
F ( x , y , λ ) = x y + λ ( x + y − 1 ) (1) F(x,y,\lambda)=xy+\lambda(x+y-1)\tag 1 F(x,y,λ)=xy+λ(x+y1)(1)
由式子 ( 1 ) (1) (1)可得 F F F的驻点:
F x = y + λ = 0 F y = x + λ = 0 F λ = x + y − 1 = 0 (2) \begin{aligned} F_x&=y+\lambda=0\\ F_y&=x+\lambda=0\\ F_{\lambda}&=x+y-1=0 \end{aligned}\tag 2 FxFyFλ=y+λ=0=x+λ=0=x+y1=0(2)
解方程组 ( 2 ) (2) (2)便可以求得 x , y , λ x,y,\lambda x,y,λ
   ⟹    x = 1 2 ; y = 1 2 ; λ = − 1 2 \implies x=\frac{1}{2};y=\frac{1}{2};\lambda=-\frac{1}{2} x=21;y=21;λ=21
由此我们便可以知道,目标函数 z = x y z=xy z=xy在约束条件下 x + y = 1 x+y=1 x+y=1的条件极值为 z = 1 2 ∗ 1 2 = 1 4 z=\frac{1}{2}\ast\frac{1}{2}=\frac{1}{4} z=2121=41。那为什么可以通过这样的方法来求得条件极值呢?

2 什么是拉格朗日乘数法

在数学优化问题中,拉格朗日乘数法(Lagrange multipliers )是一种用于求解等式约束条件下局部最小(最大)值的策略。它的基本思想是通过将含约束条件的优化问题转化为无约束条件下的优化问题,以便于得到各个未知变量的梯度,进而求得极值点[1]。因此,一句话就是拉格朗日乘数法是一种用来求解条件极值的工具。那么什么又是条件极值呢?

2.1 条件极值

所谓条件极值是指,在一定约束条件下(通常为方程)目标函数的极值就称为条件极值。

好久不见的拉格朗日乘数法_第1张图片

如图所示,函数 z = f ( x , y ) z=f(x,y) z=f(x,y)在其定义域上的极大值(也是最大值)为 z = f ( x 1 , y 1 ) z=f(x_1,y_1) z=f(x1,y1);但如果此时对其施加一个约束条件 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0,那这就等价的告诉函数 z = f ( x , y ) z=f(x,y) z=f(x,y)极值点同时还要满足约束条件。因此, z = f ( x , y ) z=f(x,y) z=f(x,y)在约束条件 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0下的极值点只能在 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处获得(因为此时的 φ ( x 0 , y 0 ) = 0 \varphi(x_0,y_0)=0 φ(x0,y0)=0,而 φ ( x 1 , y 1 ) ≠ 0 \varphi(x_1,y_1)\neq0 φ(x1,y1)=0即不满足约束条件)。现在我们已经对条件极值有了一个直观上的理解,那么接下来要探究的就是怎么才能找到这个极值。

2.2 如何求解条件极值

我们知道在一元函数 f ( x ) f(x) f(x)中可以利用极值的必要条件来求解 f ( x ) f(x) f(x)的极值。一元函数极值的必要条件为:若 f ( x ) f(x) f(x) x = x 0 x=x_0 x=x0处取得极值,且 f ′ ( x 0 ) f^{\prime}(x_0) f(x0)存在,那么立即有 f ′ ( x 0 ) = 0 f^{\prime}(x_0)=0 f(x0)=0。也就是说,我们可以通过令 f ′ ( x ) = 0 f^{\prime}(x)=0 f(x)=0来求得极值点 x 0 x_0 x0。那如果函数 z = f ( x , y ) z=f(x,y) z=f(x,y)在约束条件 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0下取得了条件极值 f ( x 0 , y 0 ) f(x_0,y_0) f(x0,y0),那么我们该怎么求解其极值点呢?换句话说条件极值的必要条件是什么呢?

z 0 = f ( x 0 , y 0 ) z_0=f(x_0,y_0) z0=f(x0,y0) z = f ( x , y ) z=f(x,y) z=f(x,y)在条件 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0下的条件极值,同时等式 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0确定了一个一元隐函数 y = y ( x ) y=y(x) y=y(x);则此时有一元函数 z = f ( x , y ( x ) ) z=f(x,y(x)) z=f(x,y(x))将在 x = x 0 x=x_0 x=x0处取得极值。

根据一元函数极值的必要条件有:
d z d x = f x ⋅ 1 + f y ⋅ d y d x = 0    ⟹    f x ( x 0 , y 0 ) + f y ( x 0 , y 0 ) ⋅ y ′ ( x 0 ) = 0    ⟹    y ′ ( x 0 ) = − f x ( x 0 , y 0 ) f y ( x 0 , y 0 ) (3) \begin{aligned} \frac{dz}{dx}&=f_x\cdot1+f_y\cdot\frac{dy}{dx}=0 \\[1ex] \implies&f_x(x_0,y_0)+f_y(x_0,y_0)\cdot y'(x_0)=0 \\[1ex] \implies &y'(x_0)=-\frac{f_x(x_0,y_0)}{f_y(x_0,y_0)} \end{aligned}\tag 3 dxdz=fx1+fydxdy=0fx(x0,y0)+fy(x0,y0)y(x0)=0y(x0)=fy(x0,y0)fx(x0,y0)(3)
同时,根据隐函数的求导公式可知:
y ′ ( x 0 ) = − φ x ( x 0 , y 0 ) φ y ( x 0 , y 0 ) (4) y'(x_0)=-\frac{\varphi_x(x_0,y_0)}{\varphi_y(x_0,y_0)}\tag 4 y(x0)=φy(x0,y0)φx(x0,y0)(4)
由式子 ( 3 ) ( 4 ) (3)(4) (3)(4)可得:
f x ( x 0 , y 0 ) f y ( x 0 , y 0 ) = φ x ( x 0 , y 0 ) φ y ( x 0 , y 0 ) (5) \frac{f_x(x_0,y_0)}{f_y(x_0,y_0)}=\frac{\varphi_x(x_0,y_0)}{\varphi_y(x_0,y_0)}\tag 5 fy(x0,y0)fx(x0,y0)=φy(x0,y0)φx(x0,y0)(5)
( 5 ) (5) (5)可得:
f x ( x 0 , y 0 ) φ x ( x 0 , y 0 ) = f y ( x 0 , y 0 ) φ y ( x 0 , y 0 ) (6) \frac{f_x(x_0,y_0)}{\varphi_x(x_0,y_0)}=\frac{f_y(x_0,y_0)}{\varphi_y(x_0,y_0)}\tag 6 φx(x0,y0)fx(x0,y0)=φy(x0,y0)fy(x0,y0)(6)
那么,此时我们便可以理解成 { f x ( x 0 , y 0 ) , f y ( x 0 , y 0 ) } / / { φ x ( x 0 , y 0 ) , φ y ( x 0 , y 0 ) } \{f_x(x_0,y_0),f_y(x_0,y_0)\}//\{\varphi_x( x_0,y_0),\varphi_y( x_0,y_0)\} {fx(x0,y0),fy(x0,y0)}//{φx(x0,y0),φy(x0,y0)},即目标函数和约束条件在取得条件极值处的梯度平行。由此可知,取得条件极值的必要条件为: Δ f ( x 0 , y 0 ) / / Δ φ ( x 0 , y 0 ) \Delta f(x_0,y_0)//\Delta \varphi(x_0,y_0) Δf(x0,y0)//Δφ(x0,y0)

Δ f ( x 0 , y 0 ) / / Δ φ ( x 0 , y 0 ) \Delta f(x_0,y_0)//\Delta \varphi(x_0,y_0) Δf(x0,y0)//Δφ(x0,y0)可知:
∃ λ 0 , 使得 Δ f ( x 0 , y 0 ) = − λ 0 ⋅ Δ φ ( x 0 , y 0 )    ⟹    Δ f ( x 0 , y 0 ) + λ 0 ⋅ Δ φ ( x 0 , y 0 ) = 0 ⃗    ⟹    Δ { f ( x 0 , y 0 ) + λ 0 ⋅ φ ( x 0 , y 0 ) } = 0 ⃗    ⟹    Δ ( f + λ 0 φ ) = 0 ⃗ (7) \begin{aligned} \exists \lambda_0,\text{使得}&\Delta f(x_0,y_0)=-\lambda_0\cdot\Delta \varphi(x_0,y_0) \\ \\ \implies&\Delta f(x_0,y_0)+\lambda_0\cdot\Delta \varphi(x_0,y_0) =\vec{0}\\ \\ \implies&\Delta \{f(x_0,y_0)+\lambda_0\cdot\varphi(x_0,y_0)\} =\vec{0}\\ \\ \implies&\Delta(f+\lambda_0\varphi)=\vec{0} \end{aligned}\tag 7 λ0,使得Δf(x0,y0)=λ0Δφ(x0,y0)Δf(x0,y0)+λ0Δφ(x0,y0)=0 Δ{f(x0,y0)+λ0φ(x0,y0)}=0 Δ(f+λ0φ)=0 (7)
进一步,如果我们令 F ( x , y , λ ) = f ( x , y ) + λ φ ( x , y ) F(x,y,\lambda)=f(x,y)+\lambda\varphi(x,y) F(x,y,λ)=f(x,y)+λφ(x,y),那么由 ( 7 ) (7) (7)可得 Δ F ( x 0 , y 0 , λ 0 ) = 0 ⃗ \Delta F(x_0,y_0,\lambda_0)=\vec{0} ΔF(x0,y0,λ0)=0 ,即 ( x 0 , y 0 , λ 0 ) (x_0,y_0,\lambda_0) (x0,y0,λ0)是函数 F ( x , y , λ ) F(x,y,\lambda) F(x,y,λ)的驻点。因此,求 f ( x , y ) f(x,y) f(x,y)的条件极值就可以转换为求 F ( x , y , λ ) F(x,y,\lambda) F(x,y,λ)驻点的问题。

同时,我们称 F ( x , y , λ ) = f ( x , y ) + λ φ ( x , y ) F(x,y,\lambda)=f(x,y)+\lambda\varphi(x,y) F(x,y,λ)=f(x,y)+λφ(x,y)为条件极值的拉格朗日函数, λ \lambda λ称为拉格朗日乘数。因此,函数 f ( x , y ) f(x,y) f(x,y)在点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处取得条件 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0条件下极值的必要条件为: ∃    λ 0 \exists\; \lambda_0 λ0使得 ( x 0 , y 0 , λ 0 ) (x_0,y_0,\lambda_0) (x0,y0,λ0)为拉格朗日函数的 F ( x , y , λ ) F(x,y,\lambda) F(x,y,λ)的驻点。

2.3 拉格朗日乘数法的求解步骤

求多元函数 Z = f ( x , y , z , . . . ) Z=f(x,y,z,...) Z=f(x,y,z,...)在条件 φ ( x , y , . . . ) = 0 , ϕ ( x , y , . . . ) = 0 , . . . \varphi(x,y,...)=0,\phi(x,y,...)=0,... φ(x,y,...)=0,ϕ(x,y,...)=0,...下的极值:

第一步:作拉格朗日函数
F ( x , y , z , . . . , λ , μ , . . . ) = f ( x , y , z , . . . ) + λ φ ( x , y , . . . ) + μ ϕ ( x , y , . . . ) + . . . F(x,y,z,...,\lambda,\mu,...)=f(x,y,z,...)+\lambda\varphi(x,y,...)+\mu\phi(x,y,...)+... F(x,y,z,...,λ,μ,...)=f(x,y,z,...)+λφ(x,y,...)+μϕ(x,y,...)+...
第二步:求 F ( x , y , z , . . . , λ , μ , . . . ) F(x,y,z,...,\lambda,\mu,...) F(x,y,z,...,λ,μ,...)的驻点 ( x 0 , y 0 , z 0 , . . . , λ 0 , μ 0 , . . . ) (x_0,y_0,z_0,...,\lambda_0,\mu_0,...) (x0,y0,z0,...,λ0,μ0,...),即解如下方程组:
{ F x = 0 F y = 0 ⋯ F λ = 0 ⋯ \begin{aligned} \begin{cases} F_x=0\\ F_y=0\\ \cdots\\ F_\lambda=0\\ \cdots \end{cases} \end{aligned} Fx=0Fy=0Fλ=0
第三步: ( x 0 , y 0 , z 0 , . . . , λ 0 , μ 0 , . . . ) (x_0,y_0,z_0,...,\lambda_0,\mu_0,...) (x0,y0,z0,...,λ0,μ0,...)便是可能的条件极值点

3 总结

在本篇文章中,笔者首先介绍通过一个引例介绍了如何通过拉格朗日乘数法来求解条件极值;然后通过一元函数极值的必要条件推导出了拉格朗日乘数法的原理;最后再推广得到了如何用拉格朗日乘数法来求解多元函数的条件极值。本次内容就到此结束,感谢阅读!

若有任何疑问与见解,请发邮件至[email protected]并附上文章链接,青山不改,绿水长流,月来客栈见!

引用

[1]https://en.wikipedia.org/wiki/Lagrange_multiplier

[2]《高等数学学习手册》徐小湛

好久不见的拉格朗日乘数法_第2张图片

你可能感兴趣的:(跟我一起机器学习)