コンテンツにスキップ

Appendix B テンソル積・成分・縮約記法のまとめ

前回までのあらすじ:

Appendix A では、3 次元ユークリッド空間でのベクトル解析——ベクトル積、微分演算子(grad, div, rot, ラプラシアン)、積分定理(Gauss の定理、Stokes の定理)——を証明付きで整理した。本編のテンソル計算の土台となる道具を「辞書」として使えるようにした。

この章のゴール

  • テンソル積 \(\otimes\) の定義と計算法則(分配法則・非可換性)を理解し、反変テンソル空間 \(T^r(V)\) の構造を把握する
  • さらに、テンソルを「多重線形写像」として捉える座標非依存な視点を獲得し、共変テンソル(計量テンソルなど)との関係も理解する。Einstein の縮約記法を自在に使いこなせるようになること
  • これらは本編で登場する計量テンソル・Riemann テンソルなど多添字量を扱うための必須の道具立てである

B.1 テンソル積はなぜ必要か

🟡 リナ: これまでに、ベクトルと 1-形式を学んだわね。ベクトルは「1 個の上付き添字を持つ量」、1-形式は「1 個の下付き添字を持つ量」だった。でも Einstein 方程式

\[G_{\mu\nu} = 8\pi G\, T_{\mu\nu}\]

には、下付き添字が 2 個ある量が出てくる。Riemann テンソル \(R^\rho{}_{\sigma\mu\nu}\) に至っては添字が 4 個もある。

🔵 カイ: 添字が増えるってことは、ベクトルだけじゃ足りないんですね。

🟡 リナ: そう。ベクトルは「1 階」のテンソル——添字が 1 個の量。添字が 2 個以上ある量を体系的に扱うには、ベクトル空間をもとにしてより大きな空間を作る操作が必要になる。それがテンソル積(tensor product)\(\otimes\) なの。つまり、テンソル積は「添字を増やす」ための数学的な道具よ。今日はまず、テンソル積の計算法則をしっかり身につけてもらうわ。

⚪ メイ: なるほど、ベクトルだけでは添字 1 個しか扱えないから、もっと添字の多い量を作るための操作が必要なのね。


B.2 テンソル積空間の構成

🟡 リナ: 2 次元の線形空間 \(V\) を考えて、基底を \(e_1, e_2\) とするわ。ここで \(V\)\(V\) 自身のテンソル積 \(V \otimes V\) を作りたい。やり方は単純よ。\(e_1, e_2\) を 2 個ずつ組み合わせて、

\[e_1 \otimes e_1, \quad e_1 \otimes e_2, \quad e_2 \otimes e_1, \quad e_2 \otimes e_2\]

という 4 つの記号を作る。この 4 つを基底として、実数を係数に持つ線形空間を作ったものが \(V \otimes V\) なの。

🔵 カイ: 4 つの基底だから、4 次元の線形空間ですか?

🟡 リナ: そう。\(V\) が 2 次元なら \(V \otimes V\)\(2 \times 2 = 4\) 次元。\(V\)\(n\) 次元なら \(V \otimes V\)\(n^2\) 次元になる。

✅ 理解度チェック: \(n\) 次元ベクトル空間 \(V\) のテンソル積空間 \(V \otimes V\) の次元はいくつでしょうか? その基底はどのような形をしているでしょうか?

答え

\(V \otimes V\) の次元は \(n^2\) である。基底は \(e_i \otimes e_j\)\(i, j = 1, \ldots, n\))の形をした \(n^2\) 個の元からなる。これらは \(V\) の基底ベクトルを 2 個ずつ組み合わせて \(\otimes\) でつないだものである。

⚪ メイ: \(e_1 \otimes e_2\) というのは、具体的にはどんなオブジェクトなの?

🟡 リナ: 正直に言うと、正体は気にしなくていい。「\(e_1\)\(e_2\) を順番に並べてくっつけたもの」くらいの理解で十分。大事なのは正体ではなく、次に説明する計算法則の方なの。


B.3 テンソル積の計算法則

🟡 リナ: テンソル積 \(\otimes\) には、次の 3 つの法則が成り立つと定めるわ。実数 \(k\) とベクトル \(S, T, U\) に対して:

\[k(S \otimes T) = (kS) \otimes T = S \otimes (kT) \tag{B.1}\]
\[(S + T) \otimes U = S \otimes U + T \otimes U \tag{B.2}\]
\[S \otimes (T + U) = S \otimes T + S \otimes U \tag{B.3}\]

🔵 カイ: 1 番目は「スカラーはどこにかけても同じ」、2 番目と 3 番目は分配法則ですね。中学の展開公式と同じだ。

🟡 リナ: まさにそう。具体例をやってみましょう。\(S = 2e_1 + 3e_2\)\(T = -2e_1 + e_2\) のとき、\(S \otimes T\) を計算して。

🔵 カイ: えっと、\((a + b)(c + d)\) みたいに展開すればいいんですよね? \(2e_1 \otimes (-2e_1)\)\(2e_1 \otimes e_2\) と……4 項出てくる?

🟡 リナ: そう、その調子。4 項全部書き出してみて。

🔵 カイ: じゃあ……

\[S \otimes T = (2e_1 + 3e_2) \otimes (-2e_1 + e_2)\]
\[= 2 \cdot (-2)\,e_1 \otimes e_1 + 2 \cdot 1\,e_1 \otimes e_2 + 3 \cdot (-2)\,e_2 \otimes e_1 + 3 \cdot 1\,e_2 \otimes e_2\]
\[= -4\,e_1 \otimes e_1 + 2\,e_1 \otimes e_2 - 6\,e_2 \otimes e_1 + 3\,e_2 \otimes e_2\]

こうですか?

🟡 リナ: 完璧。その要領よ。

⚪ メイ: \((a + b)(c + d) = ac + ad + bc + bd\) と全く同じ構造ね。展開の手順は普通の掛け算と同じだけど……

🔵 カイ: あ、でもこれ、\(e_1 \otimes e_2\)\(e_2 \otimes e_1\)別物なんですよね? 普通の数の掛け算みたいに \(ab = ba\) とはならない?

🟡 リナ: いい質問。その通り、テンソル積は一般に交換法則が成り立たない\(e_1 \otimes e_2 \neq e_2 \otimes e_1\) よ。「順番が意味を持つ」のがテンソル積の重要な特徴なの。だから展開後に「同類項」をまとめるときも、\(e_1 \otimes e_2\)\(e_2 \otimes e_1\) は別物として扱わないといけない。

⚪ メイ: つまり、普通の数の掛け算なら \(ab = ba\) で同類項にできるけど、テンソル積では順番が違えば別の基底だから、混ぜてはいけないのね。

📝 練習問題:


B.4 テンソル積空間の元の足し算とスカラー倍

🟡 リナ: \(V \otimes V\) の元同士の足し算やスカラー倍は、普通のベクトルの場合と全く同じルールよ。基底が \(e_i \otimes e_j\) という見慣れない形をしているだけで、やることは変わらない。例えばこれを計算してみて。

\[(-3\,e_1 \otimes e_1 - 2\,e_2 \otimes e_1) + (2\,e_1 \otimes e_1 - e_2 \otimes e_1) = \;?\]

🔵 カイ: えっと、\(e_1 \otimes e_1\) の係数が \(-3 + 2 = -1\)\(e_2 \otimes e_1\) の係数が \(-2 + (-1) = -3\) だから……

\[= -e_1 \otimes e_1 - 3\,e_2 \otimes e_1\]

こうですか? 同じ基底の係数同士を足すだけで、普通のベクトルの足し算と全く同じ構造ですね。

🟡 リナ: スカラー倍も同じ要領よ。たとえば

\[3\,(2\,e_1 \otimes e_1 - e_2 \otimes e_1) = 6\,e_1 \otimes e_1 - 3\,e_2 \otimes e_1\]

と各係数に 3 をかけるだけ。

⚪ メイ: 足し算もスカラー倍も、同じ基底の係数だけを操作するのね。普通のベクトル空間と全く同じルール。

🔵 カイ: でも、\(e_1 \otimes e_2\)\(e_2 \otimes e_1\) は別の基底だから、これらの係数を足すことはできないんですよね?

🟡 リナ: その通り。順番が違えば別物、というのがテンソル積の大事なポイントよ。ちなみに、これは物理的にも意味がある——たとえば応力テンソルで「\(x\) 方向の面に \(y\) 方向の力」と「\(y\) 方向の面に \(x\) 方向の力」は一般に異なる状況を表すの。

🔵 カイ: 「\(x\) 方向の面」って、\(x\) 軸に垂直な面ってことですか? そこに \(y\) 方向の力がかかる……せん断応力みたいなイメージ?

🟡 リナ: そう、まさにせん断応力よ。面の向きと力の向きの組み合わせが 2 つの添字に対応するの。だから順番が物理的に意味を持つのよ。

📝 練習問題:


B.5 分解できないテンソル

🟡 リナ: ここで一つ注意。\(V \otimes V\) の元がすべて \(S \otimes T\)\(S, T \in V\))の形で書けるわけではないの。

⚪ メイ: えっ、そうなの?

🟡 リナ: 例えば、\(e_1 \otimes e_1 + e_2 \otimes e_2\) を考えてみて。もしこれが \(S \otimes T\) の形で書けるなら、\(S = \alpha e_1 + \beta e_2\)\(T = \gamma e_1 + \delta e_2\) として

\[S \otimes T = \alpha\gamma\,e_1 \otimes e_1 + \alpha\delta\,e_1 \otimes e_2 + \beta\gamma\,e_2 \otimes e_1 + \beta\delta\,e_2 \otimes e_2\]

各基底の係数を比較すると

\[\alpha\gamma = 1, \quad \alpha\delta = 0, \quad \beta\gamma = 0, \quad \beta\delta = 1\]

🔵 カイ: \(\alpha\delta = 0\) だから \(\alpha = 0\)\(\delta = 0\)。でも \(\alpha = 0\) なら \(\alpha\gamma = 0 \neq 1\) で矛盾、\(\delta = 0\) なら \(\beta\delta = 0 \neq 1\) で矛盾……

⚪ メイ: つまり、解が存在しない。\(e_1 \otimes e_1 + e_2 \otimes e_2\)\(S \otimes T\) の形では書けないのね。

🟡 リナ: そう。\(S \otimes T\) の形で書ける元を分解可能テンソル(decomposable tensor)と呼ぶ。テンソル積空間は、分解可能テンソルのも含むから、単なる「ペアの集まり」よりもずっと豊かな構造を持っているの。

✅ 理解度チェック: 「分解可能テンソル」とは何でしょうか? また、\(V \otimes V\) のすべての元が分解可能テンソルであるとは限らないことを、どのように示せるでしょうか?

答え

分解可能テンソルとは、\(S \otimes T\)\(S, T \in V\))の形で書ける \(V \otimes V\) の元のことである。すべての元が分解可能とは限らないことは、例えば \(e_1 \otimes e_1 + e_2 \otimes e_2\) について \(S = \alpha e_1 + \beta e_2\), \(T = \gamma e_1 + \delta e_2\) と仮定し、係数比較から連立方程式が矛盾することを示せばよい。

📝 練習問題:


B.6 成分表示と Einstein の縮約記法

🟡 リナ: ここからが実用上とても大事な話。\(V \otimes V\) の一般の元 \(S\)

\[S = S^{11}\,e_1 \otimes e_1 + S^{12}\,e_1 \otimes e_2 + S^{21}\,e_2 \otimes e_1 + S^{22}\,e_2 \otimes e_2\]

と書くわ。\(S^{ij}\) が成分で、\(e_i \otimes e_j\) が基底。成分には上付き添字、基底には下付き添字を使っていることに注目して。

⚪ メイ: 4 つの基底それぞれに係数がついているから、全部書き出すと長くなるわね。

🟡 リナ: そう。\(\Sigma\) を使えば

\[S = \sum_{i=1}^{2}\sum_{j=1}^{2} S^{ij}\,e_i \otimes e_j\]

とまとめられる。そしてここで Einstein の縮約記法(Einstein summation convention)を使うと、\(\Sigma\) を省略して

\[S = S^{ij}\,e_i \otimes e_j \tag{B.4}\]

と書ける。

🔵 カイ: ルールは「同じ添字が上と下に 1 回ずつ現れたら、その添字について和をとる」でしたよね。第 2 章で習った。

🟡 リナ: その通り。式 (B.4) では \(i\)\(S^{ij}\) の上と \(e_i\) の下に、\(j\)\(S^{ij}\) の上と \(e_j\) の下にそれぞれ 1 回ずつ現れているから、\(i\)\(j\) の両方について和をとるの。

⚪ メイ: 具体的に \(S^{11} = 3, S^{12} = 4, S^{21} = 5, S^{22} = 6\) なら

\[S = 3\,e_1 \otimes e_1 + 4\,e_1 \otimes e_2 + 5\,e_2 \otimes e_1 + 6\,e_2 \otimes e_2\]

ということね。

🟡 リナ: 完璧。テンソルの「主役」は成分 \(S^{ij}\) と数値の対応関係なの。基底を決めてしまえば、テンソルの情報はすべて成分に集約される。


ダミー添字に関する注意

🟡 リナ: 縮約記法で和をとる添字のことをダミー添字(dummy index)と呼ぶわ。ダミー添字は「何という文字を使うか」には意味がない。たとえば

\[S^{ij}\,e_i \otimes e_j = S^{kl}\,e_k \otimes e_l = S^{mn}\,e_m \otimes e_n\]

これらはすべて同じ意味よ。

🔵 カイ: 変数名を変えても、\(\sum\) の中身は同じだから。

🟡 リナ: そう。ただし、1 つの項の中で同じ添字が 3 回以上現れてはいけない。それは規約に反するし、物理的にも意味が不明になる。

🟡 リナ: もう一つ大事な注意。異なる和を表すときには、必ず異なるダミー添字を使う必要があるの。たとえば 2 つのベクトル \(\vec{A} = A^\alpha e_\alpha\)\(\vec{B} = B^\beta e_\beta\) を使った式で、\(\alpha\)\(\beta\) を両方同じ文字にしてしまうと意味が壊れる。

🔵 カイ: 同じ文字にするとどうなるんですか?

🟡 リナ: 具体例を挙げるわね。2 つのベクトルの内積は、ある係数 \(g_{\alpha\beta}\) を使って \(\vec{A} \cdot \vec{B} = A^\alpha B^\beta g_{\alpha\beta}\) と書ける。ここでギリシャ文字 \(\alpha, \beta\) を使っているのは、本編の時空添字(\(0, 1, 2, 3\))を意識した記法よ。\(g_{\alpha\beta}\) は本編(第 6 章)で「計量テンソル」として正式に導入した量ね——内積の計算ルールを成分ごとに指定する係数よ。たとえば普通のユークリッド空間なら \(\alpha = \beta\) のとき 1、それ以外は 0 になる。B.9 節では多重線形写像の視点から捉え直すから、ここでは「こういう書き方ができる」ということだけ確認しておいてね。なお、この後の議論では一般の \(n\) 次元空間を扱うためにラテン文字 \(i, j\) を使って \(g_{ij}\) と書くけど、同じ量の添字の文字を変えただけよ。大事なのは、\(\vec{A}\) の展開に使うダミー添字 \(\alpha\)\(\vec{B}\) の展開に使うダミー添字 \(\beta\)別の文字にしていること。もし両方を同じ \(\alpha\) にしてしまうと \(A^\alpha B^\alpha g_{\alpha\alpha}\) となって \(\alpha\) が 4 回出てしまう。初学者がよくやるミスだから、気をつけてね。

⚪ メイ: なるほど、\(A^\alpha B^\alpha g_{\alpha\alpha}\) だと \(\alpha\) が 4 回出てしまって、さっきの「3 回以上はダメ」に引っかかるわね。

✅ 理解度チェック: Einstein の縮約記法において、ダミー添字を使う際に守るべき 2 つのルールは何でしょうか?

答え

(1) 1 つの項の中で同じ添字が 3 回以上現れてはいけない。(2) 異なる和を表すときには、必ず異なるダミー添字を使わなければならない。これらに違反すると式の意味が不明確になる。

✅ 理解度チェック: Einstein の縮約規則で、同じ添字が上と下に現れたとき何をするでしょうか? その添字を何と呼ぶでしょうか?

答え

その添字について和をとる(\(\sum\) は省略)。和の範囲は文脈による——本章の線形空間では \(1\) から \(n\) まで、相対論の時空添字では \(0\) から \(n-1\) まで。和をとられる添字をダミー添字と呼ぶ。ダミー添字はどの文字を使っても結果は同じ。

📝 練習問題:


B.7 反変テンソル空間 \(T^r(V)\)

🟡 リナ: ここまでの議論を一般化しましょう。\(V\)\(n\) 次元の線形空間、基底を \(e_1, e_2, \ldots, e_n\) とする。

2 階の反変テンソル空間 \(T^2(V)\)

\(V \otimes V\) のことを \(T^2(V)\) と書いて、2 階の反変テンソル空間(second-order contravariant tensor space)と呼ぶ。

  • 基底の数:\(n^2\) 個(\(e_i \otimes e_j\)\(i, j = 1, \ldots, n\)
  • 次元:\(n^2\)
  • 元の表記:\(S = S^{ij}\,e_i \otimes e_j\)

🔵 カイ: 「2 階」は \(\otimes\) で 2 個つないでいるから、「反変」は……?

🟡 リナ: 「反変」の意味は、座標系を変えたときに成分がどう変わるかに関係するの。名前の由来だけ言うと、基底ベクトルの変換と逆向きに成分が変換されるから「反変」(contra-variant=逆に変わる)。たとえば、メートルからセンチメートルに単位を変えると基底ベクトル 1 本の長さは 1m から 1cm に短くなるけど、同じベクトルを表すのに必要な成分の数値は 100 倍に増える——この「逆向き」が反変のイメージよ。\(T^2(V)\) は上付き添字が 2 個あるから、その逆向きの変換が 2 回かかる。本編の 第 4 章 で詳しく扱ったわね。ここでは「上付き添字が 2 個ある量の空間」という理解で十分よ。

3 階以上:\(T^3(V)\), \(T^4(V)\), ...

🟡 リナ: 同じ要領で、\(e_i\) を 3 個つないだもの

\[e_{i_1} \otimes e_{i_2} \otimes e_{i_3}\]

を基底とする空間が \(T^3(V)\)\(V\)\(n\) 次元なら、基底は \(n^3\) 個、空間の次元は \(n^3\) よ。 🔵 カイ: \(n = 2\) なら \(T^3(V)\)\(2^3 = 8\) 次元ですか? じゃあ階数が上がるたびにどんどん次元が増えていく……一般の \(r\) 階だとどうなるんですか?

🟡 リナ: いい質問ね。実際、階数が上がるたびに \(n\) 倍ずつ増えていくの。一般に、\(r\) 階の反変テンソル空間 \(T^r(V)\) の定義をまとめておくわ。

定義 B.1\(T^r(V)\)

\(V\)\(n\) 次元線形空間、\(e_1, \ldots, e_n\)\(V\) の基底とする。\(n^r\) 個の

\[e_{i_1} \otimes e_{i_2} \otimes \cdots \otimes e_{i_r} \quad (i_1, \ldots, i_r = 1, \ldots, n)\]

を基底とする \(n^r\) 次元線形空間を \(r\) 階の反変テンソル空間と呼び、\(T^r(V)\) と表す。\(T^r(V)\) の元 \(S\)

\[S = S^{i_1 i_2 \cdots i_r}\,e_{i_1} \otimes e_{i_2} \otimes \cdots \otimes e_{i_r} \tag{B.5}\]

と表される。

🔵 カイ: ベクトル空間 \(V\) そのものは \(T^1(V)\) ってことですか?

🟡 リナ: そう。\(T^1(V)\) の基底は \(e_1, \ldots, e_n\)\(n\) 個、\(n\) 次元。まさに \(V\) そのものね。


B.8 異なる階数のテンソル同士のテンソル積

🟡 リナ: \(T^2(V)\) の元 \(S\)\(T^1(V) = V\) の元 \(T\) のテンソル積 \(S \otimes T\) を計算すると、\(T^3(V)\) の元が得られるわ。

🟡 リナ: 具体的にやってみましょう。\(S = 3\,e_1 \otimes e_1 + 2\,e_2 \otimes e_1\)\(T = e_1 - e_2\) として、\(S \otimes T\) を計算してみて。

🔵 カイ: えっと、さっきと同じように分配法則で展開すればいいんですよね。\(S\) の各項に \(T\) の各項を \(\otimes\) でつなぐ……

\[S \otimes T = (3\,e_1 \otimes e_1 + 2\,e_2 \otimes e_1) \otimes (e_1 - e_2)\]
\[= 3\,e_1 \otimes e_1 \otimes e_1 - 3\,e_1 \otimes e_1 \otimes e_2 + 2\,e_2 \otimes e_1 \otimes e_1 - 2\,e_2 \otimes e_1 \otimes e_2\]

こうですか? 基底が 3 個つながった形になった。

⚪ メイ: 確かに \(e_i \otimes e_j \otimes e_k\) の形の基底で書けているから、\(T^3(V)\) の元ね。

🟡 リナ: 一般に、\(T^r(V)\) の元と \(T^m(V)\) の元のテンソル積は \(T^{r+m}(V)\) の元になる。階数が足し算されるの。

🔵 カイ: 階数 2 と階数 1 を \(\otimes\) でつなぐと階数 3。……テンソル積で階数が増えるなら、逆に階数を減らす操作もあるんですか?

🟡 リナ: いい質問。それが「縮約」(contraction)と呼ばれる操作よ。詳しい仕組みは本編で扱うけど、イメージだけ言うと、添字を 1 組「潰して」和をとることで階数が下がるの。今は「テンソル積は階数を増やす、縮約は階数を減らす」という対の関係だけ覚えておいて。

🔵 カイ: テンソル積で階数を増やして、縮約で減らす……ちょうど逆の操作がセットになっているんですね。じゃあ、2 階テンソルを縮約したら 0 階——つまりスカラーになるんですか?

🟡 リナ: いい推測ね。ただし少し注意が必要よ。「上付き添字 1 個と下付き添字 1 個を持つテンソル」——たとえば \(S^i{}_j\) のような量を考えてみて。ここでテンソルの「型」の記法を整理しておくわね。\((r, s)\) と書いて、\(r\) が上付き添字の個数、\(s\) が下付き添字の個数を表すの。だから今の \(S^i{}_j\)\((1,1)\) 型——上が 1 個、下が 1 個ね。この記法は B.9 節でも使うから、ここで覚えておいて。

🔵 カイ: \((1,1)\) 型……上が 1 個、下が 1 個で合計 2 階ってことですね。

🟡 リナ: そう。この場合、上と下のペアを潰して \(S^i{}_i\)\(i\) について和をとる)とすると、添字がなくなってスカラーになる。これは行列のトレース(対角成分の和)に相当するの。

🔵 カイ: なるほど、行列のトレースが縮約の具体例なんですね。でも B.7 で扱った \(S^{ij}\) みたいに上付き同士しかない場合はどうなるんですか? 上と上じゃペアが作れない気がするんですけど……

🟡 リナ: いい疑問ね。その通り、\((2,0)\) 型だとそのままではペアが作れない。上付き同士を縮約するには計量テンソルで添字を下げる操作が必要になるけど、それは本編で扱うわ。

⚪ メイ: つまり、\((1,1)\) 型なら上と下のペアがあるからそのまま縮約できるけど、\((2,0)\) 型だとペアが作れないから追加の道具が要るのね。

🔵 カイ: でも \((2,0)\) 型だとペアが作れないなら、どうやって縮約するんですか? 何か別の操作を挟むってことですか?

🟡 リナ: その通り。上付き添字を 1 つ下付きに変換する——つまり計量テンソルで「添字を下げる」操作が必要になるの。本編の 第 4 章 で学んだ \(A_\mu = g_{\mu\nu} A^\nu\) と同じ要領よ。B.9 節で計量テンソルが \((0,2)\) 型テンソルの代表例であることを確認するけど、添字を下げる操作の具体的な手順は本編 第 4 章 に譲るわ。今は「上と下のペアがあれば縮約できる」というルールだけ覚えておいて。

🔵 カイ: なるほど、計量テンソルで上付きを下付きに変換してからペアを作る——ワンクッション挟むんですね。

✅ 理解度チェック: \(T^r(V)\) の元と \(T^m(V)\) の元のテンソル積は、どの空間の元になるでしょうか? この性質を何と呼ぶでしょうか?

答え

\(T^{r+m}(V)\) の元になる。すなわち、テンソル積をとると階数は加法的に増える(階数の加法性)。例えば 2 階テンソルと 1 階テンソルのテンソル積は 3 階テンソルになる。

📝 練習問題:


B.9 テンソルの「多重線形写像」としての見方

🟡 リナ: ここまでは「基底を並べて空間を作る」というアプローチでテンソルを導入したわ。でも、もう一つ重要な見方がある。それは、テンソルを多重線形写像として定義する方法よ。私はこれをスロットマシン描像と呼んでいるの。図 B.1「テンソルのスロットマシン描像」 を見て。

テンソルのスロットマシン描像

図 B.1: テンソルのスロットマシン描像。テンソルを「スロットを持つ機械」として見る。左 — 1-形式(スロット 1 つ)はベクトル 1 個を受け取ってスカラーを返す関数。右 — 2 階テンソル(スロット 2 つ)はベクトル 2 個を受け取ってスカラーを返す関数。「線形」の正確な意味は本文で直後に定義する。

テンソルを「スロットを持つ機械」だと思ってみて。図の左側を見て——スロットが 1 つの箱が描いてあるわね。これが 1-形式で、ベクトルを 1 個差し込むとスカラーが出てくる線形関数。本編(第 4 章)で学んだわね。図の右側はスロットが 2 つある箱——これが 2 階テンソルで、ベクトルを 2 個入れるとスカラーが出てくる。ポイントは、各スロットに入れる引数についてそれぞれ独立に線形だということ——この性質を「多重線形」と呼ぶの。「独立に線形」の正確な意味はすぐ後で式を使って説明するけど、直感的には「片方のスロットの中身を固定したまま、もう片方だけ 2 倍にすれば出力も 2 倍になる」ということよ。スロットの数がテンソルの「階数」に対応するの。

⚪ メイ: なるほど、1-形式がスロット 1 つの機械で、2 階テンソルがスロット 2 つの機械……じゃあ階数が上がるほどスロットが増えていくの?

🟡 リナ: その通り。3 階テンソルならスロットが 3 つ、4 階なら 4 つ——階数=スロットの数よ。この「スロットを持つ機械」を数学的に定義してみましょう。その前に 2 つの言葉を確認しておくわね。まず「引数」(ひきすう)——これは関数に入力する値のこと。\(f(x)\)\(x\) に当たるものよ。次に「線形」——大雑把に言えば「定数倍を外に出せて、足し算をバラせる」性質のこと。ここでの \(f\) は「ベクトルを入力として受け取り、実数(スカラー)を返す関数」よ。式で書くと \(f(\alpha \vec{A}) = \alpha f(\vec{A})\) かつ \(f(\vec{A} + \vec{B}) = f(\vec{A}) + f(\vec{B})\) が成り立つということ。たとえば 2 次元で \(f(\vec{A}) = 2A^1 + 3A^2\)(第 1 成分の 2 倍と第 2 成分の 3 倍の和)という関数を考えると、\(f(5\vec{A}) = 2(5A^1) + 3(5A^2) = 5(2A^1 + 3A^2) = 5f(\vec{A})\) となって、定数倍を外に出せるわね。「各引数について線形」というのは、引数が複数あるとき、他の引数を固定して 1 つだけ動かすと、その 1 つについて今の線形性が成り立つということ。具体的な式はすぐ後で書くわね。

🟡 リナ: この 2 つの言葉を使って定義すると、\(N\) 個のベクトルを引数にとり、実数を返す関数で、各引数について線形なものをテンソルと定義するの。

⚪ メイ: ちなみに見出しの「多重線形写像」って、分解すると「多重(引数が複数)+線形(各引数について線形)+写像」ってことよね。「写像」って「関数」と同じ意味?

🟡 リナ: その通り。「写像」は「入力を受け取って出力を返す対応関係」のこと——「関数」と同じ意味よ。名前が長いけど、中身は今説明した通りね。

🔵 カイ: ちょっと整理させてください。「\(N\) 個のベクトルを入れたら実数が 1 個出てくる装置で、しかも各入力について線形」——これがテンソルの定義ってことですか? でも、さっき B.7 で「テンソル積空間の元」としてテンソルを定義しましたよね。定義が 2 つあるんですか?

🟡 リナ: いい質問。今の定義は B.7 とは別の角度からテンソルを捉えたもの——見た目は違うけど、実は同じ対象を記述しているの。それを B.11 節で正式に示すわ。今は「テンソルには 2 つの顔がある」と思っておいて。そしてこのテンソルの「型」を \((0, N)\) と書くのだけど——

🔵 カイ: \((0, N)\)\(0\)\(N\) って何を表しているんですか?

🟡 リナ: いい質問。B.8 節で導入した \((r, s)\) の記法を思い出して——\(r\) が上付き添字(反変)の個数、\(s\) が下付き添字(共変)の個数だったわね。B.7 で定義した \(T^r(V)\) は上付き添字が \(r\) 個で下付き添字が 0 個だったから \((r, 0)\) 型。今の「ベクトルを食べて実数を返す関数」は下付き添字を持つから \((0, N)\) 型になるの。なぜ「ベクトルを食べる関数」が下付き添字なのかは、すぐ後で説明するわ。たとえば 1-形式はスロット 1 つだから \((0, 1)\) 型、内積のようにスロットが 2 つある関数は \((0, 2)\) 型——スロットの数が \(s\) に対応するの。

⚪ メイ: なるほど、\(s\) がスロットの数を表しているのね。

🟡 リナ: ちなみに、教科書によっては \(\binom{0}{N}\) のような書き方をしているものもあるけど、二項係数と紛らわしいから、この本では \((r, s)\) を使うわ。

🔵 カイ: あれ、さっきまで上付き添字の「反変テンソル」を扱っていたのに、今度は下付き添字の話ですか?

🟡 リナ: いい質問。まず全体像を表で整理してから、「なぜ下付きなのか」を説明するわね。

上付き添字の数 下付き添字の数
\((1, 0)\) 1 0 ベクトル \(A^i\)
\((2, 0)\) 2 0 B.7 の \(S^{ij}\)
\((0, 1)\) 0 1 1-形式 \(f_i\)(本編 第 4 章 で導入)
\((0, 2)\) 0 2 計量テンソル \(g_{ij}\)(本編 第 6 章 で正式に導入済み。ここでは多重線形写像の視点から捉え直す。今は「ベクトル 2 個を受け取って内積を返す係数」程度の理解で OK)

🔵 カイ: 計量テンソル \(g_{ij}\) は本編で学んだけど、ここでは「\((0,2)\) 型テンソルの例」として出てきてるんですよね? 多重線形写像の視点で見るとどうなるのか気になります。

🟡 リナ: いい質問ね。計量テンソルの正式な定義は本編(第 6 章第 7 章)で既にやったわね。ここでは「計量テンソルが \((0,2)\) 型テンソルの代表例である」ということを、多重線形写像の視点から捉え直すのが目的よ。B.6 節で触れた \(g_{\alpha\beta}\)(内積を計算するための係数)を、この直後の議論で「ベクトル 2 個を受け取って内積を返す双線形関数」として見直すわ。一方、今の \((0, N)\) 型テンソルは「下付き添字 \(N\) 個を持つテンソル」——ベクトルを食べて実数を返す関数として定義される。この下付き添字を持つテンソルのことを共変テンソルと呼ぶの。

🔵 カイ: 「共変」って名前はどこから来るんですか?

🟡 リナ: 座標変換したとき成分が基底ベクトルと同じ向きに変換されるから「共変」。「反変」が逆向きだったのと対になっているの。詳しくは本編 第 4 章 で扱うけど、今は「下付き添字を持つ量=共変」と覚えておけば大丈夫よ。

⚪ メイ: でも、なぜ「ベクトルを食べる関数」が下付き添字を持つの?

🟡 リナ: 直感的にはこう考えて。B.6 で学んだ縮約記法では、上付き添字と下付き添字がペアになって和をとるのだったわね。ベクトルの成分は上付き \(A^i\) だから、それと組み合わせて縮約できるためには、関数の成分は下付きでなければならない。本編 第 4 章 で 1-形式 \(f_i\) の成分が下付きだったのを思い出して——あれは「ベクトル \(A^i\) を食べて \(f_i A^i\) というスカラーを返す」ために下付きだったの。2 階テンソルなら \(f_{ij} A^i B^j\) のように、上下がペアになって初めて和がとれる。だから「ベクトルを食べる関数」は自然に下付き添字を持つことになるのよ。

🔵 カイ: なるほど、縮約のルールから必然的に決まるんですね。上付きの成分を持つベクトルを「食べる」ためには、相手が下付きでないとペアが作れない——パズルのピースみたいだ。

🟡 リナ: そう、いい喩えね。上付きと下付きは別の種類のテンソルだけど、テンソル積の計算法則や成分表示の考え方は共通よ。本編では上付き・下付きが混在する一般の \((r, s)\) 型テンソルも扱うけど、ここではまず共変テンソルの例で「多重線形写像」の考え方を掴んでもらうわ。

🔵 カイ: 「各引数について線形」って?

🟡 リナ: 例えば 2 個の引数を持つ関数 \(f(\vec{A}, \vec{B})\) で考えてみましょう。「第一引数について線形」とは、\(\vec{B}\) を固定したまま第一引数だけを動かすと、普通の線形関数のように振る舞うということ。式で書くと:

第一引数について(\(\vec{B}\) を固定): $\(f(\alpha \vec{A} + \beta \vec{C},\; \vec{B}) = \alpha\,f(\vec{A}, \vec{B}) + \beta\,f(\vec{C}, \vec{B})\)$

同様に、\(\vec{A}\) を固定して第二引数だけを動かしても線形:

第二引数について(\(\vec{A}\) を固定): $\(f(\vec{A},\; \alpha \vec{B} + \beta \vec{C}) = \alpha\,f(\vec{A}, \vec{B}) + \beta\,f(\vec{A}, \vec{C})\)$

具体例で確認してみましょう。内積 \(f(\vec{A}, \vec{B}) = \vec{A} \cdot \vec{B}\) で、\(\vec{A} = (1, 0)\)\(\vec{B} = (1, 1)\)\(\vec{C} = (0, 1)\) とするわ。\(\alpha = 2, \beta = 3\) として第二引数の線形性を確認すると、左辺は \(f(\vec{A},\; 2\vec{B} + 3\vec{C}) = (1, 0) \cdot (2, 5) = 2\)。右辺は \(2\,f(\vec{A}, \vec{B}) + 3\,f(\vec{A}, \vec{C}) = 2 \cdot 1 + 3 \cdot 0 = 2\)。確かに一致するわね。

このように、一方の引数を固定したとき、もう一方について線形な関数を双線形(bilinear)と呼ぶ。一般に \(N\) 個すべてについて線形なものを多重線形(multilinear)と呼ぶの。

🔵 カイ: あれ、内積 \(\vec{A} \cdot \vec{B}\) って「ベクトルを 2 個受け取って実数を返す関数」ですよね。ということは、今の定義に当てはまるんじゃ……内積もテンソルの一種になるんですか?

🟡 リナ: いい気づきね。実際に確認してみましょう。高校で習った内積の性質を思い出して——\((\vec{A} + \vec{B}) \cdot \vec{C} = \vec{A} \cdot \vec{C} + \vec{B} \cdot \vec{C}\)\((k\vec{A}) \cdot \vec{B} = k(\vec{A} \cdot \vec{B})\) が成り立つわよね。これはまさに「第一引数について線形」ということ。第二引数についても同様だから、内積は双線形——つまり \((0, 2)\) 型テンソルの条件を満たしているの。

🔵 カイ: おお、高校で習った内積の性質がそのまま「双線形」の条件を満たしているんですね。

🟡 リナ: その通り。次に成分で書くとどうなるか見てみましょう。B.6 のダミー添字の注意で「内積を計算するための係数 \(g_{\alpha\beta}\)」に触れたわね。あれと同じものよ。B.6 では 4 次元時空を意識してギリシャ文字 \(\alpha, \beta\) を使ったけど、今は一般の \(n\) 次元空間の話だからラテン文字 \(i, j\) で書いて \(g_{ij}\) とするわ。記号が変わっただけで中身は同じ——添字の文字は「何次元の話をしているか」を示す目印に過ぎないの。

⚪ メイ: ギリシャ文字は時空 4 次元、ラテン文字は一般の \(n\) 次元——本編と同じ使い分けね。

🟡 リナ: そう。なぜ内積が \(g_{ij} A^i B^j\) と書けるのか——簡単な例で確認してみて。普通の 2 次元ユークリッド空間の内積は \(\vec{A} \cdot \vec{B} = A^1 B^1 + A^2 B^2\) よね。これを \(g_{ij} A^i B^j\) の形に当てはめると、\(g_{11} = 1, g_{22} = 1, g_{12} = g_{21} = 0\) とすれば \(g_{ij} A^i B^j = 1 \cdot A^1 B^1 + 0 \cdot A^1 B^2 + 0 \cdot A^2 B^1 + 1 \cdot A^2 B^2 = A^1 B^1 + A^2 B^2\) となって一致する。

🔵 カイ: なるほど。でも、ユークリッド空間なら \(g_{ij}\) は単位行列で、わざわざ \(g_{ij}\) を持ち出さなくても \(A^1 B^1 + A^2 B^2\) で済みますよね。なんでわざわざ \(g_{ij}\) を使うんですか?

🟡 リナ: いい質問。ユークリッド空間だけを考えるなら確かに不要よ。でも本編で学んだように、Minkowski 時空では \(g_{00} = -1\) で時間成分にマイナスがつくし、曲がった時空では \(g_{ij}\) が場所ごとに変わる。つまり「内積のルールが空間によって違う」状況を統一的に扱うために \(g_{ij}\) が必要なの。今は「ユークリッド空間では単位行列になる特殊ケース」として理解しておいて。

⚪ メイ: つまり \(g_{ij}\) は「内積の計算ルールを成分ごとに指定する係数」ということね。ユークリッド空間なら単位行列の成分と同じだけど、一般の空間ではそうとは限らない。

🟡 リナ: その通り。一般の空間では \(g_{ij}\) が単位行列とは限らないけど、構造は同じよ。さて、さっき「内積は \((0,2)\) 型テンソルの条件を満たしている」と言ったわね。それを成分表示 \(g_{ij} A^i B^j\) の形で実際に確認してみましょう——つまり、この式が本当に各引数について線形になっていることを見るの。\(\vec{A}\) を固定して、第二引数を \(\alpha \vec{B} + \beta \vec{C}\) に変えたとき何が起こるか。示したいのは \(g_{ij} A^i (\alpha B^j + \beta C^j) = \alpha\,g_{ij} A^i B^j + \beta\,g_{ij} A^i C^j\) が成り立つこと——つまり普通の分配法則が使えることよ。

🔵 カイ: 分配法則が使えるのは当たり前じゃないんですか? 普通に展開すればいいだけでは……

🟡 リナ: いい質問。ポイントは、\(g_{ij} A^i\) の部分が \(\vec{B}\)\(\vec{C}\) に依存しない「ただの数値」だということ。\(n = 2\) で具体的に確認してみましょう——\(j\) を固定して \(g_{ij} A^i\) を計算すると、\(j = 1\) のとき \(g_{i1} A^i = g_{11} A^1 + g_{21} A^2\)\(j = 2\) のとき \(g_{i2} A^i = g_{12} A^1 + g_{22} A^2\)——これらは \(\vec{A}\) の成分と \(g_{ij}\) だけで決まる数値で、\(\vec{B}\)\(\vec{C}\) の選び方には一切依存しないわね。たとえばユークリッド空間で \(\vec{A} = (3, 5)\) なら、\(g_{i1} A^i = 1 \cdot 3 + 0 \cdot 5 = 3\)\(g_{i2} A^i = 0 \cdot 3 + 1 \cdot 5 = 5\) という具体的な数値が \(\vec{B}\)\(\vec{C}\) を決める前に確定するわ。

🔵 カイ: 「\(j\) を固定して」ってどういう意味ですか? \(j\) は和をとらないんですか?

🟡 リナ: いい質問。\(g_{ij} A^i\) という式では、\(i\) は上(\(A^i\))と下(\(g_{ij}\) の第 1 添字)にペアで現れているからダミー添字——\(i\) について和をとる。でも \(j\)\(g_{ij}\) の中に 1 回しか現れていないわね。こういう「ペアを組まずに残っている添字」を自由添字(free index)と呼ぶの——本編 第 2 章 で出てきた用語よ。自由添字は和をとらずに「\(j = 1\) のとき」「\(j = 2\) のとき」と場合分けして考えるの。つまり \(g_{ij} A^i\)\(j\) の値ごとに 1 つの数値を返す——\(j = 1\) なら 3、\(j = 2\) なら 5 という具合にね。

⚪ メイ: なるほど、\(g_{ij} A^i\)\(j\) を決めるたびに 1 つの数値になるのね。\(\vec{B}\)\(\vec{C}\) とは無関係に確定している。

🟡 リナ: そう。だから \(g_{ij} A^i (\alpha B^j + \beta C^j)\) という式を考えるとき、\(j\) を 1 つずつ固定して——つまり「\(j = 1\) のとき」「\(j = 2\) のとき」と順番に見ていくの。\(j\) を固定するごとに \(g_{ij} A^i\) は定まった数値として振る舞うから、普通の分配法則で展開できる。\(n = 2\) で具体的に書くわね。\(j = 1\) の項は \(g_{i1} A^i \cdot (\alpha B^1 + \beta C^1) = \alpha\,g_{i1} A^i B^1 + \beta\,g_{i1} A^i C^1\)\(j = 2\) の項も同様に \(\alpha\,g_{i2} A^i B^2 + \beta\,g_{i2} A^i C^2\)

🔵 カイ: ここまでは \(j\) を固定して場合分けしていたんですよね。最後に \(j\) についても和をとるんですか?

🟡 リナ: その通り。\(j = 1\)\(j = 2\) の結果を全部足し合わせると、\(\alpha\,g_{ij} A^i B^j + \beta\,g_{ij} A^i C^j\) になるの。この最後の式では \(j\)\(B^j\) の上と \(g_{ij}\) の下にペアで現れているからダミー添字として和をとっているわ。

⚪ メイ: つまり最終的に \(g(\vec{A},\; \alpha\vec{B} + \beta\vec{C}) = \alpha\,g(\vec{A}, \vec{B}) + \beta\,g(\vec{A}, \vec{C})\) が成り立つ——確かに第二引数について線形ね。

🟡 リナ: その通り。だから内積 \(g(\vec{A}, \vec{B}) = g_{ij} A^i B^j\) は確かに双線形で、\((0, 2)\) 型テンソルの代表例よ。これが本編で登場する計量テンソルなの。

⚪ メイ: なるほど、内積という馴染みのある操作が、テンソルの定義にぴったり当てはまるのね。

🔵 カイ: ちょっと確認させてください。\(g_{ij} A^i B^j\) の式で、\(i\)\(g_{ij}\) の下と \(A^i\) の上にあるからペアになって和をとる、\(j\)\(g_{ij}\) の下と \(B^j\) の上でペアになって和をとる……だから全部で \(n^2\) 個の項の和になるんですよね?

🟡 リナ: その通り。\(n = 2\) なら \(g_{11}A^1 B^1 + g_{12}A^1 B^2 + g_{21}A^2 B^1 + g_{22}A^2 B^2\) の 4 項ね。ここで大事なポイントを強調しておくわ。今の議論で「内積は双線形だから \((0,2)\) 型テンソルだ」と判定するのに、成分 \(g_{ij}\) の具体的な値は使わなかったわよね。テンソルの定義自体は成分に依存しない——「特定の種類の関数である」という性質だけで決まるの。成分は座標系を選んで初めて現れる。では、成分はどうやって求めるのか? それが次の B.10 節のテーマよ。

🔵 カイ: ……ということは、テンソルそのものは座標に依存しない幾何学的な存在で、成分は座標系を選んで初めて決まる数値ってことですか? ベクトルのときと同じ構造だ。でも、ベクトルなら「矢印」っていう直感的なイメージがあったけど、2 階以上のテンソルって幾何学的にはどんな「形」をしてるんですか?

🟡 リナ: いい質問だけど、2 階以上のテンソルを 1 つの絵で表すのは難しいの。だからこそ「多重線形写像」という抽象的な定義が威力を発揮する——形ではなく振る舞い(何を入れたら何が出るか)でテンソルを特徴づけるのよ。そしてこの考え方が、一般相対論で「物理法則は座標系に依存しない」という一般共変性原理を自然に実現する鍵になるの。

✅ 理解度チェック: テンソルを「多重線形写像」として定義するとき、型 \((0, 2)\) のテンソルとはどのような関数でしょうか? また、この定義の利点は何でしょうか?

答え

\((0, 2)\) のテンソルとは、ベクトルを 2 個引数にとり実数を返す関数で、各引数について線形(双線形)なものである。この定義の利点は、成分や座標系が一切登場しないため、テンソルを座標に依存しない幾何学的対象として捉えられることにある。


B.10 テンソルの成分を「多重線形写像」から求める

🟡 リナ: 多重線形写像としてのテンソルの成分は、基底ベクトルを代入して得られる実数として定義されるわ。

\((0, 2)\) 型テンソル \(f\) の成分は

\[f_{ij} := f(e_i, e_j) \tag{B.6}\]

⚪ メイ: さっき出てきた内積の \(g\) だと、この定義はどうなるの?

🟡 リナ: いい質問。本編で学んだ具体例で確認してみましょう。第 4 章 で学んだ Minkowski 計量がまさにこの例になるわ。ここからは 4 次元時空の話だから、添字をギリシャ文字 \(\alpha, \beta\)\(= 0, 1, 2, 3\))に切り替えるわね——本編と同じ記法よ。平坦な時空では計量テンソルの成分 \(g_{\alpha\beta}\) は定数になって、それを特に \(\eta_{\alpha\beta}\) と書くの。4 次元時空の基底 \(e_0, e_1, e_2, e_3\) を代入すると

\[g(e_\alpha, e_\beta) = g_{\alpha\beta} = \eta_{\alpha\beta}\]

になる。ここで \(g(e_\alpha, e_\beta)\) は「基底ベクトル \(e_\alpha\)\(e_\beta\) の内積」を計量テンソル \(g\) で計算したもの——つまり計量テンソルこそが内積を定義する道具なの。符号規約 \((-,+,+,+)\) のもとで

\[(\eta_{\alpha\beta}) = \begin{pmatrix} -1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\]

これがまさに「計量テンソルの成分」よ。成分さえ分かれば、任意のベクトルに対する値が計算できる。

🟡 リナ: \(\vec{A} = A^\alpha e_\alpha\)\(\vec{B} = B^\beta e_\beta\) を代入するわ。ここで \(\vec{A}\)\(\vec{B}\) の展開に異なるダミー添字 \(\alpha, \beta\) を使っていることに注意して——B.6 節で学んだ「異なる和には異なるダミー添字を使う」規則の実践よ。

まず第一引数の線形性を使うわ。\(\vec{A} = A^0 e_0 + A^1 e_1 + A^2 e_2 + A^3 e_3 = A^\alpha e_\alpha\) だから、まず足し算をバラして

\[g(A^\alpha e_\alpha,\; \vec{B}) = g(A^0 e_0,\; \vec{B}) + g(A^1 e_1,\; \vec{B}) + \cdots\]

次に各項でスカラーを外に出すと

\[= A^0\,g(e_0,\; \vec{B}) + A^1\,g(e_1,\; \vec{B}) + \cdots = A^\alpha\,g(e_\alpha,\; \vec{B})\]

🔵 カイ: 足し算をバラしてからスカラーを外に出す——線形性のルールを 2 段階で使っているんですね。

次に第二引数の線形性を同じ要領で使って

\[A^\alpha\,g(e_\alpha,\; B^\beta e_\beta) = A^\alpha B^\beta\,g(e_\alpha, e_\beta)\]

⚪ メイ: 同じ操作を第二引数にも適用しただけね。きれいにスカラーが全部外に出た。

まとめると

\[g(\vec{A}, \vec{B}) = A^\alpha B^\beta\,g(e_\alpha, e_\beta) = A^\alpha B^\beta\,\eta_{\alpha\beta} \tag{B.7}\]

このように、多重線形性を使えばスカラー係数を 1 つずつ関数の外に出せるの。

🔵 カイ: 時空の添字は \(0, 1, 2, 3\) だから、展開すると \(-A^0 B^0 + A^1 B^1 + A^2 B^2 + A^3 B^3\) になる。第 5 章で見た内積そのものですね。

✅ 理解度チェック: 多重線形写像としてのテンソル \(f\) の成分 \(f_{ij}\) は、どのようにして求められるでしょうか?

答え

基底ベクトルを引数に代入して得られる実数として定義される。すなわち \(f_{ij} := f(e_i, e_j)\) である。成分が分かれば、任意のベクトルに対する値は多重線形性を使って \(f(\vec{A}, \vec{B}) = A^i B^j f_{ij}\) と計算できる。

📝 練習問題:


B.11 2 つのアプローチのつながり

🟡 リナ: ここまで、テンソルを 2 つの方法で導入したわ。表 B.1「テンソル導入の2つのアプローチ比較」 に整理しておくわね。この節では、この 2 つが実は同じものであることを示すわ。

🔵 カイ: 同じものだって直感的には分かるんですけど、具体的にどうやって確認するんですか? テンソル積空間の元 \(f_{ij}\,e_i \otimes e_j\) にベクトルを「代入する」ってできるんですか?

🟡 リナ: いい質問。実はそこが問題なの。\(e_i \otimes e_j\) はベクトル同士の積だから、ベクトルを「食べる」仕組みを持っていない。B.9 で学んだように、ベクトルを入力として受け取って実数を返せるのは 1-形式だったわよね。だから、基底ベクトル \(e_i\) に対応する「相棒」の 1-形式を用意して、テンソル積空間の基底を 1-形式のテンソル積 \(\epsilon^i \otimes \epsilon^j\) に置き換えれば、自然にベクトルを食べられるようになる。この「相棒」が双対基底(dual basis)なの。

🔵 カイ: 「双対」って何ですか? 「相棒」っていうのは分かるんですけど、なんで「双対」って名前なんだろう。

🟡 リナ: 「双対」は「ペアになっている」という意味よ。ベクトルと 1-形式は互いに「食べる・食べられる」の関係にあるわよね——ベクトルは 1-形式に食べられてスカラーを返す、逆に 1-形式はベクトルに食べられてスカラーを返す。この対等なペアの関係を「双対」と呼ぶの。だから「双対基底」は「元の基底とペアになっている 1-形式の基底」という意味ね。

表 B.1: テンソル導入の2つのアプローチ比較

アプローチ 核心 利点
テンソル積空間 基底 \(e_i \otimes e_j\) を並べて空間を構成 計算手順が明快
多重線形写像 ベクトルを引数にとり実数を返す関数 座標に依存しない定義

⚪ メイ: 2 つのアプローチは、同じ対象を別の角度から見ているように感じるけど……実際に同じものなの?

🟡 リナ: いい直感ね。実際、数学的に同じものだと示せるの。なぜそれを確認する必要があるかというと——もし 2 つのアプローチが本当に同じなら、「成分を並べて計算する方法」と「関数として代入する方法」のどちらを使っても必ず同じ答えが出ることが保証されるから。場面に応じて便利な方を選べるようになるの。ゴールを先に言うわね——「テンソル積空間の元にベクトルを代入すると、多重線形写像として計算した値 \(f_{ij} A^i B^j\) と同じ結果が出る」ことを示したいの。そのために、さっき快の質問に答えて導入した双対基底 \(\epsilon^i\) を使うわ。共変テンソルの基底を \(\epsilon^i \otimes \epsilon^j\) に置き換えれば、ベクトルを自然に「食べる」ことができるのだったわね。

🔵 カイ: ちょっと待ってください。「基底を 1-形式で作り直す」って、今まで \(e_i \otimes e_j\) で作っていた空間を捨てるってことですか? それとも別の空間を新しく作るんですか?

🟡 リナ: いい質問。捨てるわけではないの。反変テンソル空間 \(T^2(V)\)\(e_i \otimes e_j\) を基底とする空間としてそのまま残る。今やりたいのは、共変テンソル——つまり「ベクトルを食べる関数」の空間を、テンソル積の言葉で書き直すこと。そのために 1-形式の基底 \(\epsilon^i\) を使って \(\epsilon^i \otimes \epsilon^j\) という基底を作るの。1-形式のリマインド——「ベクトルを 1 個受け取って実数を 1 個返す線形関数」のこと(本編 第 4 章 で詳しく学んだわね)。

🔵 カイ: うーん……でもなんで共変の方は 1-形式で作るんですか? ベクトルの基底 \(e_i\) じゃダメなんですか?

🟡 リナ: 共変テンソルは「ベクトルを食べる関数」だったわよね。だから基底自体がベクトルを食べられないといけない。\(e_1\) はただの矢印だから \(\vec{A}\) を受け取って数を返す仕組みを持っていない。でも 1-形式なら数を返せる——だから 1-形式で基底を作るの。具体的には、\(V\) の基底 \(e_1, \ldots, e_n\) に対して、1-形式の組 \(\epsilon^1, \ldots, \epsilon^n\) を定義するわ。記号にギリシャ文字の \(\epsilon\)(イプシロン)を使うのは、\(e^i\) だと指数関数 \(e^x\) と紛らわしいからよ。教科書によっては \(\theta^i\) と書くこともあるわ。添字の位置に注目して——\(\epsilon^i\)上付きよ。ベクトルの基底 \(e_i\) が下付きだったのと逆ね。B.6 で見たように、ベクトルは「成分が上付き \(A^i\)、基底が下付き \(e_i\)」だった。1-形式はその逆で、「成分が下付き \(f_i\)、基底が上付き \(\epsilon^i\)」になるの。成分と基底で添字の上下が常に逆転する——これが縮約記法と整合するためのルールよ。

⚪ メイ: なるほど、ベクトルでも 1-形式でも「成分と基底の添字は常に逆」という統一的なルールになっているのね。

🔵 カイ: じゃあ、\(\epsilon^i\) って具体的にはどんな 1-形式なんですか? 何を入れたら何が返ってくるんだろう。

🟡 リナ: いい質問。さっき「テンソル積空間の元にベクトルを代入したい」と言ったわね。そのためには、ベクトルの各成分を 1 つずつ取り出せる道具が必要なの。\(\epsilon^i\) には「\(i\) 番目の成分だけを取り出す装置」の役割を持たせたい。具体的にイメージしてみて——\(\vec{A} = 3e_1 + 5e_2\) というベクトルがあったとき、「第 1 成分の 3 だけを取り出す装置」と「第 2 成分の 5 だけを取り出す装置」がほしいわよね。\(\epsilon^1\) が前者、\(\epsilon^2\) が後者の役割を果たすの。「第 1 成分を取り出す」とは、\(e_1\) を入れたら 1 が返り、\(e_2\) を入れたら 0 が返るということ——そうすれば \(\epsilon^1(3e_1 + 5e_2) = 3 \cdot 1 + 5 \cdot 0 = 3\) と第 1 成分だけが残るわ。一般に、各基底に対して「自分の番号のときだけ 1、それ以外は 0」を返すようにしたい。それを数式で書くと

\[\epsilon^i(e_j) = \delta^i{}_j\]

となるわ。

🔵 カイ: \(\delta^i{}_j\) って……あ、Kronecker のデルタですよね。第 6 章 で出てきた。\(i = j\) なら 1、\(i \neq j\) なら 0 を返すやつ。

🟡 リナ: そう、よく覚えているわね。ここでは添字を上下に分けて \(\delta^i{}_j\) と書いているけど、数値としては同じよ。

🔵 カイ: 数値が同じなら、なんでわざわざ上下に分けるんですか? \(\delta_{ij}\) じゃダメなんですか?

🟡 リナ: いい質問。理由は縮約記法との整合性よ。左辺を見て——\(\epsilon^i(e_j)\)\(\epsilon^i\) は上付き添字、\(e_j\) は下付き添字を持っているわね。右辺も同じ添字の配置にしておくと、後で縮約するときに「上と下のペアで和をとる」ルールがそのまま使えるの。数値としては \(\delta^i{}_j\)\(\delta_{ij}\)\(\delta^{ij}\) も同じ(\(i = j\) なら 1、そうでなければ 0)だから、今の段階では「書き方の約束」だと思っておけば大丈夫よ。

⚪ メイ: 要するに単位行列の \((i, j)\) 成分と同じ値だけど、添字の位置を揃えておくと後の計算で混乱しないということね。

🟡 リナ: その通り。つまり、各 \(\epsilon^i\) は「\(i\) 番目の基底成分だけを取り出す」1-形式なの。ちなみに、教科書によっては双対基底を \(e^i\) と書くこともあるけど、指数関数の \(e^x\) と紛らわしいから、この本では \(\epsilon^i\) を使っているのよ。

🔵 カイ: 1-形式はベクトルを食べて実数を返す関数でしたよね。\(\epsilon^i\) は「\(e_i\) を入れたら 1、それ以外の基底を入れたら 0 を返す」ってことですか?

🟡 リナ: まさにそう。具体例で確認してみましょう。\(\vec{A} = 3e_1 + 5e_2\)\(\epsilon^1\) を作用させると、\(\epsilon^1(\vec{A}) = \epsilon^1(3e_1 + 5e_2) = 3\,\epsilon^1(e_1) + 5\,\epsilon^1(e_2) = 3 \cdot 1 + 5 \cdot 0 = 3\)。つまり第 1 成分だけを取り出してくれるの。

⚪ メイ: なるほど、\(\epsilon^i\) は「\(i\) 番目の成分を読み取る装置」みたいなものね。

🟡 リナ: そう。そしてこの双対基底のテンソル積 \(\epsilon^i \otimes \epsilon^j\) を基底とする空間を作ると、その元 \(f = f_{ij}\,\epsilon^i \otimes \epsilon^j\) に対して、ベクトル \(\vec{A}, \vec{B}\) を「代入する」操作を定義できるの。

🔵 カイ: テンソル積空間の元にベクトルを「代入する」って、具体的にはどうやるんですか?

🟡 リナ: 定義のルールは自然なものよ。\((\epsilon^i \otimes \epsilon^j)(\vec{A}, \vec{B}) := \epsilon^i(\vec{A})\,\epsilon^j(\vec{B})\)——つまり、テンソル積の左側が第一引数を、右側が第二引数を担当するの。

🔵 カイ: 左の \(\epsilon^i\)\(\vec{A}\) を食べて、右の \(\epsilon^j\)\(\vec{B}\) を食べる……スロットが 2 つある機械の各スロットに 1 個ずつ入れるイメージですね。

🟡 リナ: まさにそう。さっきの具体例を一般化すると、\(\epsilon^i\) は 1-形式だから線形関数よ。線形関数のルールを思い出して——\(\epsilon^i(\alpha \vec{u} + \beta \vec{v}) = \alpha\,\epsilon^i(\vec{u}) + \beta\,\epsilon^i(\vec{v})\) が成り立つの。\(\vec{A} = A^k e_k\)\(k\) について和をとる縮約記法よ)を代入するわ。ここでダミー添字を \(i\) ではなく \(k\) にしているのは、\(\epsilon^i\) の上付き添字 \(i\) が既に使われているから——B.6 節で学んだ「異なる和には異なるダミー添字を使う」ルールの実践よ。展開すると \(\vec{A} = A^1 e_1 + A^2 e_2 + \cdots + A^n e_n\) だから、線形性を繰り返し使って各項にバラせる:\(\epsilon^i(\vec{A}) = \epsilon^i(A^1 e_1 + A^2 e_2 + \cdots) = A^1\,\epsilon^i(e_1) + A^2\,\epsilon^i(e_2) + \cdots = A^k\,\epsilon^i(e_k)\)。ここでスカラー \(A^k\) が関数の外に出せるのは、線形性のルールそのものよ。そして \(\epsilon^i(e_k) = \delta^i{}_k\) だから、\(A^k\,\delta^i{}_k\) となる。

🔵 カイ: あ、さっきの Kronecker デルタの話ですね。\(k\) について和をとると \(k = i\) の項だけが生き残って……

🟡 リナ: その通り。最後のステップを補足しておくわね。\(\delta^i{}_k\)\(i = k\) のときだけ 1 で、それ以外は 0 だから、\(k\) について和をとると \(k = i\) の項だけが生き残る。つまり \(A^k\,\delta^i{}_k = A^1 \cdot 0 + \cdots + A^i \cdot 1 + \cdots + A^n \cdot 0 = A^i\) よ。これが Kronecker デルタの「添字を置き換える」働きなの。

🔵 カイ: ちょっと確認させてください。\(A^k \delta^i{}_k\)\(k\) について和をとるとき、\(i\) は固定されてるんですよね? たとえば \(i = 2\) なら \(A^1 \cdot \delta^2{}_1 + A^2 \cdot \delta^2{}_2 + \cdots = 0 + A^2 + 0 + \cdots = A^2\) ってことですか?

🟡 リナ: その通り。\(i\) は自由添字だから固定されていて、\(k\) だけがダミー添字として走る。\(i = 2\) なら \(k = 2\) の項だけが生き残って \(A^2\) が出てくる。一般の \(i\) でも同じ仕組みで \(A^i\) が出てくるの。

⚪ メイ: つまり \(\epsilon^i(\vec{A}) = A^i\) ということね。\(\epsilon^i\) はベクトルの \(i\) 番目の成分をそのまま返してくれる。

🟡 リナ: その通り。同様に \(\epsilon^j(\vec{B}) = B^j\) だから、全体をまとめると

\[f(\vec{A}, \vec{B}) = f_{ij}\,\epsilon^i(\vec{A})\,\epsilon^j(\vec{B}) = f_{ij}\,A^i B^j\]

つまり「ベクトルを 2 個入れたら実数が出る関数」として振る舞えるの。逆に、多重線形写像に基底を代入すれば成分が得られる。数学的には、この 2 つの空間は同型(isomorphic)なの。

🔵 カイ: 「同型」って……同じ形をしてるってことですか?

🟡 リナ: 大まかに言えばそう。もう少し正確に言うと、「見た目は違うけど、足し算やスカラー倍のルールが完全に同じ構造を持っている」ということよ。身近な例で言えば、2 次元の平面上の点を「座標 \((x, y)\)」で表すか「矢印(ベクトル)」で表すか——見た目は違うけど、足し算やスカラー倍のルールが同じだから、どちらで計算しても同じ答えが出るわよね。テンソルの場合も同じで、成分 \(f_{ij}\) が同じなら、テンソル積空間のアプローチで計算しても多重線形写像のアプローチで計算しても、必ず同じ数値が出るの。

🔵 カイ: あ、座標とベクトルの関係みたいなものか。表現が違うだけで中身は同じ……でも、本当にどんな場合でも同じ答えになるんですか? たまたま今の例で一致しただけってことはない?

🟡 リナ: いい疑問ね。「たまたま」ではないことを保証するのが、数学で言う「同型」という概念なの。2 つの空間の間に「足し算やスカラー倍の構造を壊さない 1 対 1 の対応」が存在するという意味よ。「構造を壊さない」というのは、たとえば 2 つの元を先に足してから対応させても、それぞれ対応させてから足しても、同じ結果になるということ。

🔵 カイ: うーん、抽象的でちょっとイメージしにくいです。具体的にはどういうことですか?

🟡 リナ: 具体的に見てみましょう。テンソル積空間の元 \(f_{ij}\,\epsilon^i \otimes \epsilon^j\) と、別の \((0,2)\) 型テンソル \(h_{ij}\,\epsilon^i \otimes \epsilon^j\) を足すと \((f_{ij} + h_{ij})\,\epsilon^i \otimes \epsilon^j\) になるわね。一方、それぞれを多重線形写像と見なしてから足すと、\((f + h)(\vec{A}, \vec{B}) = f_{ij} A^i B^j + h_{ij} A^i B^j = (f_{ij} + h_{ij}) A^i B^j\) ——同じ成分 \(f_{ij} + h_{ij}\) が出てくる。つまり「先に足してから対応させる」のと「対応させてから足す」のが一致する——だから 2 つの空間は構造ごと同じ、つまり同型なの。

⚪ メイ: なるほど、どちらのアプローチで計算しても成分が一致するから、結果は必ず同じになるのね。

🔵 カイ: 足し算の順番を入れ替えても同じ成分が出てくるから「構造ごと同じ」って言えるんですね。つまり、成分で計算しても関数として代入しても、最終的に出てくる数値は絶対に一致する——だからどっちの方法を使ってもいい、と。……あ、でもさっきの話は共変テンソルについてでしたよね。反変テンソルにも同じような見方があるんですか?

🟡 リナ: いい質問。反変テンソルについても同様の対応が成り立つの。共変テンソルが「ベクトルを食べる関数」だったのと対称的に、反変テンソルは「1-形式を食べて実数を返す関数」として捉えられる。上付き添字と下付き添字の役割が入れ替わるだけよ。たとえば、ベクトル \(\vec{A} = A^i e_i\) に 1-形式 \(f = f_j \epsilon^j\) を作用させると \(f(\vec{A}) = f_i A^i\) というスカラーが出るわね。これはベクトル(\((1,0)\) 型)を「1-形式を 1 個食べて実数を返す関数」と見なしたことに相当するの。詳しくは本編で扱うから、今はイメージだけ持っておいて。

🔵 カイ: なるほど……共変は「ベクトルを食べる」、反変は「1-形式を食べる」——上下が入れ替わるだけで構造は同じなんですね。

🟡 リナ: 実用上は、計算するときはテンソル積空間のアプローチ(成分を並べて足し算・スカラー倍)、概念を理解するときは多重線形写像のアプローチ(座標に依存しない幾何学的対象)と使い分けるのがいいわ。

⚪ メイ: 計算は成分で、概念は写像で——道具を場面に応じて使い分けるのね。

📝 練習問題:


次章予告

🟡 リナ: 次の Appendix C では、粒子の作用原理を場(field)に拡張する。Lagrangian 密度の概念を導入し、場の Euler–Lagrange 方程式を導出する。さらに、曲がった時空での場の作用の書き方を学び、Einstein–Hilbert 作用への道筋を示すわ。


練習問題

📝 練習問題:

参考文献

  • 石井俊全『一般相対性理論を一歩一歩数式で理解する』第 6–7 章(テンソルの基礎・直線座標のテンソル場)
  • B. Schutz, A First Course in General Relativity, 3rd ed., Chapter 3(Tensor Analysis in Special Relativity)
  • T. Lancaster & S. J. Blundell, General Relativity for the Gifted Amateur, Chapter 2(Vectors and Tensors)