ラグランジュの未定係数法 のバックアップ差分(No.10)

更新


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[量子力学Ⅰ]]

* 目次 [#w47159e5]

#contents

* 解きたい問題の例 [#f4d9cac4]

#ref(lagrange-example.svg,around,right);

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

これは、

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

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

* 条件付き最適化問題 [#t6a56485]

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

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

&math(m); 個の拘束条件

 &math(g_1(x_1,x_2,\dots,x_n)=0); ~
 &math(g_2(x_1,x_2,\dots,x_n)=0); ~
 &math(\ \ \ \vdots); ~
 &math(g_m(x_1,x_2,\dots,x_n)=0); 

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

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

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

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

** キモ [#x9a84277]

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

>&math(\bm x=(x_1,x_2,\dots,x_n)); が &math(n); 次元空間において拘束条件を満たす点であるとして、
>
>「&math(\Delta\bm x); を拘束条件を破らない方向に取る限り」 
>
>&math(f); の一次の変位量がゼロとなる: ~
 &math(\Delta f=\bm\nabla f\cdot\Delta\bm x=0); 

という意味である。

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

* ラグランジュの未定係数法 [#v1fe15da]

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

 &math(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));

という関数を構成し、

 &math(\frac{\partial L}{\partial x_1}=\frac{\partial L}{\partial x_2}=\dots=\frac{\partial L}{\partial x_n}=0);

 &math(\frac{\partial L}{\partial \lambda_1}=\frac{\partial L}{\partial \lambda_2}=\dots=\frac{\partial L}{\partial \lambda_m}=0);

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

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

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

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

一方、&math(x_j); での微分からは、

 &math(\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);

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

 &math(\bm \nabla L=\bm \nabla f-\sum_{i=1}^m \lambda_i \bm \nabla g_i=\bm 0);

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

 &math(\bm \nabla f=\sum_{i=1}^m \lambda_i \bm \nabla g_i);

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

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

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

** 停留点の十分条件となっていること [#j4fbf759]

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

&math(\bm x); が拘束条件を満たすとき、&math(\bm x+\Delta\bm x); も拘束条件を満たすためには
すべての &math(i); に対して

 &math(\Delta g_i=\bm\nabla g_i\cdot \Delta\bm x=0);

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

つまり &math(\Delta\bm x); はすべての &math(\bm\nabla g_i); に垂直である。

このとき条件式より、

 &math(
\Delta f=\bm\nabla f\cdot\Delta\bm x=\sum_i \lambda_i\underbrace{\bm\nabla g_i\cdot\Delta\bm x}_{=\,0}=0
);

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


** 停留点の必要条件となっていること [#e0c73b69]

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

ある点 &math(x); が拘束条件下での停留点であるとすれば、
+ &math(x); は拘束条件を満たす
+ &math(x); を拘束条件を満たす方向へ動かしたときに &math(f); が変化しない

が成り立つが、この 2. は、
- &math(\Delta \bm x); がすべての &math(\bm\nabla g_i); に垂直なら、&math(\bm\nabla f); にも垂直である

と読み替えられる。この条件と、
- &math(\bm\nabla f); は &math(\bm\nabla g_i); の線形結合で表せる

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

直交補空間の概念に通じているなら 
>2. を~
 ・ すべての &math(\bm\nabla g_i); が張る空間を &math(V_\mathrm{break}); とし、~
 ・ その直交補空間を &math(V_\mathrm{meet}); とすれば、~
 ・ 任意の &math(\Delta\bm x\in V_\mathrm{meet}); が &math(\bm\nabla f); に垂直である
>と言い換えることができて、これは &math(\bm\nabla f); が &math(V_\mathrm{meet}); 
の直交補空間、すなわち &math(V_\mathrm{break}); の元であることを示すから、&math(\bm\nabla f); は &math(V_\mathrm{break}); 
を張る &math(\bm\nabla g_i); の線形結合で表せて、その係数が &math(\lambda_i); である。

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

>すべての &math(\bm\nabla g_i); が張る空間を &math(V_\mathrm{break}); とし、
そこに正規直交基底 &math(\set{\bm e_j}); を取る。
>&math(\bm\nabla f); が &math(V_\mathrm{break}); の元ではない可能性を考えて、
> &math(\bm\nabla f=\sum_j c_j\bm e_j + \bm\delta);
>と書く。ただし、&math(\bm\delta\notin V_\mathrm{break}); 
であり、任意の &math(j); に対して &math(\bm\delta\cdot\bm e_j=0); とする。
>すると &math(\bm\delta); はすべての &math(\bm\nabla g_i); に垂直であるから、
&math(\Delta\bm x=\bm\delta); と取れば、
> &math(\bm\nabla g\cdot\Delta\bm x=\bm 0);, &math(\bm\nabla f\cdot\bm\delta=\|\bm\delta\|^2);
>となって、&math(\bm\delta=\bm 0); でない限り仮定に反する。
>すなわち &math(\bm\delta=\bm 0); であり、これは &math(\bm\nabla f); が 
&math(V_\mathrm{break}); の元で、&math(\bm\nabla g_i); の線形結合で表せることを意味する。

* 例題 [#f3642e93]

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

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

#ref(lagrange-example.svg,around,right);

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

 &math(
\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]\\
);

&math(\lambda,x,y); で微分すると、

 &math(
\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式より

 &math(x=\frac{3\lambda}{\lambda-1},y=\frac{2\lambda}{\lambda-1}); 

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

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

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

&math(x=3t,y=2t); に代入しなおして、

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

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

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

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

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

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

#collapsible(Mathematicaソース)

 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
 ]

#collapsible(end)

* 参考文献 [#dd54f218]

-ラグランジュの未定乗数法の解説と直感的な証明~
http://www.yunabe.jp/docs/lagrange_multiplier.html

* コメント・質問 [#v8dfb2fb]

#article_kcaptcha


Counter: 14032 (from 2010/06/03), today: 4, yesterday: 0