具體算法
假設需要求極值的目标函數 (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/∂M=λ,當M增加或減少一個單位值時,F會相應變化λ。
例如,假設目标函數代表一個工廠生産産品的數量,約束條件限制了生産中投入的原料和人力的總成本,我們求目标函數的極值,就是要求在成本一定的條件下,如何分配利用人力和原料,從而使得生産量達到最大。此時λ便代表,當成本條件改變時,工廠可達到的生産量最大值的變化率。
在求解最優化問題中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)條件是兩種最常用的方法。在有等式約束時使用拉格朗日乘子法,在有不等約束時使用KKT條件。