ラグランジュの未定係数法

(83d) 更新

量子力学Ⅰ

目次

解きたい問題の例

lagrange-example.svg

例えば、「2次元平面の (3,2) を中心に書かれた半径1の円周上の点のうち、 原点からの距離が最小となるものを探す」という問題を考える。

これは、

  • 原点からの距離を表す関数 f(x,y)=\sqrt{x^2+y^2} を、
  • 点が円周上にあるという条件
      g(x,y)=(x-3)^2+(y-2)^2-1^2=0
    の下で最小化する

という問題と捉えられる。

条件付き最適化問題

上記のような問題を一般化して、

ある関数 f(x_1,x_2,\dots,x_n) を最大化・最小化するような点を

m 個の拘束条件

  g_1(x_1,x_2,\dots,x_n)=0
  g_2(x_1,x_2,\dots,x_n)=0
  \ \ \ \vdots
  g_m(x_1,x_2,\dots,x_n)=0

の下で探すという問題を考える。*1ただし (m<n) とする。さもないと拘束条件が多すぎて、それだけで点が定まってしまう

このような問題は「条件付き最適化問題」などと呼ばれる。

これを解くにはまず、与えられた拘束条件の下である関数 f 停留点 を探すことになる。

その際、以下に説明する ラグランジュの未定係数法 と呼ばれる手法が非常に役に立つ。

キモ

「拘束条件下での停留点」とは、

\bm x=(x_1,x_2,\dots,x_n) n 次元空間において拘束条件を満たす点であるとして、

\Delta\bm x を拘束条件を破らない方向に取る限り」

f の一次の変位量がゼロとなる:
  \Delta f=\bm\nabla f\cdot\Delta\bm x=0

という意味である。

拘束条件を破るような方向へ動かしたときに \Delta f\ne 0 となっても構わないところが キモといえる。

ラグランジュの未定係数法

「未定係数」と呼ばれる実数定数 \lambda_i (i=1,2,\dots,m) を用いて

  L(x_1,x_2,\dots,x_n)=f(x_1,x_2,\dots,x_n)-\sum_{i=1}^m \lambda_i g_i(x_1,x_2,\dots,x_n)

という関数を構成し、

  \frac{\partial L}{\partial x_1}=\frac{\partial L}{\partial x_2}=\dots=\frac{\partial L}{\partial x_n}=0

  \frac{\partial L}{\partial \lambda_1}=\frac{\partial L}{\partial \lambda_2}=\dots=\frac{\partial L}{\partial \lambda_m}=0

のすべての条件式を満たす点 \bm x およびその点における係数 \lambda_i を見つければ、 その点が停留点となる。

また逆に、全ての停留点に対して上記の条件式を満足する係数 \lambda_i が存在する。

すなわち、上の条件式はその点が停留点であるための必要十分条件になっている。

条件式の意味

\lambda_i での微分からは元の拘束条件が現れるのみである。

一方、 x_j での微分からは、

  \frac{\partial L}{\partial x_j}=\frac{\partial f}{\partial x_j}-\sum_{i=1}^m \lambda_i\frac{\partial g}{\partial x_j}=0

を得る。 j=1,2,\dots,n の方程式をすべてまとめてベクトル形式とすれば、

  \bm \nabla L=\bm \nabla f-\sum_{i=1}^m \lambda_i \bm \nabla g_i=\bm 0

と書ける。これを変形すると、

  \bm \nabla f=\sum_{i=1}^m \lambda_i \bm \nabla g_i

となり、すなわち両者を合わせれば、

 その点ですべての拘束条件が満たされており、
 なおかつ \bm \nabla f \bm \nabla g_i の一次結合で表せるような点が停留点である

というのがラグランジュの未定係数法の条件式の意味するところである。

停留点の十分条件となっていること

そのような点 \bm x が必ず停留点となることは、 以下のように簡単に理解できる。

\bm x は拘束条件を満たすから、 \bm x+\Delta\bm x が拘束条件を満たすためには すべての i に対して

  \Delta g_i=\bm\nabla g_i\cdot \Delta\bm x=0

となるように \Delta\bm x の方向を選ばなければならない。

このとき条件式より、

  \Delta f=\bm\nabla f\cdot\Delta\bm x=\sum_i \lambda_i\underbrace{\bm\nabla g_i\cdot\Delta\bm x}_{=\,0}=0

となり、条件を満たす点が必ず停留点となることを確認できる。

停留点の必要条件となっていること

逆に、すべての停留点に対して、上記の条件式を満たす \lambda_i が必ず存在するだろうか?

ある点 x が拘束条件下での停留点であるとすれば、

  1. x は拘束条件を満たす
  2. x を拘束条件を満たす方向へ動かしたときに f が変化しない

が成り立つが、この 2. は、

  • \Delta \bm x がすべての \bm\nabla g_i に垂直なら、 \bm\nabla f にも垂直である

と読み替えられる。この条件と、

  • \bm\nabla f \bm\nabla g_i の線形結合で表せる

が同値であることを言えば良いのだが・・・

直交補空間の概念に通じているなら

2. を
 ・ すべての \bm\nabla g_i が張る空間を V_\mathrm{break} とし、
 ・ その直交補空間を V_\mathrm{meet} とすれば、
 ・ 任意の \Delta\bm x\in V_\mathrm{meet} \bm\nabla f に垂直である

と言い換えることができて、これは \bm\nabla f V_\mathrm{meet} の直交補空間、すなわち V_\mathrm{break} の元であることを示すから、 \bm\nabla f V_\mathrm{break} を張る \bm\nabla g_i の線形結合で表せて、その係数が \lambda_i である。

ということで証明が終わるのであるが、、、前提知識の少なくて済む説明をするなら:

すべての \bm\nabla g_i が張る空間を V_\mathrm{break} とし、 そこに正規直交基底 \set{\bm e_j} を取る。

\bm\nabla f V_\mathrm{break} の元ではない可能性を考えて、

  \bm\nabla f=\sum_j c_j\bm e_j + \bm\delta

と書く。ただし、 \bm\delta\notin V_\mathrm{break} すなわち任意の j に対して \bm\delta\cdot\bm e_j=0 とする。

すると \bm\delta はすべての \bm\nabla g_i に垂直であるから、 \Delta\bm x=\bm\delta と取れば、

  \bm\nabla g\cdot\Delta\bm x=\bm 0 , \bm\nabla f\cdot\bm\delta=\|\bm\delta\|^2

となって、 \bm\delta=\bm 0 でない限り仮定に反する。

すなわち \bm\delta=\bm 0 であり、これは \bm\nabla f V_\mathrm{break} の元で、 \bm\nabla g_i の線形結合で表せることを意味する。

例題

2次元平面の (3,2) を中心に書かれた半径1の円周上の点で、 原点からの距離が最小となるものを探したい

  • 原点からの距離を表す関数 f(x,y)=\sqrt{x^2+y^2} を、
  • 点が円周上にあるという条件 g(x,y)=(x-3)^2+(y-2)^2-1^2=0 の下で
  • 最小化すればよい
lagrange-example.svg

ちょっと楽をするため f(x,y)=\sqrt{x^2+y^2} ではなく f(x,y)=x^2+y^2 を使う

  \mathcal{L}(x,y) &=f(x,y)-\lambda g(x,y)\\ &=x^2+y^2-\lambda\Big[(x-3)^2+(y-2)^2-1\Big]\\

\lambda,x,y で微分すると、

  \begin{cases} \frac{\partial\mathcal{L}}{\partial \lambda}=(x-3)^2+(y-2)^2-1=0\\ \frac{\partial\mathcal{L}}{\partial x}=2x-2\lambda(x-3)=2(1-\lambda)x+6\lambda=0\\ \frac{\partial\mathcal{L}}{\partial y}=2y-2\lambda(y-2)=2(1-\lambda)y+4\lambda=0 \end{cases}

第2式、第3式より

  x=\frac{3\lambda}{\lambda-1},y=\frac{2\lambda}{\lambda-1}

となるから、求める点は直線 y=3x/2 の上にあることが分かる。

t=\frac{\lambda}{\lambda-1} と置いて第1式に代入すると、

  &(3t-3)^2+(2t-2)^2=1\\ &13(t-1)^2=1\\ &t=1\pm \frac{1}{\sqrt{13}}\\

x=3t,y=2t に代入しなおして、

  x=3\Big(1\pm \frac{1}{\sqrt{13}}\Big),\ y=2\Big(1\pm \frac{1}{\sqrt{13}}\Big)\\

ただし複号同順。このうち原点に近いのは

  x=3\Big(1- \frac{1}{\sqrt{13}}\Big),\ y=2\Big(1- \frac{1}{\sqrt{13}}\Big)\\

であり、もう一方は最大値を与える。

ラグランジュの未定係数法の言うところでは、 これらの点では円弧と \bm\nabla f とが直交するため、 円弧の上で f が停留値を取る。

もちろんこのような単純な問題であれば図形を書いて解くことも可能だが、 ラグランジュの未定係数法を用いることで問題設定に依らず、また多次元であっても、 「条件付き最適化問題」を機械的に解けることを理解せよ。

LANG:Mathematica
Show[
  ParametricPlot[{Cos[t] + 3, Sin[t] + 2}, {t, 0, 2 Pi}],
  ListPlot[{{0, 0}, {3, 2}, {3 (1 - 1/Sqrt[13]), 2 (1 - 1/Sqrt[13])}, 
                            {3 (1 + 1/Sqrt[13]), 2 (1 + 1/Sqrt[13])}},
           PlotStyle -> PointSize[Large]],
  ParametricPlot[{x, 2 x/3}, {x, 0, 4}, PlotStyle -> {{Thin, Dashed}}],

  PlotRange -> {{0, 4}, {0, 3}},
  AxesOrigin -> {0, 0},
  GridLines -> {{0, 1, 2, 3, 4}, {0, 1, 2, 3}},
  AspectRatio -> Automatic,
  ImageSize -> 200
]

参考文献

コメント・質問





*1 ただし (m<n) とする。さもないと拘束条件が多すぎて、それだけで点が定まってしまう

添付ファイル: filelagrange-example.svg 21件 [詳細]

Counter: 1553 (from 2010/06/03), today: 11, yesterday: 0