在數學中的最優化問題中,拉格朗日乘數法(以數學家約瑟夫·拉格朗日命名)是一種尋找多元函數在其變量受到一個或多個條件的約束時的極值的方法。這種方法可以將一個有n個變量與k個約束條件的最優化問題轉換為一個解有n + k個變量的方程組的解的問題。這種方法中引入了一個或一組新的未知數,即拉格朗日乘數,又稱拉格朗日乘子,或拉氏乘子,它們是在轉換后的方程,即約束方程中作為梯度(gradient)的線性組合中各個向量的系數。
比如,要求 f(x,y)在g(x, y) = c 時的最大值,c為常數。先來看圖
綠線標出的是約束g(x,y) = c的點的軌跡,也是g(x,y)的一條等高線。藍線是f的等高線,f(x,y)分別取d1 , d2 ,.....dn。箭頭表示梯度,和等高線的法線平行。
假設g(x,y) = c 等高線 與 f(x,y) = dn 等高線相交,交點就是同時滿足等式約束條件和目標函數的可行域的值,但肯定不是最優值,因為相交意味着肯定還存在其它的等高線在該條等高線的內部或者外部,使得新的等高線與目標函數的交點的值更大或者更小,只有到等高線與目標函數的曲線相切的時候,可能取得最優值,即等高線和目標函數的曲線在該點的法向量必須有相同方向,所以最優值必須滿足:f(x,y)的梯度 = λ * g(x,y)的梯度,λ是常數,表示左右兩邊同向。這個等式就是拉格朗日函數L(x,y,λ)對參數求導的結果。
我們先寫出拉格朗日函數,
L(x,y,λ) = f(x,y) + λ * (g(x,y) - c)
求解▽L(x,y,λ) 的梯度為0。L(x,y,λ)梯度為0時,則L(x,y,λ)對參數λ的偏導為0,即g(x,y) - c = 0,也是就滿足了我們的約束條件g(x,y) = c。這就是拉格朗日乘子λ的神奇之處。
另外 ▽L(x,y,λ) = 0,必須滿足
▽f(x,y) = - λ * ▽g(x,y)
為什么呢?我是這樣考慮的,不對的地方,請讀者指正。
▽L(x,y,λ) 為0,則L(x,y,λ) 對x的偏導等於0,對y的偏導等於0。也就是它在這兩個方向上Δx或者Δy趨近於0時,增量ΔL也趨近於0。而L(x,y,λ)是一個復合函數,由 f(x,y)和 λ * (g(x,y) - c)加和得來的,如果某一點(x0,y0)的梯度滿足▽f(x,y) = - ▽(λ * (g(x,y) - c))的話,它們梯度的方向正好相反,而且大小相同的話,則可以在x和y方向完全抵消,即L在(x0,y0)處的梯度為0。必然能夠得到L(x,y,λ) 對x的偏導等於0,對y的偏導等於0。