微分幾何では、点の座標やベクトルの成分表示において、上下の添字〈インデックス〉を使い分けます。これはもの凄く便利です。しかし、添字が整数範囲を動くとしていることで、余分な煩雑さが発生しています。整数範囲ではなくて、ベクトル空間の基底をそのままダイレクトに添字集合〈インデックスセット〉に使う方法を紹介します。
双対ベクトル空間に関しては、「双対ベクトル空間、これくらい知ってればイインジャナイ」と「双対ベクトル空間、もう少し知っておいたほうがイイカモ」へのリンクが含まれます。必要があればリンクをたどって参照してださい。
[追記]自分で読み返して、分かりにくいと思った箇所があるので、補足追加の記事準備中、おそらく月曜の夜までには。この記事への直接修正はたぶんしません(大きな書き換えはしない方針なので)。[/追記][さらに追記]「上付き・下付き添字をマジに考えたら頭痛がした」に補足説明を書きました。[/さらに追記]
内容:
補足記事:
ナンバリングフリー方式
有限次元ベクトル空間Xの基底を固定すると、Xの要素をユークリッド空間Rnの要素(数ベクトル)で表現可能となります。ユークリッド空間の要素は、実数の添字族 (ξi | i = 1, ..., n) なので、「基底を使う」ことは「添字〈インデックス〉を使う」ことだとも言えます。
モダンな線形代数では、基底を使わない定義や記述を優先します。例えば、テンソル積空間の定義や構成に基底を使わない方法を採用する、とかです。「基底を使わない」ことは「添字〈インデックス〉を使わない」ことだとも言えるので、基底を使わないやり方をインデックスフリー方式〈index-free style〉と呼ぶことがあります。
多くの場合、添字〈インデックス〉は整数範囲を動くとしています。しかし、「基底を使う」ことと「整数インデックスを使う」ことが直結はしません。整数インデックスを使うには、基底を固定するだけでなく、基底(ベクトル空間の有限部分集合)に番号付け〈ナンバリング〉をしています。このナンバリングって必要でしょうか? 僕は不要だと思います。
ここでは、ナンバリングをやめます。基底を使うのでインデックスフリーではありませんが、ナンバリングはしないのでナンバリングフリー方式〈numbering-free style〉です。添字集合〈インデックスセット〉には、基底そのものを使います。ナンバリングという余計な操作を挟まないで、直截的に基底を使います。
自由ベクトル空間と基底
A, Bなどは有限集合とします。Map(A, S) を、集合Aから集合Sへの写像の全体(からなる集合)とします。Map(A, S)を、SAという指数の形でも書くとします。RAは、有限集合Aから実数への写像の全体です。RAにベクトル空間の構造を入れて、有限集合Aから生成された(R上の)自由ベクトル空間〈free vector space〉といいます*1。
Xはベクトル空間とします -- ベクトル空間のスカラー体〈係数体 | 基礎体〉はRに固定します。任意の有限集合Aに対して*2、写像 f:A→X があると、fは自由ベクトル空間RAからXへの線形写像に拡張できます。この線形拡張を f~:RA→X と書くことにします。特に、A⊆X のとき、包含写像 inclA,X:A→X に対して線形拡張 (inclA,X)~:RA→X が定義できます。次の事実がとても重用です。
基底の条件は二つに分けて考えるのが普通ですが:
(inclA,X)~は長たらしいので、A→と略記しましょう。基底Aに対する全単射線形写像 A→:RA→X を、Aに伴うフレーム〈associated frame〉と呼びます。フレームA→は全単射なので可逆です。A→の逆写像(A→)-1を、Aに伴う逆フレーム〈associated inverse frame〉または座標〈associated coordinate〉と呼びます。(A→)-1はA←と略記します。矢印の向きが暗示するように、A→とA←の向きは逆です。
- A→:RA→X 線形同型
- A←:X→RA 線形同型
- A→;A← = A←A→ = idRA
- A←;A→ = A→A← = idX
基底A、フレームA→、逆フレーム〈座標〉A←の三者を混同するのはマズイですが、非常に強く結びついてるので、いつも一緒のトリオと捉えましょう。
ベクトルの成分表示
Xは(有限次元の)ベクトル空間、有限集合Aはその基底とします。任意のベクトル x∈X は、Aの要素の線形結合〈一次結合〉で表現できます。それを次のように表します。
ここで、xaは線形結合におけるaの係数で、xに対して一意的に定まる実数です。累乗ではありません! x|→xa という一意対応は、X→R という写像になります。一意に決まる xa をxのa-成分〈a-componen〉と呼びます。
a-成分を別な形で書いてみます。まず、自由ベクトル空間の射影 πa:RA→R を次のように定義します。
- πa(ξ) := ξ(a)
RA = Map(A, R) だったことを思い出してください。πaは、写像ξに引数aを渡す操作です。
Aの逆フレーム〈座標〉と射影を使うと、xのa-成分は次のように書けます。
- xa = πa(A←(x))
同じことを次のようにも書けます。
- (-)a = A←;πa = πaA←
ハイフンは無名のラムダ変数で、
- (-)a = λx∈X.xa = λx∈X.πa(A←(x))
x∈X に対するA←(x)は、RAの要素ですが、次のように書けます。
- A←(x) = (xa|a∈A)
インデックスaは、整数範囲ではなくて、Xの基底Aの上を走ります。a∈A という了解のもとで、(xa|a∈A)を(xa)とも略記します。フレームA→と逆フレーム〈座標〉A←が互いに逆であることは次のように書けます。
- A→(A←(x)) = A→((xa|a∈A)) = A→((xa)) = Σxaa = x
- A←(A→(ξ)) = A←(Σξ(a)a) = (ξ(a)|a∈A) = (ξ(a)) = ξ
総和の記法 Σxaa や Σξ(a)a において、a∈A に渡って和をとるのは明らかなので、総和範囲Aを省略しました。'Σ'も省略するとアインシュタインの規約になります。ここでは、'Σ'は残すことにします。
ロネッカーのデルタ
我々は、添字集合として整数範囲ではなくて、ベクトル空間の有限部分集合を使います。クロネッカーのデルタも、整数引数とは限らず、任意の集合に対して拡張します。Sが任意の集合として、S上のクロネッカー・デルタは、δS:S×S→R という関数で、次のように定義されます。
- δS(s, t) := if (s = t) 1 else 0
集合を表す添字のSは、ほとんどの場合省略します。δ(s, t) を次のように書いてもいいとします。
- δs(t)
- δt(s)
- δst
δ(s, t) = δ(t, s) であることを考慮すると、次の書き方も許されます。
- δt(s)
- δs(t)
- δts
結局、2つの引数を、括弧内の第一位置、第二位置、下付き添字、上付き添字のどこに配置してもいいことになります。
クロネッカーのデルタは、様々な定義や記述に使われます。ξ:S→R に対して、次が成立します。
総和は、「二回出現した変数に渡って足す」と約束しておけば、次のように簡略に書いてもかまいません。
- Σξ(s)δ(s, t) = ξ(t)
双対基底
Xを(有限次元の)ベクトル空間、Aをその基底とします。δをA上のクロネッカーのデルタ δ:A×A→R として、b∈A に対して、δb:A→R を次のように定義します。
- δb = δb(-) := λa∈A.δ(a,b)
もっと具体的に書けば:
- δb(a) = if (a = b) 1 else 0
AはXの基底だったので、δb:A→R を線形に拡張して (δb)~:X→R が得られます。(δb)~ はX上の線形形式なので、標準双対空間 X* = Lin(X, R) の要素です。{(δb)~∈X* | b∈A} はX*の基底になります。これは、Aの双対基底です。
X*の基底である{(δb)~∈X* | b∈A}は、Xの基底Aから決まるので、A# = {(δb)=∈X* | b∈A} と置きます。A⊆X と A#⊆X* は、b←→(δb)~ という対応で1:1に対応します。この対応を線形に拡張すると、X←→X* という同型ができます。
a∈A に対してa-成分をとる関数を (-)a と書きます。ハイフンは無名のラムダ変数で:
- (-)a = λx∈X.xa = λx∈X.πa(A←(x))
(-)a:X→R なので、(-)a∈X* です。実は、
- (δb)~ = (-)b
これは、任意の x∈X に対して、次を意味します。
- (δb)~(x) = (-)b(x)
基底 A⊆A での値だけ確認すればいいので、a∈A に対して次の等式でも十分です。
- (δb)~(a) = (-)b(a)
左辺、右辺を計算すれば:
(δb)~(a) = δb(a) = δ(a, b) (-)b(a) = ab = (基底Aで a を展開したときの b に対する係数) = δ(a, b)
これから、A# = {(-)b∈X* | b∈A} とも書けて、a←→(-)a により A←→A# の1:1対応が得られます。
コベクトルの成分表示
ベクトル空間Xの標準双対空間X*の要素をコベクトル〈covector | 余ベクトル〉とも呼びます。「コベクトル」は、「Xの標準双対空間の要素」の短縮形で、それ以上の意味はありません*3。
AがXの基底のとき、A# = {(-)b∈X* | b∈A} はX*の基底になります。A#が基底なので、それに伴うフレームと逆フレーム〈座標〉があります。
- (A#)→:RA#→X*
- (A#)←:X*→RA#
w∈A# に対するw-成分も次のように定義できます。
- vw := (πw(A#)←)(x)
任意の v∈X* は次の表示を持ちます。
w∈A# は、適当な a∈A に対して w = (-)a と書けるので、
あるいは、
見た目が奇妙ですが、変なことは書いてません。v(-)a を va と書くことにすれば:
vaは、v(-)a だったので、
- (-)a = λv∈X*.v(-)a
として、(-)aを定義できます。(-)aはX*からRへの写像となるので、X** = Lin(X*, R) の要素になります。次が成立します。
- (-)a = a^ : X*→R
a^は、a∈X に対するゲルファント変換で、
- a^(v) := v(a)
として定義されます。
(-)a = a^ を示すには、任意の v∈X* に対して、
- ((-)a)(v) = a^(v)
が成立すればいいのですが、(-)b∈A# に対して
- ((-)a)((-)b) = a^((-)b)
が示せれば十分です。右辺と左辺を計算してみます。
((-)a)((-)b) = ((-)b)a = ((-)b)(-)a = (基底A#で (-)b を展開したときの (-)a に対する係数) = δ(a, b) a^((-)b) = (-)b(a) = ab = (基底Aで b を展開したときの a に対する係数) = δ(a, b)
結局、コベクトルvの成分は、次のように与えられます。
- va = v(-)a = a^(v) = v(a)
(A#)←(v) は、定義によれば (v(-)a | (-)a∈A#) ですが、(va | a∈A) さらには (v(a) | a∈A) と書いていいわけです。
ブラケット記法
[追記]ディラックのブラケット記法と、標準ペアリングの<-|->を一緒に使うのは(読みにくくなるので)バッドアイディアでした。別々に使うべきでしょう。実際に運用するには向いてないので、参考程度に眺めてください。[/追記]
ディラックのブラケット記法では、X*に属するコベクトルを <…|、Xに属するベクトルを |…> と記します*4。'…'のところにはラベルが入ります。
Xの基底Aをラベル集合に使って、ブラベクトルとケットベクトルを次のように定義します。
- <a| := (-)a = (a-成分をとる関数)
- |a> := a (aそのもの)
x∈X, v∈X* は次のように展開されます。
ディラックのもともとの記法のように、すべてのベクトル/コベクトルをブラケットで表すわけではなくて、基底/双対基底に属するベクトル/コベクトルだけにブラケット記法を使います。
標準スカラー積〈標準ペアリング〉も <…|…> を使うことにして、重複した山形括弧は省略する規則を設けます。つまり:
- <v|(|a>)> → <v|a>
- <(<b|)|x> → <b|x>
- <(<b|)|(|a>)> → <b|a> = δ(b, a)
a∈A がペアリングの左に出現したら <a| = (-)a の意味です*5。この規則を適用しながら、<y|x> を計算してみると:
<y|x> = < Σyb<b| | Σxa|a> > = Σybxa<b|a> = Σybxaδ(b, a) = Σyaxa
成分表示 (ya)∈RA# と (xa)∈RA の単純積和になりました。
おわりに
具体的な計算例を出してないので、ナンバリングフリー方式/ダイレクトインデックス記法のありがたみはあまり伝わらなかったかもしれません。基底を添字集合〈インデックスセット〉に使うと、添字集合とベクトル空間が密接に繋がった状態を保てます。ベクトル空間に対する直和、双対、テンソル積などの操作に対して、添字集合も対応する操作を受けます。ベクトル空間の一部である基底は、ベクトル空間とは無関係な整数範囲に比べてより自然な添字集合を提供すると言えます。
補足記事:
*1:自由ベクトル空間は、生成系の形式的線形結合の全体として定義されることが多いかも知れません。具体的な作り方はどうでもいいのです。自由ベクトル空間かどうかは、できあがったベクトル空間の性質と役割により決まります。なお、自由ベクトル空間に同型なベクトル空間も自由ベクトル空間と呼んでしまうと、すべてのベクトル空間は自由ベクトル空間です。このへんの概念を整理するには、圏論の随伴関手対が必要です。
*2:有限集合である必要はないのですが、この記事では有限次元ベクトル空間しか考えないので、無限集合を除外しました。
*3:圏論をベースにした線形代数では、「…の要素」という概念がありません。したがって、「コベクトル=Xの標準双対空間の要素」の右辺が無意味となり、コベクトルの意味も不明になります。純粋に圏論的な設定では、「コベクトル」の意味を再定義しなくてはなりません。これはとても重要な問題なので、いずれ述べるかも知れません。
*4:ブラケット記法は、標準双対空間だけではなくて、一般の双対ペアに対しても使えます。
*5:分かりにくいので、もっといい記法・規則を考えたほうがいいかも知れません。