汎関数微分

とりあえずは無難な内容をこちらへまとめてみた。

[
前の記事へ]  [解析力学の目次へ]  [次の記事へ]


実は変分法と同じ内容

 ここでは「汎関数微分」を物理から離れて説明しようと思う。前にも話したが、汎関数微分というのは、第 3 部の「ベルヌーイの問題提起」のところで説明したのと論理的には同じ内容である。しかしそうは言われても、じっくり考えてみないとどこまでが同じなのかなかなか気付けないものだ。

 普通の微分があらゆる分野のあらゆる場面に使われているように、汎関数微分も色んな場面で利用されている。最速降下線問題に限って使うような話ではないわけだ。

 特定の具体例に縛られて思考を狭めてしまうことが無いように、論理の要点だけをもう少し抽象的にまとめ直しておこうと思うのである。抽象的にとは言っても、難し過ぎることにはならないだろうから安心して欲しい。厳密な話をするつもりもないので、過度の期待はしないでもらいたい。

 要するに私自身が何となく納得が行かず、もやもやしたものを感じ、それを晴らす為にあちこちで調べまくった結果をまとめておこうというわけである。


汎関数

 では説明を始めよう。ある関数\( F(x) \)を使った次のような計算で決められる値\( I \)があるとする。
\[ \begin{align*} I \ =\ \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} F(x) \diff x \tag{1} \end{align*} \]
 ここで\( F \)\( x \)の関数として表されているが、それが\( x \)で積分されている為、\( I \)はもう\( x \)の関数ではなくなっている。これが単なる積分ではなく、定積分であることが大切である。では\( I \)は何の関数かと言えば、関数\( F \)の形を変更することで値が変わるのだから、関数\( F(x) \)の関数だと言えないだろうか。このような値\( I \)を「汎関数」と呼ぶ。汎関数は必ずしも積分で表されるものだとは限らないのだが、とりあえずこれが一番分かり易い例であるからこうしておこう。

 \( I \)\( F \)の汎関数であることを表すのに\( I[F] \)という記法が良く使われる。普通の関数は\( (\ ) \)の中に変数を書くが、汎関数の場合は\( [\ ] \)の中に関数を示す記号を書くのである。

 汎関数というのは、単に関数の中に関数が含まれているような、「合成関数」とはまるで意味が違うことが分かってもらえるだろうか。大雑把に言えば、関数全体の形によって一つの値が決まるのが汎関数なのである。いや、この表現には正確ではない部分があるのだが、どこがまずいかに気付く時が来るまでは、この考え方をしておけばいいと思う。その方が本質部分をすっきり理解できそうだ。

 例えば、こんな面白い見方がある。現代数学というのは集合論のやり方で議論されることが多く、関数についても、集合を使ったちょっと変わったやり方で定義されていたりする。つまり、通常の関数というのは、数値の集合の元の一つを、別の集合の元である一つの値へと対応させるルールであるという見方をするのである。要するに、値の集合が二つあって、一方から他方への写像を与えるのが関数だと言うわけだ。同様に、関数の集合と値の集合の二つを考え、前者から後者への写像が汎関数だという見方が出来る。さらには、関数の集合から別の関数の集合へと対応させる写像もあり、これは作用素であるという具合に分類ができるらしい。作用素というのは、物理では「演算子」と呼ばれており、量子力学で良く出てくるやつだ。ああ、なるほど、私は数学の知識にはまるで疎いが、そういうことが言えている気がする。

 汎関数と普通の関数の違いは、ただ変数の個数が無限か有限かというだけだという見方も出来る。なぜなら、関数\( F(x) \)に代入する\( x \)の値はどんな値でも無限にある中から選べるのであり、その\( x \)の値の一つ一つに対応して\( F(x) \)の値が決まることになっている。関数というのは無限個の数値の集合体だと言えよう。その無限にある\( F(x) \)の値の全てが、\( I \)の値を決定するのに使われていると見なせるから、\( I \)は変数の数が無限個であるような関数だと言えるではないか。


汎関数微分の考え方

 関数\( F(x) \)の形に大きな変更を加えたならば、\( I \)には当然大きな変化が起こるだろう。逆に\( F(x) \)にほんの少しの変更\( \delta F(x) \)しか加えないならば、\( I \)には小さな変化\( \delta I \)しか起こらないに違いない。両者の変化の度合いには比例に似た関係があるようにも思える。しかしそれはちゃんと数学的に扱えるようなものだろうか。\( \delta I \)\( \delta F(x) \)とは記号は似ていてもまるで意味が違うではないか。

 それでもこれは普通の微分計算に良く似た話だとも言える。変数を無限小だけ変化させたときに、関数の値がやはり無限小だけ変化する。その両者の変化の比が、その変化を無限小にした極限で一定値に落ち着くことを計算したのが普通の微分なのだった。では汎関数についてはどうだろう。

 「関数\( F(x) \)を無限小だけ変化させる」とは言っても、その変化のさせ方には色々あって、普通の微分ほど簡単には議論できないようにも思える。まぁ、心配するよりも試しにやってみたら良いだろう。

\[ \begin{align*} \delta I\ &=\ \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \big\{ F(x) + \delta F(x) \big\} \diff x - \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} F(x) \diff x \\ \ &=\ \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \big\{ F(x) + \delta F(x) - F(x) \big\} \diff x \\ \ &=\ \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \delta F(x) \diff x \tag{2} \end{align*} \]
 あぁ?何だこれは?\( F(x) \)をわずかに変化させたときの\( I \)の変化は、変化させた量\( \delta F(x) \)を積分したら求められるということだ。考えてみればごくごく当たり前の結果が導かれてしまっただけではないか。私はもう少し面白い結果になることを期待したのだった。仕方がないので話をもう少し複雑にしてみよう。

 関数\( F(x) \)が、もっと別の関数\( f (x) \)を含む形で出来上がっているとしてみたらどうだろうか。

 しかしこれでも大して面白くはならない。\( f(x) \)をわずかに変更して\( f(x) + \delta f(x) \)にしたとする。その時、\( \delta F(x) \)がどうなるかと言えば、これは汎関数微分ではなく普通の微分である。何を言っているのか少々ややこしく感じているかもしれないから、丁寧に話しておこう。

 今は\( x \)を変化させることを考えているのではないので\( x \)のことを忘れよう。\( f \)\( f + \diff f \)に変化させたとき、\( F \)\( F + \diff F \)となるが、\( \diff F \)\( \diff f \)の関係はどうなっているかを問うているに過ぎない。その\( \diff F \)\( \diff f \)が今は話の流れ上、\( \delta F \)\( \delta f \)という記号で表されているというだけだ。

\[ \begin{align*} \delta F\ =\ \pdif{F}{f} \delta f \end{align*} \]
 これを (2) 式に代入すれば、次のようになる。
\[ \begin{align*} \delta I\ =\ \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \pdif{F}{f} \delta f \diff x \end{align*} \]
 \( \pdifline{F}{f} \)\( x \)の関数になっている可能性があるから、勝手に積分の外には出せない。これ以上面白い変形は出来そうにないから、これはこのままにして、次の話題に移ろう。

 実はもう少し複雑な事を考えたいのだ。上では、\( F(x) \)\( f(x) \)を含む関数であるとしてみたが、\( F(x) \)はこの他に\( \diff f/\diff x \)をも含んでいるとしたらどうだろうか。要するに、\( F(x) \)\( x \)\( f(x) \)\( \diff f(x)/\diff x \)という 3 種類の独立した変数を含むような関数であると考えてみるのである。

 ここから式はどんどん複雑になるが、論理は非常に単純であるから、式を読む面倒臭さに負けないようにして欲しい。

 関数\( f \)\( f + \delta f \)に変化したと考えると、\( \diff f/\diff x \)の方は

\[ \begin{align*} \dif{f}{x}\ &\rightarrow\ \dif{( f + \delta f )}{x} \\ &=\ \dif{f}{x} + \dif{(\delta f)}{x} \end{align*} \]
と変化するであろう。つまり、\( \diff (\delta f)/\diff x \)だけ増えたのである。これは\( \diff f/\diff x \)がどれだけ変化するかという意味でもあるので、\( \delta( \diff f/\diff x) \)という表記をしてもいいであろう。要するに微分記号\( \dif{}{x} \)と変分記号\( \delta \)は順番を入れ替えても問題ないことが言える。
\[ \begin{align*} \dif{(\delta f)}{x} \ =\ \delta \Big( \dif{f}{x} \Big) \end{align*} \]
 さて、この変化により\( \delta F \)にはどんな影響があるかと言うと、\( f \)が変化した影響と\( \diff f/\diff x \)が変化した影響が両方あるから、
\[ \begin{align*} \delta F \ =\ \pdif{F}{f} \delta f + \pdif{F}{( \dif{f}{x} )} \delta \big( {\textstyle \dif{f}{x} } \big) \end{align*} \]
と書けることになる。この式について、幾つかコメントしておこう。\( F \)は変数として直接\( x \)をも含む関数ではあるが、今は\( f \)の変化のみを考えていて\( x \)の変化は考えていないので式には現れない。式がやたらとややこしく見えるだろうが、\( \diff f/\diff x \)というのはひとかたまりの記号だと思って欲しい。何か別の一つのアルファベットで表してもいいくらいなのだが、それよりは読者にはこの状況に少しずつ慣れてもらった方がいいと思うのである。この程度の書き方は他の教科書でも普通に行われているからだ。

 この式をやはり (2) 式に代入してみることにする。

\[ \begin{align*} \delta I \ =\ \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \Big[\ \pdif{F}{f} \delta f + \pdif{F}{ \big(\dif{f}{x}\big) } \dif{(\delta f)}{x} \ \Big] \diff x \end{align*} \]
 なかなかややこしい形になってしまったが、積分の中の第 2 項の\( \diff (\delta f)/\diff x \)は、部分積分を使うことによって、ただの\( \delta f \)に直せそうだ。第 2 項だけを取り出して計算すると次のようになる。
\[ \begin{align*} & \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \pdif{F}{\left(\dif{f}{x}\right)} \dif{(\delta f)}{x} \diff x \\ =\ & \left[ \pdif{F}{\big(\dif{f}{x}\big)} \delta f \right]_{\scriptscriptstyle A}^{\scriptscriptstyle B} - \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \left[ \dif{}{x} \pdif{F}{\big(\dif{f}{x}\big)} \right] \delta f \, \diff x \\ =\ & - \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \left[ \dif{}{x} \pdif{F}{\big(\dif{f}{x}\big)} \right] \delta f \, \diff x \end{align*} \]
 ここで、2 行目の第 1 項が 3 行目では消されているが、これはそうなるように\( \delta f(A) = \delta f(B) = 0 \)であるという仮定を今突然に入れることにしたからである。理路整然とした教科書を書きたい人は、こういうことは予め仮定しておいた方がいいかも知れない。

 この結果を合わせてみると\( \delta I \)は、

\[ \begin{align*} \delta I \ =\ & \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \left\{ \pdif{F}{f} \delta f - \dif{}{x} \pdif{F}{\big(\pdif{f}{x}\big)} \delta f \right\} \diff x \\ =\ & \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \left\{ \pdif{F}{f} - \dif{}{x}\pdif{F}{\big(\pdif{f}{x}\big)} \right\} \delta f \diff x \end{align*} \]
となり、積分の中身を\( \delta f \)でまとめる事が出来たことになる。さて、なぜ\( \delta f \)でまとめることにこだわるのだろうか。ここが大事なのである。

 今こそ、汎関数微分の定義を紹介するとしよう。

\[ \begin{align*} \delta I\ =\ \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} X(x) \delta f(x) \diff x \end{align*} \]
という形式で書ける時、\( X(x) \)にあたる部分を\( \delta I/\delta f \)と書いて、これを汎関数\( I[f] \)\( f \)による汎関数微分と呼ぶのである。
\[ \begin{align*} \vardif{I}{f}\ =\ \pdif{F}{f} - \dif{}{x} \pdif{F}{\big( \dif{f}{x} \big)} \end{align*} \]
 第 3 部の「ベルヌーイの問題提起」のところで説明したのと全く同じことをそのまま繰り返しただけであることにお気付きかも知れない。私も説明していて、どんどん話が似てくるので、やめてしまおうかと思ったくらいだ。まったく無駄な事をしてしまったものだ。しかし具体例を離れた事で、純粋に論理の方へ集中できたのではないだろうか?それに、この後、まだまだ付け加えたい事が山ほどあるのだ。

 今出てきた汎関数微分の定義と (2) 式とをちょっと比較してもらいたい。(2) 式は「まったく簡単すぎて面白くない」と話したものだったが、つまり、これは、

\[ \begin{align*} \vardif{I}{F}\ =\ 1 \end{align*} \]
であることを表しているのではないか。これも汎関数微分の一種であったのだが、確かに簡単すぎて面白くない例だったということだ。

 それにしてもこの定義が意味するところは一体何なのだろうか。ちょっと考えてみよう。


汎関数微分の定義の意図

 上で色々と試す中で、\( \delta F \)\( \delta f \)の間の関係については偏微分を使って表すことが出来ていた。では\( \delta I \)\( \delta f \)の間の関係は同じ具合に表せないものだろうか。私はずっとそれが気になって仕方なかった。汎関数微分の記号が\( \delta I/\delta f \)という割り算のような形になっていることから、普通の微分と似たような論理が使えることを期待してしまうのである。

 しかし、初めの方で書いたように、\( \delta I \)\( \delta f \)とは記号の形式は同じでも、意味がかなり違うのだった。それなのになぜ汎関数微分は割り算の形式で表記されるのだろう。単に「普通の微分」と考えが似ていることから、同じような記号を採用しただけだろうか。微分と同じようなチェーンルールみたいなことは出来ないのだろうか。ええと、言いたいことがうまく伝わっているか心配だ。つまり、こんな具合に・・・。

\[ \begin{align*} \delta I\ =\ \vardif{I}{f} \delta f \ \ \ \ \ \ \ \ \ \ ??? \end{align*} \]
 (注:この式は単なる妄想)
そんな漠然としたモヤモヤ感を幾日も抱えていたわけだが・・・。

 この解説記事を分かり易いものにしようと格闘している内に、ある日突然に気が付いた。あ、なぁーんだ!汎関数微分の定義というのは、自分の疑問への答え、そのものになっているじゃないか!汎関数微分の定義は、これだった。

\[ \begin{align*} \delta I\ =\ \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \vardif{I}{f} \delta f(x) \diff x \end{align*} \]
 この式は、上に書いた妄想の式と比べてやると、ただ積分がついているかどうかだけの違いしかない。この定義式こそが、私が欲しかった\( \delta I \)\( \delta f \)の間の関係式だったのである。

 しかし積分が入って来る理由が理解しがたくて気持ち悪く思う人もいるだろう。この定義式の意味をもう少しすっきりさせてみよう。これはむしろ、偏微分の論理に近いと言える。

 \( n \)個の変数\( f_i \)(つまり\( i = 1 \sim n \))を持つ多変数関数\( P( f\sub{1}, f\sub{2}, \cdots, f_n ) \)を考えよう。この場合には、その全微分は、

\[ \begin{align*} \diff P \ =\ & \pdif{P}{f_1} \diff f_1 + \pdif{P}{f_2} \diff f_2 + ... + \pdif{P}{f_n} \diff f_n \\ =\ & \sum_i \pdif{P}{f_i} \diff f_i \end{align*} \]
と書けるのだった。では、この変数\( f_i \)が連続的に無限に存在していたら、どう書いたらいいだろう。有限個の和の記号\( \sum \)の代わりに積分を使うのではなかろうか。上の式では添え字\( i \)を使っているが、その代わりに連続的な変化を表す添え字として変数\( x \)を使ってやれば、
\[ \begin{align*} \delta I\ =\ \int_{\scriptscriptstyle A}^{\scriptscriptstyle B} \diff x \vardif{I}{f} \delta f(x) \end{align*} \]
となるのであり、汎関数微分の定義そのものである。このような、偏微分との類似性は何と美しい事だろうか。汎関数とはまさに、変数が無限個である関数としての意味を持つのであった。


もう少し複雑なことにチャレンジ

 これよりさらに進んで、「もし\( F(x) \)\( f(x) \)の 2 階微分も含んでいたら?」などという状況設定を考えることも出来る。そういう計算が必要になった時には、これまでと同じような調子でじっくり考えてもらえば何とかなるであろう。ここでは具体的にはやらないで、興味のある読者にお任せしようと思う。

 少しだけ書いておくと、部分積分を繰り返してやればいいのである。その時には、\( \delta f \)の微分\( \delta f' \)が出てきて、\( \delta f'(A) = \delta f'(B) = 0 \)という仮定を追加することも必要になるだろう。

 話が長くなってきたのでここで一区切りしたいと思う。本当は他にも書いておいた方が良いかと迷っていることがあるのだが、残りは次回に回すことにしよう。先へ進むのに必要な内容はすでにここまでに詰め込んであるはずなので、以上の説明で満足できてしまった人は、次の話を読み飛ばしてもらっても問題ないだろう。