Processing math: 100%

[ML Notes] 拉格朗日函数:推导过程

1. 推导过程

  以二元函数为例,要寻找 f(x,y) 在约束条件 g(x,y)=0 下的极值,如

minf(x,y)s.t.g(x,y)=0

  假设 f(x,y)(x0,y0) 处取得极值,则有

g(x0,y0)=0

  假设在 (x0,y0) 的某一邻域内 f(x,y)g(x,y) 都有连续的一阶偏导数,且 gy(x0,y0)0,由隐函数存在定理可知,g(x,y) 确定一个连续且具有连续导数的函数 y=ϕ(x),此时 f(x,y) 变为变量 x 的函数

z=f(x,ϕ(x))

f(x,y)(x0,y0) 处取得极值,有

dzdx|x=x0=fx(x0,y0)+fy(x0,y0)dydx|x=x0=0

由式 (2) 和隐函数求导公式,有

dydx|x=x0=gx(x0,y0)gy(x0,y0)

将式 (4) 代入式 (3),得到

fx(x0,y0)fy(x0,y0)gx(x0,y0)gy(x0,y0)=0

fy(x0,y0)gy(x0,y0)=λ

将式 (6) 代入式 (5),得到

fx(x0,y0)+λgx(x0,y0)=0

由式 (5) 本身,有

fy(x0,y0)+λgy(x0,y0)=0

  引进辅助函数

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

其中 L(x,y) 称为拉格朗日函数,λ 称为拉格朗日乘子。

  结合拉格朗日函数,式 (7)(8)(2) 构成方程组

{fx(x0,y0)+λgx(x0,y0)=0fy(x0,y0)+λgy(x0,y0)=0g(x,y)=0

求解上述方程组,即可得到 x0y0λ

2. 拉格朗日乘数法

  要找函数 z=f(x,y) 在附加条件 g(x,y)=0 下的可能极值点,可以先作拉格朗日函数

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

其中 λ 为参数。求其对 xy 的一阶偏导数并使之为零,然后与约束条件 g(x,y)=0 联立起来

{fx(x0,y0)+λgx(x0,y0)=0fy(x0,y0)+λgy(x0,y0)=0g(x,y)=0

由该方程组解出 xyλ,由此得到的 (x,y) 就是函数 f(x,y) 在附加条件 g(x,y)=0 下的可能的极值点。

  对于有多个自变量的场景,如要求函数

u=f(x,y,z,t)

在附加条件

g(x,y,z,t)=0h(x,y,z,t)=0

下的极值,可以先作拉格朗日函数

L(x,y,z,t)=f(x,y,z,t)+λg(x,y,z,t)+μh(x,y,z,t)

其中 λμ 均为参数。求上式的一阶偏导数并使之为零,与两个约束条件联立求解即可。


  隐函数存在定理 设函数 F(x,y) 在点 (x0,y0) 的某一邻域内具有连续偏导数,且 F(x0,y0)=0Fy(x0,y0)0,则方程 F(x,y)=0 在点 (x0,y0) 的某一邻域内恒能唯一确定一个连续且具有连续导数的函数 y=f(x),它满足条件 y0=f(x0),并有

dydx=FxFy