このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

微分はライプニッツ法則に支配されている 3/3: 領域導分と接ベクトル場

U⊆Rn を開集合として、X:C(U)→C(U) が、ライプニッツ法則を満たすR-線形写像のとき、Xは通常の偏微分作用素 \partial_i = \frac{\partial}{\partial x^i} の関数係数線形結合で書けます。このことを示すことにしましょう。

また、ライプニッツ法則を満たすR線形写像Xと、接ベクトル場の関係についても述べます。これにて、「微分ライプニッツ法則に支配されている」というお話は完結です。

内容:

シリーズ目次:

  1. 微分はライプニッツ法則に支配されている
  2. 微分はライプニッツ法則に支配されている 2: 局所性
  3. 微分はライプニッツ法則に支配されている 3/3: 領域導分と接ベクトル場

寄り道しながら

微分ライプニッツ法則に支配されている」というタイトルの一連の記事で僕が言いたいことは、ライプニッツ法則という代数法則で定義される作用素と、解析(微積分)的に定義される微分作用素が実は同じものだよ、ってことです。でも、そのことを述べる最短経路をとっているわけではありません。

微分はライプニッツ法則に支配されている」にて:

関数ジャームの空間を定義します。もっとも、関数ジャームの空間を作るのが面倒なら、代わりに、適当な開集合Uに対する C(U) でも大差ないです。「この機会に関数ジャームを紹介しました」という感じです。ジャームは、それだけでもけっこう役に立つ概念ですが、層の理論のなかで考えるのが自然かも知れません。

微分はライプニッツ法則に支配されている 2: 局所性」にて:

ユークリッド空間Rnの開集合Uで定義された関数の範囲では、後述の層(小さな開集合への制限)を使わなくても、前節最後の定理は出るような気がします。
...[snip]...
局所性を定式化するには、層の概念を使います。とはいえ、層の理論が必要なわけではなく、層の定義だけです。「層」という言葉を出す必要もないくらいです。

「絶対必要ではないけど…」と断りながら、色々な概念をつまみ食い的に紹介しています。関数ジャーム(無限小近傍で定義された関数)や層(関数の制限や貼り合わせのメカニズム)は、どっちみち使う道具なので、無駄な寄り道ではないでしょう。今回も、寄り道スタイルで、幾つかの概念を紹介します。ローカルな用語・記法も含まれます(断り書きを入れてます)。

Cr級関数、r = ∞ と r = -∞

U⊆Rn を開集合として、C0(U) は、連続関数 f:U→R の全体だとします。整数 r ≧ 1 に対して、Cr(U) は、r回微分可能で、微分した結果が連続であるような関数の全体とします。

第i方向への(通常の)偏微分作用素は、Di, ∂i, \frac{\partial}{\partial x_i} などと書きます。\frac{\partial}{\partial x_i} は、変数名が入るのが好ましくないので(「微分計算、ラムダ計算、型推論」参照)、僕はあまり使いません。f∈Cr(U) だとは、{∂1, ∂2, ..., ∂n} から、(重複を許して)r個選んで並べた作用素をfに作用させると(作用は可能だとして)、結果は連続関数になることです。次の言い方もします。

  • fはCr級の関数〈function of class Cr〉である ⇔ f∈Cr(U)

任意の r ≧ 0 に対して、f∈Cr(U) である関数の全体は C(U) と書きます。C(U) に入る関数をなめらかな関数〈smooth function〉と呼びます。

  •  C^{\infty}(U) = \bigcap_{r\in {\bf N}}C^r(U)

微分可能でも連続でもない(かも知れない)関数を考えることもあるので、任意の関数の全体を C-∞(U) と書くことにします。この記法はここだけのものです。

  • f∈C-∞(U) ⇔ fは単なる写像 ⇔ f∈Map(U, R)

アンダーラインを付けた U, R は、単なる集合としての(構造をすべて忘れた)UとR です*1

以下では、単に「関数」というとなめらかな関数を意味するので、何の条件もないC-∞級の関数は「勝手な関数」ということにします(ローカルルール)。

次のような包含の系列があります。

  • C(U)⊆ ... ⊆C2(U)⊆C1(U)⊆C0(U)⊆C-∞(U)

r = ∞ と r = -∞ も含めて、rの値が大きくなると小さな関数集合になります。

点導分と領域導分

微分はライプニッツ法則に支配されている」では、一般的な可換環加群に対して導分を定義しました。ここでは、二種類の導分を扱います。

[導分その1] Pが、C(U)からRへの点aでの導分だとは

  1. P:C(U)→R
  2. PはR-線形写像である。
  3. P(fg) = (Pf)g(a) + f(a)(Pg) --- ライプニッツ法則

[導分その2] Xが、C(U)からC(U)への導分だとは

  1. X:C(U)→C(U)
  2. XはR-線形写像である。
  3. X(fg) = (Xf)g + f(Xg) --- ライプニッツ法則

導分その1は、「微分はライプニッツ法則に支配されている」でジャームに対して定義しものと同じです。今回はジャームではなくて、関数そのものに作用するとします。

導分その2は、関数に関数を対応させるものです。通常の偏微分作用素i は、このタイプの導分になります。注意すべきは、導分といった場合、代数的に(公理的に)定義される作用素であり、特定の偏微分作用素かどうかは(今は)分からないことです。

導分その1を点導分〈point derivation〉、導分その2を領域導分〈region{nal}? derivation〉と呼ぶことにします。点導分は一般的に使われる言葉ですが、領域導分は見たことがないのでローカル用語です。

U上の関数の“点aでの点導分”の全体を PtDer(U, a) と書くことにします。U上の関数の“領域導分”の全体は RgnDer(U) にしましょう。「微分はライプニッツ法則に支配されている」で導入した一般的な記法である Der(A/K, M) を使うなら:

  • PtDer(U, a) := Der(C(U)/R, (R, a))
  • RgnDer(U) := Der(C(U)/R, C(U))

Der(A/K, M) という書き方で、MはA-加群です。点導分の場合は、Rに次のスカラー乗法(記号は'・')を入れた加群が (R, a) です。

  • For f∈C(U), r∈R,
    • f・r := f(a)r (fが左から作用)
    • r・f := rf(a) (fが右から作用)

領域導分の場合のスカラー乗法は:

  • For f∈C(U), g∈C(U)
    • f・g := fg (fが左から作用)
    • g・f := gf (fが右から作用)

作用素汎関数、なめらかさ

既に作用素という言葉を使ってますが、ここでは、限定的な意味で作用素」を使うことにします。U⊆Rn を開集合として、C(U) から C-∞(U) への写像R-線形であるとき作用素〈operator〉と呼びます。

作用素の余域〈codomain〉が勝手な関数の空間であることに注意して下さい。なめらかな関数fに対する作用素Kによる値 K(f) がなめらかかとは限りません。例えば、次のディリクレ関数hを掛け算する作用素 K(f) := hf を考えてください。

  • For x∈R, h(x) = if (xが有理数) then 1 else 0

f∈C(U) でも、K(f)∈C(U) とはなりません。

なめらかな関数を不連続関数に写して〈移して〉しまうような作用素はあんまり扱いやすくないですね。そこで、作用素なめらか〈smooth〉であることを、なめらかな関数をなめらかな関数に写すことと定義します。

  • K:C(U)→C-∞(U) がなめらか :⇔ For f∈C(U), K(f)∈C(U)

通常の偏微分作用素i は、定義からあきらかになめらかな作用素です。

汎関数」という、ちょっと古臭い言葉があります。ここでは、次の意味で使います。

  • F:C(U)→RR-線形のとき、Fを汎関数〈functional〉という。

作用素」に「線形」を付けなくとも線形性を仮定したので、同様に「汎関数」だけで線形性を仮定します(線形は織り込み済みとする)。

a∈U を決めて F(f) := f(a) は汎関数になります。a, b∈C として F(f) := f(a) + f(b) も汎関数です。X⊆U をコンパクト領域として、F(f) := \int_K f(x) dx という積分汎関数です。

K:C(U)→C作用素で、F:C(U)→R汎関数のとき、G = F\circK が汎関数であることは定義から明らかです。例えば、G(f) := (∂if)(a) は汎関数になります。

K:C(U)→C作用素で、a∈U のとき、K|a という汎関数を次のように定義できます。

  • (K|a)(f) := (K(f))(a)

既に使っている記法 ∂i|a は、偏微分作用素i に、この構成を施したものです。

勝手な(なめらかとは限らない)関数 g∈C-∞ と、勝手な(なめらかとは限らない)作用素 K:C→C-∞ を掛け算した gK を定義できます。そして、次の公式が成立します。

  • ((gK)(f))(a) = (g(a)(K|a))(f)

K = ∂i ならば、

  • ((g∂i)(f))(a) = (g(a)(∂i|a))(f)

iはなめらかですが、gが不連続だと、(g∂i)(f) はなめらかではないかも知れません。作用素  \sum_{i = 1}^n g^i \partial_i がなめらかかどうかは、次の命題から判断できます。

  • 関数  g^i 達がすべてなめらか ⇔ 作用素 K =  \sum_{i = 1}^n g^i \partial_i がなめらか

この(成立する)命題を、「なめらかさ補題〈smoothness lemma〉」と(ローカルに)呼ぶことにします。

なめらかさ補題を示しましょう。⇒方向は明らかなので、逆方向を示します。まず、第i射影関数 pi:RnR を、pi := λx∈Rn.(xi) と定義します。'λ'はラムダ記法のラムダです。微分幾何の習慣に従い添字は上付きです。pi を適当な開集合に制限した関数も同じ記号 pi と書きます。

次の事実はよく知られています。

  •  \partial_i p^j = \delta_i^j

ここで、 \delta_i^jクロネッカーのデルタです。変数名を使って書けば:

  •  \frac{\partial x^j}{\partial x^i} = \delta_i^j

これを使って、 K(p^j) を計算してみます。


K(p^j) \\
= (\sum_{i = 1}^n g^i \partial_i)(p^j) \\
= \sum_{i = 1}^n g^i (\partial_i p^j) \\
= \sum_{i = 1}^n g^i \delta_i^j \\
= g^j

関数pjはもちろんなめらかです。作用素Kは仮定よりなめからだったので、K(pj) はなめらかです。つまり、関数 gj 達はすべてなめらかになります。

領域導分の表示

通常の偏微分作用素i:C(U)→C(U) は領域導分です。つまり、ライプニッツ法則を満たすR-線形写像です。一般の領域導分 X:C(U)→C(U) が、∂i達の関数係数線形結合で書けることを示しましょう。なお、この事実を後で参照するときは領域導分定理〈region{al}? derivation theorem〉と呼ぶことにします。

最初に、「微分はライプニッツ法則に支配されている」の内容を、補題としてまとめておきます。

  • 点導分補題〈point derivation lemma〉: P:C(U)→R が点aでの点導分ならば、適当な実数 ξ1, ..., ξn が存在し、 P = \sum_{i = 1}^n \xi^i (\partial_i|_a) と書ける。

X:C(U)→C(U) が領域導分のとき、汎関数 X|a:C(U)→R が点導分になることはすぐにわかります。よって、点導分補題から、

  •  X|_a = \sum_{i = 1}^n \xi^i (\partial_i|_a) \:\:\: \mbox {where}\: \xi_i \in {\bf R}

と書けます。Uのすべての点aでこの表示を考えると、実数達 ξi, ..., ξn はaの関数となるので、次のように書けます。

  •  X|_a = \sum_{i = 1}^n \xi^i(a) (\partial_i|_a) \:\:\: \mbox{ for}\: a \in U

これは、

  •  X = \sum_{i = 1}^n \xi^i \partial_i

を意味します。念のために、f∈C(U) にXを作用させて確認してみます。('//'は、等式変形に対するコメントです。)


(Xf)(a) \\
= (X|_a)f \\
// \:\: X|_a = \sum_{i = 1}^n \xi^i(a) (\partial_i|_a)  \\
= (\sum_{i = 1}^n \xi^i(a) (\partial_i|_a) )f \\
=  \sum_{i = 1}^n (\xi^i(a) (\partial_i|_a)f) \\
// \:\: (\partial_i|_a)f = (\partial_i f)(a) \\
=  \sum_{i = 1}^n \xi^i(a)( (\partial_i f)(a)) \\
=  ( (\sum_{i = 1}^n \xi^i \partial_i) f)(a) \\
これが、任意の a∈U に対して成立するので、

 Xf = (\sum_{i = 1}^n \xi^i \partial_i) f

さらにこれが、任意の f∈C(U) に対して成立するので、

 X = \sum_{i = 1}^n \xi^i \partial_i

これで得られた関数達 ξi がなめらかかどうかは、ただちには分かりませんが、領域導分Xは定義によりなめらかだったので、なめらかさ補題により ξi 達もなめらかです。

以上により、領域導分Xは  \sum_{i = 1}^n \xi^i \partial_i という一意的表示を持つことが分かりました。一点だけではなく領域(開集合全体)においても、ライプニッツ法則を満たす線形作用素は、我々が知っている「あの微分」(後述の方向微分)に限るのです。別な言い方をすると、代数的に定義された導分は、解析的に定義された微分に一致します

接ベクトル場

「接ベクトル場」というと、心に描くイメージは次のようなものでしょう。

*2

ユークリッド空間Rnの点 a = (a1, ..., an) にくっついているベクトル v(a) の成分表示を、


v(a) = v(a_1, \cdots, a_n) = \begin{pmatrix}
v^1(a_1, \cdots, a_n) \\
\cdots \\
\cdots \\
v^n(a_1, \cdots, a_n) \\
\end{pmatrix}

とします。点の座標を a = (a1, ..., an)、接ベクトル場の成分表示を (v1(a), ..., vn(a)) と書いています。aが動く範囲を U⊆Rn とすると、接ベクトル場は v:U→Rn という写像で表現できます。これを接ベクトル場の仮の定義として採用します。つまり:

  • U⊆Rn上の接ベクトル場(仮)〈tangent vector field (provisional)〉とは、v:U→Rn というなめらかな(Cな)写像である。

さてここで、異なる点の接ベクトルは異なるとして、点aにおける接ベクトルは (a, ξ) または ξ@a と書くことにします。すると、接ベクトルの全体は U×Rn = {(a, ξ) | a∈U, ξ∈Rn} となります。

ベクトル場は、点aに、その点における接ベクトルを対応させます。よって、次のような写像になります。

  • w:U→U×Rn
  • π\circw = idU

ここで、π:U×Rn→U は、π(a, ξ) = π(ξ@a) = a と定義される射影です。wを、w(a) = (f(a), v(a)) と分解してみると、上記二番目の条件から、f(a) = a となり、w(a) = (a, v(a)) と書けます。これは、wはvだけで決まってしまうことを意味します。しかし、「異なる点の接ベクトルは異なる」という発想は、接ベクトル場(仮)とは違います。次の定義をします。

  • U⊆Rn上の接ベクトル場〈tangent vector field〉とは、w:U→U×Rn というなめらかな(Cな)写像で、π\circw = idU を満たすものである。

接ベクトル場wは、w(a) = v(a)@a と書けます。wとvは1:1に対応するので、記号の乱用で、v(a) = v(a)@a と書いていしまうことがあります。不正確でヨロシクナイけど、このような乱用は使われます。

a∈U に対して、Rn@a を次のように定義します*3

  • Rn@a = {ξ@a | ξ∈Rn} = {(x, ξ)∈U×Rn | x = a} = {a}×Rn

射影 π:U×Rn→U を使って書けば:

  • Rn@a = π-1(a)

もし、ファイバーバンドルのファイバーの記法をご存知なら、

  • Rn@a = (U×Rn)a

領域導分と接ベクトル場の対応

前節で接ベクトル場を定義しました。領域(開集合)U上の接ベクトル場の全体を TVF(U) とします(TVF = Tangent Vector Field)。

X:C(U)→C(U) がU上の領域導分(X∈RgnDer(U))のとき、U上の接ベクトル場 v = ΞX が決まります。ここで、Ξは、Ξ:RgnDer(U)→TVF(U) という写像です*4

また、vがU上の接ベクトル場(v∈TVF(U))のとき、U上の領域導分 X = Dv が決まります。ここで、Dは、D:TVF(U)→RgnDer(U) という写像です。

今述べたΞとDをちゃんと定義した上で、互いに逆であること(↓)を示しましょう。

  1. For X∈RgnDer(U),
    let v = ΞX
    then Dv = X
  2. For v∈TVF(U),
    let X = Dv
    then ΞX = v

まず、Ξの定義; X∈RgnDer(U) とすると、領域導分定理により、なめらかな関数達 ξi∈C(U) があって、 X = \sum_{i=1}^n \xi^i \partial_i と書けるのでした。このξi達を使って、

  • v = ΞX = λa∈U.((ξ1(a), ..., ξn(a))@a)

と定義します。簡潔に書くなら v(a) = ξ(a)@a です。X \mapsto ξ \mapsto v という対応が Ξ:C(U)→TVF(U) です。

次に、Dの定義; v∈TVF(U) として、乱用記法により v(a) = v(a)@a と書きます。v(a)を成分表示すると、v(a) = (v1(a), ..., vn(a)) 、この関数達 vi を使って、

  •  D_v := \sum_{i=1}^n v^i \partial_i

と定義します。v \mapsto Dv が D:TVF(U)→RgnDer(U) です。Dvは、接ベクトル場vによる方向微分〈directional {derivative | differential}〉といいます。

一点aで考えると、点導分  \sum_{i=1}^n\xi^i (\partial_i|_a) と、接ベクトル (ξ1, ..., ξn)@a (ただし、ξ1, ..., ξn は実数)が対応することになります。

ΞとDが互いに逆になることは容易に確認できるでしょう(割愛)。

領域導分と接ベクトル場の同一視

この記事では、U上の接ベクトル場を写像 v:U→U×Rn として定義しました。そして、接ベクトル場と領域導分が1:1に対応することを示しました。

最近の流儀だと、いきなり「接ベクトル場とは領域導分のことである」と定義することが多いです。このほうが手っ取り早く効率的です。が、唐突過ぎて困惑する人もいるでしょう。僕は「はぁーっ??」と思いました。領域導分は、接ベクトル場の直感と(当初は)かけ離れていますから。

そんな事情があるので、だいぶ丁寧に「領域導分を接ベクトル場とみなしてもいい」事情を説明したのでした。

前節で説明した「領域導分と接ベクトル場のあいだの対応」を使って、領域導分と接ベクトル場を同一視してしまいます。つまりは、「接ベクトル場とは領域導分のことである」と定義するのと同じことです。

なぜこのような同一視をするかと言うと、接ベクトル場の直感的イメージよりは、領域導分のほうがはるかに扱いやすいからです。

このような定義は、概念が“高階化”してますが、それにより“代数化”されています。代数的(代数化された)定義は、計算に向いており、等式的変形で命題が示せる場合が多くなります。これは、扱いやすさにつながります。

言いたいことは言ったので、「微分ライプニッツ法則に支配されている」シリーズ(結果的に3回)はオシマイです。

*1:アンダーラインを付けるのは、underlying set だから、underlying ≒ underlining というダジャレです。

*2:元画像: https://reference.wolfram.com/language/howto/PlotAVectorField.html.ja Wolfram言語&システムのマニュアルから。

*3:この記事内では、Rn@a は使いませんでした。が、いつか使うかも知れないので定義を残しておきます。

*4:Ξは、Uごとに決まるので、UΞ:RgnDer(U)→TVF(U) と書くべきでしょうが、開集合Uによるインデックスは省略します。