拉格朗日乘子法學習筆記

  在數學中的最優化問題中,拉格朗日乘數法(以數學家約瑟夫·拉格朗日命名)是一種尋找多元函數在其變量受到一個或多個條件的約束時的極值的方法。這種方法能夠將一個有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。箭頭表示梯度,和等高線的法線平行。spa

假設g(x,y) = c 等高線 與 f(x,y) = dn 等高線相交,交點就是同時知足等式約束條件和目標函數的可行域的值,但確定不是最優值,由於相交意味着確定還存在其它的等高線在該條等高線的內部或者外部,使得新的等高線與目標函數的交點的值更大或者更小,只有到等高線與目標函數的曲線相切的時候,可能取得最優值,即等高線和目標函數的曲線在該點的法向量必須有相同方向,因此最優值必須知足:f(x,y)的梯度 = λ * g(x,y)的梯度,λ是常數,表示左右兩邊同向。這個等式就是拉格朗日函數L(x,y,λ)對參數求導的結果。 blog

咱們先寫出拉格朗日函數,數學

 L(x,y,λ) = f(x,y) + λ * (g(x,y) - c)class

求解▽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)im

爲何呢?我是這樣考慮的,不對的地方,請讀者指正。命名

▽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。

相關文章
相關標籤/搜索