ネルソンが発案した(と思われる)テンソル記法は、あまり普及しませんでしたが、アイディアは面白いし、僕は使いたいので再度紹介します。「再度」と言っているのは、次の記事がネルソンのテンソル記法/テンソル計算に基づいているからです。
今回は、余計な説明は無しで、ネルソン流の のような書き方の意味だけをストレートに述べます。
内容:
ネルソン記法
だいぶ昔、ネルソン(Edward Nelson)の "Tensor Analysis" (1967) という本に触れたことがあります。
- テンソル:定義とか周辺の話とかナニやら (2007年)
"Tensor Analysis" のなかでネルソンは、独自のテンソル記法を使っていました。ネルソン以外で、ネルソン記法を使っている人を知りません。が、この記法は便利だし、テンソルに対する理解を深める役にも立つでしょう。
テンソル に対して、その成分を取り出すには上下に添字〈インデックス〉を付けて、 のようにします。ネルソン記法では、i, j ,k を整数値ではなくてベクトルだと解釈します。「えっ、なにそれ?」と思うでしょうが、合理的で使いやすい記法を構成できます。
複線形形式の空間
V1, ..., Vn, W をR上のベクトル空間として、n項の複線形写像の全体を n-Lin((V1, ..., Vn), W) と書くことにします。n = 0, 1, 2 に関しては次のように約束します。
- 0-Lin((), W) = Lin(R, W) = {f:R→W | fは線形写像} W
- 1-Lin((V), W) = Lin(V, W) = {f:V→W | fは線形写像}
- 2-Lin((V1, V2), W) = {f:V1×V2→W | fは双線形写像}
V1, ..., Vn, W1, ..., Wm をベクトル空間として、N(V1, ..., Vn/ W1, ..., Wm) を次のように定義します。
- N(V1, ..., Vn/ W1, ..., Wm) := (n + m)-Lin((V1*, ..., Vn*, W1, ..., Wm), R)
ここで、(-)* はベクトル空間の双対空間です。
値をRにとる複線形写像を複線形形式〈multilinear {form | functional}〉と言うので、N(V1, ..., Vn/ W1, ..., Wm) は複線形形式の空間です。ただし、前半に列挙されている V1, ..., Vn については双対を取ります。
テンソルとNテンソル
N(V1, ..., Vn/ W1, ..., Wm) は、V1 ... VnW1* ... Wm* と同型になります。それは、次のような同型の列があるからです。
上記によって定義される線形同型写像を、演算子記号 (-)# で表すことにします。
V1 ... VnW1* ... Wm* は通常の意味のテンソルの空間です。その要素をテンソルと呼びましょう。一方、N(V1, ..., Vn/ W1, ..., Wm) はNテンソル空間〈N-tensor space〉と呼び、その要素をNテンソル〈N-tensor〉と呼ぶことにします。'N'はネルソンからです。
インデックス集合
ここから先、ベクトル空間はすべてR上に有限次元とします。有限次元なVに対しては、V V** ですが、標準的に同型なので、V = V** として扱います。
ベクトル空間Vのすべての基底からなる集合を Basis(V) とします。基底はVの部分集合ですから、Basis(V)⊆Pow(V) です。Pow(V) は(集合としての)Vのベキ集合です。V ≠ 0 なら Basis(V) は無限集合ですが、Basis(V)の要素である基底は有限集合です。
Vに対して、Basis(V*) の要素をひとつ選んで固定します。選んで固定した基底を Ind(V) と書き、Vのインデックス集合〈indexing set〉と呼びます。幾つかの注意事項を:
- インデックス集合の要素は整数ではなくて、ベクトルです。
- Ind(V) は、Vの基底ではなくて、双対空間V*の基底です。
- Vに対してInd(V)が自動的に定まるのではなくて、選んで固定したから決まっている状況です。
- すべてのベクトル空間に Ind(V) が同時に定まるわけではなくて、今話題にしている有限個のベクトル空間に対して Ind(V) を選ぶだけです。
- Ind(V*) は、V** = V の基底です。
最初に準備する有限個のベクトル空間を基本ベクトル空間〈basic vector spaces〉と呼ぶことにします。基本ベクトル空間Vに対しては、Ind(V) を任意に選んで固定します。基本ベクトル空間から双対空間とテンソル積で構成されるベクトル空間に対しては、次のルールで Ind(V) を決めていきます。
- Ind(V*) は、Ind(V) の双対基底とする。
- Ind(VW) は、Ind(V)×Ind(W) とする。
Ind(V*) は Basis(V**) の要素なので、V** = V より、Ind(V*)∈Basis(V) となります。Ind(V)⊆V*, Ind(W)⊆W* なので、Ind(V)×Ind(W)⊆V*×W* 、標準的な双線形写像 V*×W*→V*W* を適用すれば、Ind(V)×Ind(W)⊆V*W* とみなせて、Ind(V)×Ind(W)∈Basis(V*W*)。さらに、V*W* (VW)* も経由して、Ind(V)×Ind(W)∈Basis((VW)*) と考えます。
以上の手順から、次が言えます。
- Ind(V) が決まっていれば、Ind(V*) は一意に決まる。
- Ind(V) と Ind(W) が決まっていれば、Ind(VW) は一意に決まる。
インデックスによる成分表示
Nテンソル ξ∈N(V1, ..., Vn/ W1, ..., Wm) は複線形形式なので、(n + m)個の引数〈argument〉を持ちます。u1∈V1*, ..., un∈V1*, w1∈W1, ..., wm∈Wm に対して、
- ξ(u1, ..., un, w1, ..., wm) ∈R
第n引数と第(n+1)引数のあいだの区切りはスラッシュを使って書くことにします。
- ξ(u1, ..., un/ w1, ..., wm) ∈R
引数に現れる u1, ..., un/ w1, ..., wm は任意のベクトルですが、特に次の条件を満たすように取れます。
- u1∈Ind(V1), ..., un∈Ind(Vn)
- w1∈Ind(W1), ..., wm∈Ind(Wm)
以上の状況で、テンソル x∈V1 ... VnW1* ... Wm* に対して、インデックスによる成分表示を定義できます。
特別なケースとして、x∈VVW* ならば、
ここで、i, j, k は整数値ではなくて、i, j∈Ind(V), k∈Ind(W*) です。つまり、i, j∈V*, k∈W で、i, j はV* の(選ばれた)基底に入り、kはWの基底に入ります。