合成関数の微分公式と逆関数の微分公式は大事なんですが、あまり分かりやすくないですね。分かった気分になっても実際に計算に利用しようとすると戸惑ったりします。もうちょっと分かりやすく正確な表現方法はないものか? と考えてみました。
内容:
愚痴と提案
「愚痴」とは、言ってもしょうがないけど思わず口に出してしまうことです。「提案」は、言う価値と効果があるだろうと思って言うことです。
まずは愚痴です。STEM〈Science, Technology/Engineering, and Mathematics〉で使われる用語と記法が、まったく不合理だったり、わけわからん習慣があったりして、なかなかにフラストレーションがたまります。
非確率的・決定性な関数を「確率変数」と呼ぶなんて、タチの悪いジョークとしか思えん。逆関数、逆数、逆像、引き戻しなどが、すべて右肩に'-1'を付けて表すので区別できん。行列の2行1列目の成分を って書くの、なんなんアレ? 21行1列目と2行11列目はどう書くんだよ、書いてみ。
とか言ったところでどうせ変わらないので諦めてます。良し悪しがどうであれ、伝統と習慣には従わざるを得ないです。
で、ここからは提案なんですが; 慣用の用語・記法を変えることはできないにしても、ある段階で一時的に用語・記法を変えて説明するのはいいんじゃないでしょうか。一時的な用語・記法は、世間的・一般的には通用しないので、無駄になると思われるでしょうが、学習と教育の負担が減れば、全体としては効率化になる可能性があります。
というわけで、この記事では、それが慣用(世間一般の普通)ではないと断りを入れながら、一時的な独自記法を使います。「ここでは」が一時的な独自記法を導入するシグナルです。愚痴に近い文言には、最後に「しょうがない」を付けます。
簡単な例と用語・記法の説明
まず、1次元の例を出します。実数の開区間は、(a, b) のように書くのが普通ですが、ペアと区別がつかない*1ので、ここでは I(a, b) と書きます。a < b として、次の4種類の開区間があります。
- I(a, b) := {x∈R | a < x < b}
- I(a, ∞) := {x∈R | a < x}
- I(-∞, b) := {x∈R | x < b}
- I(-∞, ∞) := R
U, V は実数の開区間だとします。関数 f:U→V が微分可能なとき、その導関数は Df または f' と書きます。Df と f' は完全に同義なので、意味的な区別はありません。区別はしないけど、適当に混ぜて使います。
ちなみに、「関数」と「写像」はたいてい同義ですが、「導関数」とはいっても「導写像」は聞かないなぁ。同義でも置き換え不可能なのは習慣、しょうがない。
f:U→V であっても、導関数Dfの値がV内に収まるとは限らないので、Df:U→R と考えることになります。じゃー、常に f:U→R にしておけばいいのか? x ex は R→R と考えたとしても、逆関数(対数関数)を作るときは R→I(0, ∞) と考え直してからでないと逆関数を作れません。関数の余域〈codomain | target domain〉をRに固定・限定するのは無理です。
もとの関数fと導関数f'の両方の情報を一緒にした関数を考えましょう。それを、fの接関数〈tangent function〉と呼びます。「接関数」はここだけの一時的な用語かと言うと:
- 接写像〈tangent {map | mapping}〉は普通に使う。
- 接関数はあまり使わない。(使う人がいるかも知れないが。)
- 同義でも置き換え不可能なのは習慣、しょうがない。
ウーム、…、無難に接写像にしておきます。
fの接写像を Tf と書きます(これは一般的)。Tfの域と余域は:
- Tf:U×R→V×R
U×R の要素を (x, ξ) のように書きます。x∈U, ξ∈R、xは直線内の点と考えて、ξは位置の変位と考えます。ξはR内を任意に動けますが、気持ちの上では“小さい範囲で動く”と思います -- あくまで気持ちだけど。
f:U→V の接写像Tfは、(x, ξ) に対して次の値をとります。
- Tf(x, ξ) = (f(x), f'(x)・ξ)
'・'は掛け算です。ここでは、掛け算の演算子記号を省略することはしません。数の掛け算でも、行列とベクトルの掛け算*2でも、行列どうしの掛け算でも、常に演算子記号'・'を明示的に書きます。
f(x)∈V, f'(x)・ξ∈R ですから、(f(x), f'(x)・ξ)∈V×R で、Tfの定義は合理的(Tfはwell-defined)です。
掛け算記号'・'ともうひとつ、一時的な独自記号として、右肩に三角印を導入しておきます。a◁ は、aの逆数のことだとします。Aが正方行列のときは、A◁ で逆行列です。次が成立します。
- a・a◁ = a◁・a = 1
- A・A◁ = A◁・A = In (Inは、n×nの単位行列)
右肩に'-1'は、逆写像〈逆関数〉の意味でのみ使います。もちろん、世間一般では、逆数も逆行列も(逆像も引き戻しも)右肩に'-1'です。文脈で判断できる、という理由で同じ書き方、しょうがない。
多次元を含む場合
前節の話を任意の次元に拡張します。U⊆Rℓ, V⊆Rm, W⊆Rn とします。ℓ, m, n は任意の自然数で、U, V, W は開集合です。次元 ℓ, m, n が0であってもかまいませんが、気になる方は0を除外してもいいです。
多次元の微分を知らない方は、ℓ = m = n = 1 だとして、U, V, W は開区間だと思ってください。すべて1次元の場合でも、当然に意味があります。
U⊆Rℓ, V⊆Rm, f:U→V だとすると、fの導関数は、
- Df:U→Mat(m, ℓ)
となります。Mat(m, ℓ) は、ℓ行m列の行列〈matrix〉の集合です。ℓ = m = 1 だと、Df:U→Mat(1, 1) ですが、通常 Mat(1, 1) をRと同一視するので、Df:U→R なのです。一般的な ℓ, m に対する導関数Dfはヤコビ行列〈Jacobian matrix〉とも呼ばれ、次の形で書かれます。
さて、fの接写像Tfですが、これは、もとの写像fと導関数〈ヤコビ行列〉Df = f' を一緒にしたものです。が、単なるペア (f, f') として書くと混乱しそうなので、ここでは、(f : f') という特別なペアとして書きます。
- Tf:U×Rℓ→V×Rm
- Tf = (f : f')
- Tf(x, ξ) = (f : f')(x, ξ) = (f(x), f'(x)・ξ)
Tf(x, ξ) = (f(x), f'(x)・ξ) は、前節の1次元の場合と同じですが、成分を使って表示すれば:
ξ∈Rℓ は、列ベクトル(ℓ行1列の行列)とみなして縦に書いています。ベクトルと行列の積も掛け算記号'・'を入れてます。
合成関数と逆関数の微分公式
以下、よく知られた微分公式を書き下すだけです。一時的に導入した記法により明確さは増していると思います。
U⊆Rℓ, V⊆Rm, W⊆Rn, f:U→V, g:V→W のとき、合成関数の微分公式:
- T(gf) = (gf : (g'f)・g')
- T(gf)(x, ξ) = (gf : (g'f)・f')(x, ξ) = ((gf)(x), (g'f)(x)・f'(x)・ξ) = (g(f(x)), (g'(f(x)))・f'(x)・ξ)
T(gf)(x, ξ) = (g(f(x)), (g'(f(x)))・f'(x)・ξ) を成分表示すると:
成分がたくさんあるので複雑化してますが、成分に展開しなければ1次元の場合と同じです。
そして、U⊆Rℓ, V⊆Rm, f:U→V で、fが可逆なとき(ℓ = m となります)の逆関数の微分公式:
- T(f-1) = (f-1 : (f'f-1)◁)
- T(f-1)(y, ρ) = (f-1 : (f'f-1)◁)(y, ρ) = (f-1(y), (f'f-1)◁(y)・ρ) = (f-1(y), (f'(f-1(y))◁・ρ)
※ 最初、ギリシャ文字エータ「η」を使っていたのですが、エータが原因でTeXの表示が出来なくなるという謎の現象があるので、エータをロー「ρ」に変えました。「はてなブログのTeXレンダリングが謎の挙動」参照。
T(f-1)(y, ρ) = (f-1(y), (f'(f-1(y))◁・ρ) を成分表示すると:
これも成分に展開したから複雑なだけです。引数や成分を書かない抽象的な形で捉えておくことが大事です。次元に関わりなく単純な形をしています。