拉格朗日乘數法是用於求條件極值的方法。對於條件極值,通常是將條件方程轉換為單值函數,再代入待求極值的函數中,從而將問題轉化為無條件極值問題進行求解。但是如果條件很復雜不能轉換,就要用到拉格朗日乘數法了。拉格朗日乘數法使用條件極值的一組必要條件來求出一些可能的極值點(不是充要條件,說明求出的不一定是極值,還需要驗證)。
如尋求函數
$z = f(x,y)$
在條件
$\varphi(x,y) = 0$
下取得極值的必要條件。
如果在$(x_0,y_0)$下取得$z$的極值,則首先應該有:
$\varphi(x_0,y_0) = 0$
另外,假定在$(x_0,y_0)$的某一領域內$f(x,y)$與$\varphi(x,y)$均有連續的一階偏導數(沒有連續導數讓導數為0求極值就沒有意義了),並且$\varphi_y(x_0,y_0) \neq 0$。由隱函數存在定理(對於$z=\varphi(x,y)$若$\exist\varphi_y(x,y) \neq 0$與$\varphi_x(x,y)$則$\displaystyle\frac{{\rm d}y}{{\rm d}x} = -\frac{\varphi_x(x,y)}{\varphi_y(x,y)}$)可知,條件方程$\varphi(x,y)=0$在$(x_0,y_0)$某領域確定具有連續偏導數的函數$y=\psi(x)$,代入$z$得:
$z = f[x,\psi(x)]$
於是這個極值可以直接由一個變量$x$來確定,由一元可導函數取極值必要條件得:
$\displaystyle\left.\frac{{\rm d}z}{{\rm d}x}\right|_{x=x_0}=f_x(x_0,y_0)+f_y(x_0,y_0)\left.\frac{{\rm d}y}{{\rm d}x}\right|_{x=x_0}=0$
即:
$\displaystyle 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)}=0$
設$\displaystyle\frac{f_y(x_0,y_0)}{\varphi_y(x_0,y_0)}=-\lambda$。
為什么要這么設呢?我覺得是因為它本身就是未知的,但又不是完全未知,是兩個偏導數之商,在這里面首先不容易計算,其次這個偏導數商的條件也沒什么用,因此就直接設為完全未知的參數$\lambda$了。
結合以上可以獲得條件極值$(x_0,y_0)$應該滿足的必要條件(第二行式子直接代入$\lambda$可以發現就等於0):
$\left\{\begin{array}{lcr}f_x(x_0,y_0)+\lambda\varphi_x(x_0,y_0)=0\\f_y(x_0,y_0)+\lambda\varphi_y(x_0,y_0)=0\\\varphi(x_0,y_0)=0\end{array}\right.$
為了方便表達,引入輔助函數
$L(x,y) = f(x,y)+\lambda\varphi(x,y)$
必要條件就變成
$\left\{\begin{array}{lcr}L_x(x_0,y_0)=0\\L_y(x_0,y_0)=0\\L_{\lambda}(x_0,y_0)=0\\\end{array}\right.$
於是通過這個聯立式求得的$(x,y)$就是可能的條件極值點。當然,是在$(x,y)$的某領域內有連續偏導數的假設下。
對於多維情況(自變量多於2個,條件多於1個),如求
$u=f(x,y,z,t)$
在附加條件
$\varphi(x,y,z,t)=0, \psi(x,y,z,t)=0$
下的極值。作類似的輔助函數(拉格朗日函數)
$L(x,y,z,t)=f(x,y,z,t)+\lambda\varphi(x,y,z,t)+\mu \psi(x,y,z,t)$
其中$\lambda,\mu$都為參數,求它的偏導數的聯立方程即可:
$\left\{\begin{array}{lcr}L_x(x,y,z,t)=0\\L_y(x,y,z,t)=0\\L_z(x,y,z,t)=0\\L_t(x,y,z,t)=0\\L_{\lambda}(x,y,z,t)=0\\L_{\mu}(x,y,z,t)=0\end{array}\right.$