拉格朗日乘子法 那些年學過的高數


  最近在做通信網絡相關的仿真,今天拿到了一些別人仿真的代碼來學習,其中看到了一個double Lambda[T_Node_Number][M][Low_iteration];的參數,注釋寫着拉格朗日乘子式。本來對於這個名詞感覺很陌生,后來查了一些資料,才回憶起這似乎是大一高數曾經學過的知識,經查書,果不其然,高數下P113頁 條件極值拉格朗日法講的就是這個內容。以前被忽視的知識點,再次重現,我覺得要好好學習一下。一下是學習筆記:


如何理解

先看一個二維的例子:假設有函數:f(x,y),要求其極值(最大值/最小值),且

g\left( x,y \right) = c,

c 為常數。對不同dn的值,不難想像出

f \left( x, y \right)=d_n

的等高線。而方程g的等高線正好是g(x,y) = c。想像我們沿着g = c的等高線走;因為大部分情況下fg的等高線不會重合,但在有解的情況下,這兩條線會相交。想像此時我們移動g = c上的點,因為f是連續的方程,我們因此能走到f \left( x, y \right)=d_n更高或更低的等高線上,也就是說dn可以變大或變小。只有當g = cf \left( x, y \right)=d_n相切,也就是說,此時,我們正同時沿着g = cf \left( x, y \right)=d_n走。這種情況下,會出現極值鞍點

氣象圖中就很常出現這樣的例子,當溫度和氣壓兩列等高線同時出現的時候,切點就意味着約束極值的存在。

向量的形式來表達的話,我們說相切的性質在此意味着fg的斜率在某點上平行。此時引入一個未知標量λ,並求解:

 \nabla \Big[f \left(x, y \right) + \lambda \left(g \left(x, y \right) - c \right) \Big] = 0

λ ≠ 0.

一旦求出λ的值,將其套入下式,易求在無約束極值和極值所對應的點。

 F \left( x , y \right)  =   f \left( x , y \right) + \lambda \left( g \left( x , y \right) - c \right)

新方程F(x,y)在達到極值時與f(x,y)相等,因為F(x,y)達到極值時g(x,y) − c總等於零。

方法

假設需要求極值的目標 函數 (objective function) 為 f(x,y),約束條件為 φ(x,y)=M
設g(x,y)=M-φ(x,y)
定義一個新函數
F(x,y,λ)=f(x,y)+λg(x,y)
則用 偏導數方法列出 方程
∂F/∂x=0
∂F/∂y=0
∂F/∂λ=0
求出x,y,λ的值,代入即可得到 目標函數的極值
擴展為多個變量的式子為:
F(x1,x2,...λ)=f(x1,x2,...)+λg(x1,x2...)
則求 極值點的方程為:
∂F/∂xi=0(xi即為x1、x2……等 自變量
∂F/∂λ=g(x1,x2...)=0
以上內容在《數學手冊》當中有。另外,可以將這種把 約束條件乘以λ(即不定乘子)后加到待求函數上的求 極值方法推廣到變分極值問題及其它極值問題當中,理論力學當中對 非完整約束的處理方法就是利用 變分法當中的 拉格朗日乘子法

 

很簡單的例子

求此方程的最大值:

f(x,y) = x2y

同時未知數滿足

x2 + y2 = 1

因為只有一個未知數的限制條件,我們只需要用一個乘數λ.

g(x,y) = x2 + y2 − 1
Φ(x,y,λ) = f(x,y) + λg(x,y) = x2y + λ(x2 + y2 − 1)

將所有Φ方程的偏微分設為零,得到一個方程組,最大值是以下方程組的解中的一個:

2xy + 2λx = 0
x2 + 2λy = 0
x2 + y2 − 1 = 0

另一個例子

求此離散分布的最大

f(p_1,p_2,\ldots,p_n) = -\sum_{k=1}^n p_k\log_2 p_k.

所有概率的總和是1,因此我們得到的約束是gp)= 1即

g(p_1,p_2,\ldots,p_n)=\sum_{k=1}^n p_k=1.

可以使用拉格朗日乘數找到最高熵(概率的函數)。對於所有的k 從1到n,要求

\frac{\partial}{\partial p_k}(f+\lambda (g-1))=0,

由此得到

\frac{\partial}{\partial p_k}\left(-\sum_{k=1}^n p_k \log_2 p_k + \lambda (\sum_{k=1}^n p_k - 1) \right) = 0.

計算出這n個等式的微分,我們得到:

-\left(\frac{1}{\ln 2}+\log_2 p_k \right) + \lambda = 0.

這說明pi都相等 (因為它們都只是λ的函數). 解出約束∑k pk = 1,得到

p_k = \frac{1}{n}.

因此,使用均勻分布可得到最大熵的值。

 


 

 

心得體會:經過這次學習,深切地體會到在學習知識時,一次學會是多么重要的一件事情。由於課程安排不合理和個人時間利用的問題,在大學期間的課程,有好多都學的一知半解,不夠深入,不夠扎實,大多都是為了應付考試,考前突擊學成的,致使考試不考的內容根本不會,考試考了的內容考完以后很快也就淡忘了,時間久了根本連印象都沒有。這樣子學習是不行的,可是應該如何學習呢?是應該第一次學習就盡可能學好,還是更依賴於經過一段時間的溫故知新呢。我不敢輕易相信已有的所謂學習,還需在實踐中檢驗考證。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM