U⊆Rn を開集合として、X:C∞(U)→C∞(U) が、ライプニッツ法則を満たすR-線形写像のとき、Xは通常の偏微分作用素 の関数係数線形結合で書けます。このことを示すことにしましょう。
また、ライプニッツ法則を満たすR線形写像Xと、接ベクトル場の関係についても述べます。これにて、「微分はライプニッツ法則に支配されている」というお話は完結です。
内容:
シリーズ目次:
寄り道しながら
「微分はライプニッツ法則に支配されている」というタイトルの一連の記事で僕が言いたいことは、ライプニッツ法則という代数法則で定義される作用素と、解析(微積分)的に定義される微分作用素が実は同じものだよ、ってことです。でも、そのことを述べる最短経路をとっているわけではありません。
「微分はライプニッツ法則に支配されている」にて:
関数ジャームの空間を定義します。もっとも、関数ジャームの空間を作るのが面倒なら、代わりに、適当な開集合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, などと書きます。 は、変数名が入るのが好ましくないので(「微分計算、ラムダ計算、型推論」参照)、僕はあまり使いません。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-∞(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での導分だとは
[導分その2] Xが、C∞(U)からC∞(U)への導分だとは
導分その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)→R がR-線形のとき、Fを汎関数〈functional〉という。
「作用素」に「線形」を付けなくとも線形性を仮定したので、同様に「汎関数」だけで線形性を仮定します(線形は織り込み済みとする)。
a∈U を決めて F(f) := f(a) は汎関数になります。a, b∈C∞ として F(f) := f(a) + f(b) も汎関数です。X⊆U をコンパクト領域として、F(f) := という積分も汎関数です。
K:C∞(U)→C∞ が作用素で、F:C∞(U)→R が汎関数のとき、G = FK が汎関数であることは定義から明らかです。例えば、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) はなめらかではないかも知れません。作用素 がなめらかかどうかは、次の命題から判断できます。
- 関数 達がすべてなめらか ⇔ 作用素 K = がなめらか
この(成立する)命題を、「なめらかさ補題〈smoothness lemma〉」と(ローカルに)呼ぶことにします。
なめらかさ補題を示しましょう。⇒方向は明らかなので、逆方向を示します。まず、第i射影関数 pi:Rn→R を、pi := λx∈Rn.(xi) と定義します。'λ'はラムダ記法のラムダです。微分幾何の習慣に従い添字は上付きです。pi を適当な開集合に制限した関数も同じ記号 pi と書きます。
次の事実はよく知られています。
ここで、 はクロネッカーのデルタです。変数名を使って書けば:
これを使って、 を計算してみます。
関数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 が存在し、 と書ける。
X:C∞(U)→C∞(U) が領域導分のとき、汎関数 X|a:C∞(U)→R が点導分になることはすぐにわかります。よって、点導分補題から、
と書けます。Uのすべての点aでこの表示を考えると、実数達 ξi, ..., ξn はaの関数となるので、次のように書けます。
これは、
を意味します。念のために、f∈C∞(U) にXを作用させて確認してみます。('//'は、等式変形に対するコメントです。)
これが、任意の a∈U に対して成立するので、
さらにこれが、任意の f∈C∞(U) に対して成立するので、
これで得られた関数達 ξi がなめらかかどうかは、ただちには分かりませんが、領域導分Xは定義によりなめらかだったので、なめらかさ補題により ξi 達もなめらかです。
以上により、領域導分Xは という一意的表示を持つことが分かりました。一点だけではなく領域(開集合全体)においても、ライプニッツ法則を満たす線形作用素は、我々が知っている「あの微分」(後述の方向微分)に限るのです。別な言い方をすると、代数的に定義された導分は、解析的に定義された微分に一致します。
接ベクトル場
「接ベクトル場」というと、心に描くイメージは次のようなものでしょう。
ユークリッド空間Rnの点 a = (a1, ..., an) にくっついているベクトル v(a) の成分表示を、
とします。点の座標を a = (a1, ..., an)、接ベクトル場の成分表示を (v1(a), ..., vn(a)) と書いています。aが動く範囲を U⊆Rn とすると、接ベクトル場は v:U→Rn という写像で表現できます。これを接ベクトル場の仮の定義として採用します。つまり:
さてここで、異なる点の接ベクトルは異なるとして、点aにおける接ベクトルは (a, ξ) または ξ@a と書くことにします。すると、接ベクトルの全体は U×Rn = {(a, ξ) | a∈U, ξ∈Rn} となります。
ベクトル場は、点aに、その点における接ベクトルを対応させます。よって、次のような写像になります。
- w:U→U×Rn
- πw = idU
ここで、π:U×Rn→U は、π(a, ξ) = π(ξ@a) = a と定義される射影です。wを、w(a) = (f(a), v(a)) と分解してみると、上記二番目の条件から、f(a) = a となり、w(a) = (a, v(a)) と書けます。これは、wはvだけで決まってしまうことを意味します。しかし、「異なる点の接ベクトルは異なる」という発想は、接ベクトル場(仮)とは違います。次の定義をします。
接ベクトル場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をちゃんと定義した上で、互いに逆であること(↓)を示しましょう。
- For X∈RgnDer(U),
let v = ΞX
then Dv = X - For v∈TVF(U),
let X = Dv
then ΞX = v
まず、Ξの定義; X∈RgnDer(U) とすると、領域導分定理により、なめらかな関数達 ξi∈C∞(U) があって、 と書けるのでした。このξi達を使って、
- v = ΞX = λa∈U.((ξ1(a), ..., ξn(a))@a)
と定義します。簡潔に書くなら v(a) = ξ(a)@a です。X ξ v という対応が Ξ:C∞(U)→TVF(U) です。
次に、Dの定義; v∈TVF(U) として、乱用記法により v(a) = v(a)@a と書きます。v(a)を成分表示すると、v(a) = (v1(a), ..., vn(a)) 、この関数達 vi を使って、
と定義します。v Dv が D:TVF(U)→RgnDer(U) です。Dvは、接ベクトル場vによる方向微分〈directional {derivative | differential}〉といいます。
一点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によるインデックスは省略します。