数学とか語学とか楽しいよね

フランス語、ドイツ語、ロシア語、アラビア語、オランダ語、英語、スペイン語、ラテン語とか数学とか数値計算(有限要素法、有限体積法、差分法、格子ボルツマン法、数理最適化、C++コード付き)とか勉強したことをまとめます。右のカテゴリーから興味のある記事を探してください。最近はクラシックの名演も紹介しています。Amazonアソシエイトを使用しています。

【最適化】ラグランジュの未定乗数法とは何だろう?

Lagrangeの未定乗数法といわれる方法について、その使い方をまず説明します。よく経済学や最適化の分野で登場する重要な手法ですが、天下り的な感じがして理解しづらいです。


これは「等式制約条件付き極値問題」を「無制約な極値問題」へと変換する方法であると言えます。「等式制約条件付き極値問題」とは要する、に何らかの式が成り立つような条件のもとで、ある関数の最大値ないし最小値を探す問題です。この問題は制約がついているので解くには工夫が必要です。一方「無制約な極値問題」とはある関数の最大値ないし最小値を探す問題です。この問題は制約が無いので簡単です。ラグランジュの未定乗数法を使うと問題が簡単になるのです。


ではラグランジュの未定乗数法の使い方をまず例題を通して学びましょう。以下の問題を考えます(ありがちですが)。


 
\displaystyle 
\begin{eqnarray} 

{\rm max} \;\;  f(x,y) &=& x^2 + 3y^2 \\
{\rm subject \: to}  \;\;  g(x,y) &=& 3x + y +1=0

\end{eqnarray}


ここで  \begin{eqnarray} {\rm max} \end{eqnarray} は「最大化しますよ」ということを表しています。一方  \begin{eqnarray} {\rm subject \: to} \end{eqnarray} は「この制約条件を守ってね」ということを表しています。 f(x,y) が最大化すべき関数で、 g(x,y)=0 が等式の制約条件です。気取って書いているだけです。等式の制約条件  g(x,y)=0 を満たし、 f(x,y) を最大化するような  (x^*,y^*)(最適解)を求めよう、というのがこの問題です。


さてラグランジュの未定乗数法ではまずラグランジュ関数を


 
\displaystyle 
\begin{eqnarray} 

L(x,y,\lambda) &=& f(x,y) + \lambda g(x,y) \\
                       &=& x^2 + 3y^2 +\lambda (3x + y +1)

\end{eqnarray}


と定義します。ここで  \lambdaラグランジュ乗数と呼ばれる新しい変数です。なんとラグランジュの未定乗数法ではわざわざ変数を増やすのです!天下り的な感じがしますね(私もしばらくそう思っていました)。これについては次の記事で解説しようと思うので、今回は使い方に集中してください。


最適解  (x^*,y^*)ラグランジュ関数を用いて


 
\displaystyle 
\begin{eqnarray} 

\frac{\partial L}{\partial x} &=& 2x^* +3\lambda = 0 \\
\frac{\partial L}{\partial y} &=& 6y^* +\lambda = 0 \\
\frac{\partial L}{\partial \lambda} &=& 3x^* + y^* + 1= 0 

\end{eqnarray}


という連立方程式の解で与えられます。これは簡単に解けて


 
\displaystyle 
\begin{eqnarray} 

x^* = -\frac{9}{28}, \; y^* = -\frac{1}{28}, \; \lambda = \frac{3}{14}

\end{eqnarray}


となります。多分合っていると思います。これが最適解です。このとき


 
\displaystyle 
\begin{eqnarray} 

f(x^*,y^*) = \left( -\frac{9}{28} \right)^2 +  3 \left( -\frac{1}{28} \right)^2 = \frac{3}{28}

\end{eqnarray}


が最大値となります。


以上がラグランジュの未定乗数法の使い方です。まずはどう使うか習得してください。この方法で何故最適解が求まるのか考えるのはそれからです。理解は後からついてきます。これは次の記事で解説します。お楽しみに。