2021年10月16日土曜日

ルジャンドル変換(1)

 ルジャンドル変換は,積分を使って表現するとわかりやすいという説と通常の説明の対応について考えてみたい。この過程でtikzにおける塗りつぶし方法を練習した。


図:ルジャンドル変換のための説明図

原点を通る単調増加関数上の点C $(x,p)$があって,図のように矩形の領域をとる。矩形領域内で関数の下の部分の面積を$f(x)$,上の部分の面積を$f^*(p)$とすると,$f(x)+f^*(p)=xp$が成り立つ。$f^*(p)$が$f(x)$のルジャンドル変換になる。同様に,$f(x)$は$f^*(p)$のルジャンドル変換である。$f^*(p)$のルジャンドル変換は$f^{**}(x)$とも書けるから,$f^{**}(x)=f(x)$となって,ルジャンドル変換を2回繰り返すと元の関数に戻る。

この単調増加関数は,$x$の関数とすると$f'(x)$であり,$p$の関数と見れば${f^{*}}'(p)$となる。そこで,$f^*(p)$を求めるには,$p=f'(x)$を$x$について解いて,$x=\varphi(p)$を求めてから,$f^*(p) = x p - f(x) = \varphi(p) \cdot p - f(\varphi(p))$として求めることができる。

いいかえれば,$f(x) = x p - f^*(p) |_{p=f'(x)}$ として,元の関数$f(x)$が,傾き$p$と切片$ - f^*(p)$でも表現されるということになる。
/begin{tikzpicture}
\tikzstyle{every node}=[font = \Large];
\filldraw (0,0) circle(1pt) node[below left]{O};
\draw[->] (-2,0) -- (8,0) node[right]{$x$};
\draw[->] (0,-2) -- (0,8) node[above]{$p$};
\draw[step=1.0, dotted] (-2,-2) grid (8,8);
\draw [dotted, pattern=north west lines, pattern color=blue] (0,0) -- (1,1.3) -- (2,2) -- (3,2.4) -- (4,3)-- (5,4) -- (6,5.4) -- (6,0);
\draw [dotted, pattern=north west lines, pattern color=red] (0,0) -- (1,1.3) -- (2,2) -- (3,2.4) -- (4,3) -- (5,4) -- (6,5.4) -- (0,5.4);
\draw[domain=0:3, thick] plot(\x,{-0.2*(\x-3.5)^2+2.45});
\draw[domain=3:7, thick] plot(\x,{0.2*(\x-2)^2+2.2});
\filldraw (6,0) circle(1pt) node[below]{$x$};
\filldraw (3,2.4) circle(1pt);
\filldraw (6,5.4) circle(1pt) node[right]{C};
\node[below right] at (6.5,5.4) {$f^{'}(x)$};
\node[above left] at (6,5.4) {$f^{*'}(p)$};
\filldraw (0,5.4) circle(1pt) node[left] {$p$};
\draw[blue] (4,1) node{$f(x)$};
\draw[red] (2,4) node{$f^*(p)$};
\end{tikzpicture}

0 件のコメント: