ルジャンドル変換についてのメモ

まずルジャンドル変換というのは、おおざっぱには次のようなもの。

xを変数とする関数f(x)とその導関数X(x) = \frac{df(x)}{dx}を考える。(この関数f(x)は適当な性質を満たす(= 凸関数である)としておく。)
このとき、X = X(x)の関係を逆に解いて(x = x(X)という関数を導いて)、xの代わりにXを独立変数にして、
F(X) = \left( \frac{df}{dx} \cdot x - f \right)(X)
という新しい関数を作る。このときx(X) = \frac{dF(X)}{dX}の関係が成り立っている。
このようにf(x) (と X(x) = \frac{df(x)}{dx} )から、F(X)を得る操作をルジャンドル変換という。
また逆に、F(X) (と x(X) = \frac{dF(X)}{dX} )にルジャンドル変換をおこなうと、
\left( \frac{dF}{dX} \cdot X - F \right)(x) = f(x)
となりf(x)が戻ってくる。

 f(x) \qquad X = \frac{df(x)}{dx}
ルジャンドル変換
 F(X) \qquad x = \frac{dF(X)}{dX}

単調増加関数の双対性

ルジャンドル変換は、主として凸関数に関する操作なので*1、そこに至る準備として単調増加関数(つまり x≦x'ならf(x)≦f(x')となる関数)を考える。

単調増加関数の入力側をxで表し出力側をXで表すことにする。つまり、x ↦ X のように値が定まっている。
また関数自体も出力と同じXで表記し、X = f(x) のように書かず

X = X(x)

のように書くことにする。

さて関数 X(x) は単調増加関数なので、逆関数ほぼ定まる。
ここで「ほぼ」なのは、

  • 不連続点x*で関数値が X1からX2に不連続に増加したとすると、X1からX2の範囲は関数X(x)の値域にならないので、逆関数の側では X1からX2までの値について対応するxの値がない。
  • あるx1からx2まで関数値が一定値X*を取ったとすると、逆関数の側では、X*に対応するxの点が無数にある。

となるので。
しかし

  • X1からX2までの値には、x*を対応させる。
  • X*に対応する値はx1とx2のどちらかにして、関数x(X)の不連続点とする。

と決めてやれば、X(x)の「逆関数」x(X)が決まる。このx(X)も単調増加関数になる。

ここで増加関数X(x)と、その「逆関数」x(X)の間には次のような関係がある。

X(x) x(X)
単調増加関数 単調増加関数
不連続点x*で、左極限値X1から右極限値X2への不連続な増加。 X1からX2まで、一定値x*を取る。
x1からx2まで、一定値X*を取る。 不連続点X*で、左極限値x1から右極限値x2への不連続な増加。

凸関数の間の双対性

ここで、さらに関数X(x)と関数x(X)をそれぞれ積分して、
 f(x) = \int X(x)\,dx\qquad F(X) = \int x(X)\,dX
というふたつの関数f(x)とF(X)を考える。

まず、X(x)、x(X)が単調増加関数なので、f(x)、F(X)は下に凸な関数になる。
X(x)がx*で不連続のときf(x)はx*微分できない。(左微分係数と右微分係数が異なる。) またX(x)が一定値を取る区間では、f(x)は微分係数(傾き)が一定だからその部分では一次関数と一致する。
X(x)、x(X)とその積分f(x)、F(X)の関係をまとめると次のようになる。

f(x) X(x) x(X) F(X)
下凸関数 単調増加関数 単調増加関数 下凸関数
点x*微分できない。(左微分係数がX1で右微分係数がX2) 不連続点x*で、左極限値X1から右極限値X2への不連続な増加。 X1からX2まで、一定値x*を取る。 X1からX2まで、F(X)の微分係数が一定になる。
x1からx2まで、f(x)の微分係数が一定になる。 x1からx2まで、一定値X*を取る。 不連続点X*で、左極限値x1から右極限値x2への不連続な増加。 点X*微分できない。(左微分係数がx1で右微分係数がx2)

ここで、

が成り立っているから、

  • f(x)とF(X)は、定数分の不定性を除いて、互いを正確に再現することができる。( X(x)とx(X)の不連続点での不定性は積分には効いてこないので、f(x)、F(X)の値には影響しない。)

下凸関数f(x)から下凸関数F(X)を得る

ここまでの話を踏まえると、下凸関数f(x)に対して次の手順をおこなうことで下凸関数F(X)が得られる。

  1. f(x)は下凸関数なので、(1)連続関数になり、(2)ほとんどの点で微分可能になる。
  2. f(x)を微分して、増加関数X(x) = \frac{df}{dx}(x)を得る。
    • 微分不可能な点(X(x)は不連続な増加をする)での値は後の部分で効いてこないので特に決めなくていい。
  3. 増加関数X(x)の「ほぼ逆関数」x(X)を取る。(X(x)の不連続点はx(X)では一定値、X(x)の一定値はx(X)の不連続点とする。)
  4. x(X)を積分して、F(X) =\int x(X)\,dxを得る。

逆に、この手順をF(X)に対しておこなえば、F(X)からf(x)を(定数の不定さを除いて)再現することができる。

関数f(x)に「微分不可能な点」も「微分係数が一定の区間」も無い場合は、x↔Xがちょうど一対一で対応するので、f(x)の値とF(X)の値も対応する。
微分不可能な点」や「微分係数が一定の区間」がある場合は一対一では対応せず、

という対応関係になる。
一点と区間が対応しているので、一見すると変換の過程で必要な情報が足りなかったり削ってしまったりしそうだけど、微分係数一定の区間での関数値は区間の両端の値を直線的に結べば決まるので、問題なく変換が成立する。

この「下凸関数f(x) ↔ 下凸関数F(X)」の間の相互変換は、いわゆるルジャンドル変換と同じものになっている。

ルジャンドル変換

上でのf(x)からF(X)への変換を、普通のルジャンドル変換の形に近づけていく。

f(x)に微分不可能な点がなく微分係数が一定の区間もない場合

まず、f(x)に微分不可能な点がなくて、微分係数が一定になる区間もない場合を考える。
すると、部分積分により
 \begin{eqnarray} F(X) &= & \int^{X}_{X_0} x(X)\,dX = [X \cdot x(X)]^X_{X_0}  - \int^x_{x_0}X(x)\,dx \\ &=& [X \cdot x(X)]^X_{X_0} - [f(x)]^x_{x_0} \\ &=& [X \cdot x(X)   - f(x(X))]^X_{X_0} \\ &=& X \cdot x(X)  - f(x(X)) +C \end{eqnarray}

となり、定数項を消すと、通常のルジャンドル変換の式、

F(X) = X \cdot x(X) - f(x(X))

と一致する式が得られる。

f(x)に微分不可能な点がある場合

x=x*でf(x)が微分不可能で、点x*区間[X1, X2]に対応しているとする。つまりx(X1) = x(X2) = x*となっている。
この場合のF(X)を計算する。
XがX1以下のときのF(X)は、さっきの計算と同じ。

X2以上のXについてのF(X)を計算すると、
\begin{eqnarray}  F(X) &=&  \int^{X_1}_{X_0} x(X)\,dX +  \int^{X_2}_{X_1} x(X)\,dX +  \int^{X}_{X_2} x(X)\,dX \\ &=&  [X \cdot x(X)   - f(x(X))]^{X_1}_{X_0} +(X_2-X_1)x_{*} + [X \cdot x(X)   - f(x(X))]^{X}_{X_2} \\ &=&  [X \cdot x(X)   - f(x(X))]^X_{X_0} \\ &=& X \cdot x(X) - f(x(X)) +C  \end{eqnarray}
となり、微分不可能な点がない場合と同じ式が得られる。(x(X1) = x(X2) = x*のため、式変形の途中で値が打ち消しあっている。)

X1 < X < X2となるXについて計算すると、

\begin{eqnarray}  F(X) &=&  \int^{X_1}_{X_0} x(X)\,dX +  \int^{X}_{X_1} x(X)\,dX \\ &=& X \cdot x_{*} - f(x_*) + C \end{eqnarray}

となり、ルジャンドル変換の式で「x(X)」のところを x* したものになっている。
また、この式は一次式になっているから、「f(x)が微分不可能になる点には、F(X)の微分係数が一定になる区間が対応する」と合致している。

f(x)に微分係数が一定の区間がある場合

今度は区間[x1, x2]でf(x)の微分係数が一定値X*を取る場合のF(X)を計算する。

左からX*に近づいた場合、x(X)→x1となり、右からX*に近づいた場合、x(X)→x2となることに注意する。

X > X*として、

\begin{eqnarray}  F(X) &=&  \int^{X_*}_{X_0} x(X)\,dX +  \int^{X}_{X_*} x(X)\,dX \\ &=&  [X \cdot x(X)   - f(x(X))]^{X_*}_{X_0} +  [X \cdot x(X)   - f(x(X))]^X_{X_*} \end{eqnarray}

ここで、

  • 第1項:  \Bigl(x_1 X_* - f(x_1) \Bigr) + C
  • 第2項:  \Bigl( X \cdot x(X) - f(x(X) \Bigr) - \Bigl( x_2 X_* - f(x_2) \Bigr)

となる。
区間[x1, x2]でf(x)の微分係数は常にX*なので、

 f(x_2) = f(x_1) + (x_2 - x_1)X_*

が成り立っているので、第1項の前半と第2項の後半が打ち消しあって、ふたたび

 F(X) = X \cdot x(X) - f(x(X)) +C

の式が得られた。

ルジャンドル変換の式

結局、f(x)に微分不可能な点や微分係数一定の区間がある場合も含めて

  •  F(X) = X \cdot x(X) - f(x(X)) \quad (Xは、f(x)の微分不可能点と対応しない)
  •  F(X) = X \cdot x_* - f(x_*)\quad (Xは、f(x)の微分不可能点x*に対応する領域にある)

で、F(X)を計算できる。(定数C=0とした。)

この結果を図で見ると次のようになる。

関数 x(X) が右上象限に入る点を (Xs, xs) = (Xs, x(Xs)) としておく。
このとき、図の右下の領域の面積と左上の領域の面積は、それぞれ

 \begin{array}{ccc} \int^X_{X_s}x(X)\,dX  &=& F(X) - F(X_s) \\ \int^{x(X)}_{x_s} X(s)\,dx &=& f(x(X)) - f(x_s) \end{array}

となる。これらの和が長方形の面積 x(X)・X になるので、

 F(X) = X \cdot x(X) - f(x(X)) + \Bigl(f(x_s) - F(X_s) \Bigr)

が成り立ち、F(Xs) = f(xs)となるようにF(X)を決めると

 F(X) = X \cdot x(X) - f(x(X))

となる。ただし、f(x)の微分不可能な点や増加率一定の区間では、xとXが一対一に対応しないので、

  • f(x)の微分不可能な点(図のx*)に対応する区間 [X1, X2] の間にXがある場合は、 F(X) = X \cdot x_*  - f(x_*) となる。
  • f(x)の増加率が一定の区間 [x1, x2] に対応する点 X* の場合、この区間内のどのxの値を使っても、 F(X) = X \cdot x - f(x)が成り立つ。

そして逆に

  •  f(x) = x \cdot X(x)  - F(X(x)) \quad (xは、F(X)の微分不可能点と対応しない)
  •  f(x) = x \cdot X_* - F(X_*)\quad (xは、F(X)の微分不可能点X*に対応する領域にある)

によってF(X)からf(x)を求めることができ、もとの関数が再現される。

熱力学の場合

熱力学では、関数f(x)のルジャンドル変換F(X)を  F = X \cdot x - f とせず、符号を逆にして

 F = f - X \cdot x

の形で定義している。
このため、F(X)をXを微分すると(xにはならず) \frac{F(X)}{dX} = -xとなり、F(X)からf(x)への変換は

 f(x) = F(X(x)) + x\cdot X(x)

となる。

熱力学では複数の変数についてルジャンドル変換をおこなうので、こちらの定義の方が考えやすい。

*1:凸関数でなくても定義はされるけど、逆変換しても元の関数に戻らない