拉格朗日乘数法是一种在有约束条件下求多元函数极值的方法,以下从多个方面为你详细讲解:
一、问题背景与引入
在实际问题中,我们常常需要求一个多元函数 z=f(x,y)z = f(x,y)z=f(x,y) 的极值,但变量 x,yx,yx,y 往往还需要满足一定的约束条件 φ(x,y)=0\varphi(x,y)=0φ(x,y)=0 。例如,在一个给定的曲面上找距离原点最近的点,就属于这种有约束条件的极值问题。拉格朗日乘数法就是为解决这类问题而诞生的。
二、方法原理
对于函数 z=f(x,y)z = f(x,y)z=f(x,y) ,在约束条件 φ(x,y)=0\varphi(x,y)=0φ(x,y)=0 下求极值。我们构造拉格朗日函数 L(x,y,λ)=f(x,y)+λφ(x,y)L(x,y,\lambda)=f(x,y)+\lambda\varphi(x,y)L(x,y,λ)=f(x,y)+λφ(x,y) ,其中 λ\lambdaλ 被称为拉格朗日乘数,是一个待定常数。
其背后的原理基于这样一个事实:在极值点处,目标函数 f(x,y)f(x,y)f(x,y) 的梯度向量 ∇f\nabla f∇f 与约束条件函数 φ(x,y)\varphi(x,y)φ(x,y) 的梯度向量 ∇φ\nabla\varphi∇φ 是平行的(或者说共线)。而拉格朗日函数 L(x,y,λ)L(x,y,\lambda)L(x,y,λ) 把目标函数和约束条件整合到了一起,通过对 L(x,y,λ)L(x,y,\lambda)L(x,y,λ) 分别求关于 xxx、yyy、λ\lambdaλ 的偏导数,并令它们都等于 0,即
{Lx=fx(x,y)+λφx(x,y)=0Ly=fy(x,y)+λφy(x,y)=0Lλ=φ(x,y)=0\begin{cases}L_x = f_x(x,y)+\lambda\varphi_x(x,y)=0 \\ L_y = f_y(x,y)+\lambda\varphi_y(x,y)=0 \\ L_{\lambda}=\varphi(x,y)=0\end{cases}⎩⎨⎧ Lx =fx (x,y)+λφx (x,y)=0Ly =fy (x,y)+λφy (x,y)=0Lλ =φ(x,y)=0 ,联立求解这组方程组,得到的解 (x,y,λ)(x,y,\lambda)(x,y,λ) 中的
(x,y)(x,y)(x,y) 就有可能是目标函数在约束条件下的极值点。
三、推广到多元函数
对于 nnn 元函数 f(x1,x2,⋯ ,xn)f(x_1,x_2,\cdots,x_n)f(x1 ,x2 ,⋯,xn ) ,在 mmm 个约束条件 φi(x1,x2,⋯ ,xn)=0\varphi_i(x_1,x_2,\cdots,x_n)=0φi (x1 ,x2 ,⋯,xn )=0 (i=1,2,⋯ ,mi = 1,2,\cdots,mi=1,2,⋯,m,且 m<nm < nm<n )下求极值。我们构造拉格朗日函数
L(x1,x2,⋯ ,xn,λ1,λ2,⋯ ,λm)=f(x1,x2,⋯ ,xn)+∑i=1mλiφi(x1,x2,⋯ ,xn)L(x_1,x_2,\cdots,x_n,\lambda_1,\lambda_2,\cdots,\lambda_m)=f(x_1,x_2,\cdots,x_n)+\sum_{i = 1}^{m}\lambda_i\varphi_i(x_1,x_2,\cdots,x_n)L(x1 ,x2 ,⋯,xn ,λ1 ,λ2 ,⋯,λm )=f(x1 ,x2 ,⋯,xn )+∑i=1m λi φi (x1 ,x2 ,⋯,xn ) 。
然后分别对 x1,x2,⋯ ,xn,λ1,λ2,⋯ ,λmx_1,x_2,\cdots,x_n,\lambda_1,\lambda_2,\cdots,\lambda_mx1 ,x2 ,⋯,xn ,λ1 ,λ2 ,⋯,λm 求偏导数,并令它们都等于 0,得到一组方程组,解这个方程组得到的 (x1,x2,⋯ ,xn)(x_1,x_2,\cdots,x_n)(x1 ,x2 ,⋯,xn ) 可能是函数 fff 在约束条件下的极值点。
四、举例说明
求函数 f(x,y)=x2+y2f(x,y)=x^2 + y^2f(x,y)=x2+y2 在约束条件 x+y−1=0x + y - 1 = 0x+y−1=0 下的极值。
首先构造拉格朗日函数 L(x,y,λ)=x2+y2+λ(x+y−1)L(x,y,\lambda)=x^2 + y^2+\lambda(x + y - 1)L(x,y,λ)=x2+y2+λ(x+y−1) 。
然后求偏导数:
Lx=2x+λ=0L_x = 2x+\lambda = 0Lx =2x+λ=0 。
Ly=2y+λ=0L_y = 2y+\lambda = 0Ly =2y+λ=0 。
Lλ=x+y−1=0L_{\lambda}=x + y - 1 = 0Lλ =x+y−1=0 。
由 2x+λ=02x+\lambda = 02x+λ=0 可得 λ=−2x\lambda=-2xλ=−2x ,由 2y+λ=02y+\lambda = 02y+λ=0 可得 λ=−2y\lambda=-2yλ=−2y ,所以 −2x=−2y-2x=-2y−2x=−2y ,即 x=yx = yx=y 。
将 x=yx = yx=y 代入 x+y−1=0x + y - 1 = 0x+y−1=0 ,得到 2x−1=02x - 1 = 02x−1=0 ,解得 x=y=12x = y=\frac{1}{2}x=y=21 。
此时 f(12,12)=(12)2+(12)2=12f(\frac{1}{2},\frac{1}{2})=(\frac{1}{2})^2+(\frac{1}{2})^2=\frac{1}{2}f(21 ,21 )=(21 )2+(21 )2=21 ,所以函数 f(x,y)f(x,y)f(x,y) 在约束条件下有极小值 12\frac{1}{2}21 。
五、注意事项
拉格朗日乘数法求出的点只是可能的极值点,还需要进一步判断它是极大值点还是极小值点,有时可以根据问题的实际背景来判断,有时也可以通过二阶偏导数等方法来判断。
这种方法只适用于约束条件是等式的情况,如果是不等式约束条件,需要使用更复杂的方法,比如 KKT 条件等。