テンソルは関数として理解できる

POINT

  • テンソルは「ベクトル(と転置ベクトル)」をいくつか与えると「値」を返す関数として理解できる.
  • 例:行列$M$はテンソルである.なぜなら「ベクトル$\boldsymbol{v}$,$^{t}\boldsymbol{w}$」を与えると「値:${}^t\boldsymbol{w}M\boldsymbol{v}$」を返す関数であるため.

概念や必要性をよく知らないまま使ってしまいがちな「テンソル」について解説します.「テンソル」には色々な捉え方があるのですが,そのうちの一つに「関数」として捉える方法があります.「テンソルは知らないけど,関数はよく知ってるよ」という人は,まずはこの方法で「テンソル」を理解してみてはいかがでしょうか?


この記事では,テンソルの語源と言われるテンション(応力)を考えることで自然に「テンソル」が必要になることを見てみます.その後,「応力テンソル」の持つ性質に着目し,一般の「テンソル」を定義します.

【コメント】には割と細かいことが書いてあるので,詳しく知りたい方向けです.読み飛ばしても問題ありません.

関数として捉える

「テンソル(tensor)」の語源は「張力(tension)」であると言われています.つまり,「応力」を理解するために「テンソル」という概念が必要になったのです.

そこで,ここでは

  1. 「応力」を考えることで「テンソル」が導入されることを見る
  2. テンソルを「関数」として捉えて一般概念に拡張する

というアプローチをとってみます.

語源による導入(応力テンソル)

連続体中の応力は,「連続体中の点を通る1つの平面を考えたとき,その面を通して両側の連続体部分が互いに及ぼし合う単位面積あたりの力」として定義されます.つまり,応力ベクトルは

  • 位置$\boldsymbol{x}$
  • 応力の働く面$S$

の2つを決めて初めて定まります.面$S$はその法線ベクトル$\boldsymbol{n}$(*1)によって一意に定まるため,応力ベクトルは(これら2つをパラメータとして)

\begin{aligned}
\boldsymbol{p}_\boldsymbol{n} (\boldsymbol{x})
\end{aligned}
と表すことができます.つまり,

  • 各点$\boldsymbol{x}$に「ベクトルをベクトル移す関数$\boldsymbol{n}\mapsto \boldsymbol{p}_\boldsymbol{n} (\boldsymbol{x})$」が定められている

わけです.そして,実はこの関数こそが「応力テンソル$\textcolor{red}{\mathsf{P}}$」と呼ばれるものなのです($\boldsymbol{p}_\boldsymbol{n}=\textcolor{red}{\mathsf{P}}\boldsymbol{n} $).

応力テンソルについては次の記事で解説しています:応力テンソルとは - Notes_JP

【コメント1】
各点$\boldsymbol{x}$にテンソルを対応させる写像($\boldsymbol{x}\mapsto \mathsf{P}(\boldsymbol{x})$)は「テンソル場」と呼ばれています.物理で「ベクトル」というときに,実際は「ベクトル場」を指していることが多いように,「テンソル」といえば「テンソル場」の意味で使われることが多いのです.

【コメント2】
テンソルを道具として扱ったことがある人は,「テンソルって添え字を持ったものじゃないの?」という疑問が浮かんだのではないでしょうか?実は,添字を持つのは「テンソルの成分」と呼ばれるものです.

これは,ベクトル$\boldsymbol{v}$は添字を持たないのに対し,ベクトルの$x,y,z$成分は$v_x,v_y,v_z$のように添え字を持つのと同じことです.

【コメント3】
「ベクトルをベクトル写す関数」と聞いて何を思い浮かべますか?
・・・そう,「行列」です.

関数としての一般化

ここまでは,応力テンソル$\mathsf{P}$を

  • ベクトルをベクトル移す関数$\mathsf{P}:\,\boldsymbol{n}\mapsto \boldsymbol{p}_\boldsymbol{n}$

として捉えてきました.これは

  • 「ベクトル$\boldsymbol{v}$」と「転置ベクトル${}^t\boldsymbol{w}$」の2つを実数に写す関数

\begin{aligned}
\Phi:\,
(\boldsymbol{v}, {}^t\boldsymbol{w})
\mapsto {}^t\boldsymbol{w}\mathsf{P}\boldsymbol{v}
\end{aligned}
と考えることもできます(一方の関数を決めてしまえば,もう一方の関数も一意に決まるので等価であるという意味です).以下では,この関数を一般化することで,一般のテンソルを定義することを考えます.


関数$\Phi$は「双線型写像」と呼ばれます.「2つの内1つの変数を固定するとき,残りの変数についての線形写像となる」からです.実際,$a_1,a_2$を実数,$\boldsymbol{v}_i,\boldsymbol{w}_i$をベクトルとするとき

\begin{aligned}
&\Phi(\textcolor{red}{a_1\boldsymbol{v}_1+a_2\boldsymbol{v}_2} ,{}^t\boldsymbol{w}_0) \\
&=\textcolor{red}{a_1}\Phi(\textcolor{red}{\boldsymbol{v}_1},{}^t\boldsymbol{w}_0)
+ \textcolor{red}{a_2}\Phi(\textcolor{red}{\boldsymbol{v}_2},{}^t\boldsymbol{w}_0)\\
&\Phi(\boldsymbol{v}_0,\textcolor{blue}{a_1{}^t\boldsymbol{w}_1+a_2{}^t\boldsymbol{w}_2}) \\
&=\textcolor{blue}{a_1}\Phi(\boldsymbol{v}_0, \textcolor{blue}{{}^t\boldsymbol{w}_1})
+ \textcolor{blue}{a_2}\Phi(\boldsymbol{v}_0, \textcolor{blue}{{}^t\boldsymbol{w}_2})
\end{aligned}
が成立します.


同様に,変数を増やした「多重線形写像」を「1つの変数以外を固定したとき,残り1つの変数について線形写像となるもの」と定義します.そして,「多重線形写像」

\begin{aligned}
\Phi:\,
(\boldsymbol{v}_1,\cdots,\boldsymbol{v}_q, {}^t\boldsymbol{w}_1,...,{}^t\boldsymbol{w}_p)
\mapsto \text{実数}
\end{aligned}
を「$p$階反変$q$階共変テンソル」と呼びます.



【コメント1】
$\boldsymbol{e}_1,\cdots\boldsymbol{e_n}$をベクトル空間の基底とする($\boldsymbol{e}_i$は$i$成分が1で他成分が0の単位ベクトル)とき,「$p$階反変$q$階共変テンソル」の成分を
\begin{aligned}
\xi_{j_1,...,j_q}^{\;\;\;\;\;\;i_1,...,i_p}
:=
\Phi
(\boldsymbol{e}_{j_1},\cdots,\boldsymbol{e}_{j_q}, {}^t\boldsymbol{e}_{i_1},...,{}^t\boldsymbol{e}_{i_p})
\end{aligned}
で定義します.


ベクトル空間の基底が

\begin{aligned}
\boldsymbol{e}^\prime_i=\sum_{j=1}^n \alpha^j_{\; i}\boldsymbol{e}_j
\end{aligned}
と変換する場合を考えると,$(\beta^i_{\; j})$を$(\alpha^i_{\; j})$の逆行列(=転置行列)として
\begin{aligned}
{}^t \boldsymbol{e}^\prime_i
=\sum_{j=1}^n \beta^i_{\; j} {}^t\boldsymbol{e}_j
\end{aligned}
が成立します.したがって多重線形性から
\begin{aligned}
&\xi_{j_1,...,j_q}^{\prime\;\;\;\;\;\;i_1,...,i_p} \\
&=\Phi(\boldsymbol{e^\prime}_{j_1},\cdots,\boldsymbol{e^\prime}_{j_q}
, {}^t\boldsymbol{e^\prime}_{i_1},...,{}^t\boldsymbol{e^\prime}_{i_p}) \\
&=\sum_{\substack{k_1,...,k_p \\ l_1,...,l_q}}
\alpha^{l_1}_{\; j_1}\cdots \alpha^{l_q}_{\; j_q}
\beta^{i_1}_{\; k_1}\cdots \beta^{i_p}_{\; k_p}
\Phi(\boldsymbol{e}_{l_1},\cdots,\boldsymbol{e}_{l_q}
, {}^t\boldsymbol{e}_{k_1},...,{}^t\boldsymbol{e}_{k_p}) \\
&=\sum_{\substack{k_1,...,k_p \\ l_1,...,l_q}}
\alpha^{l_1}_{\; j_1}\cdots \alpha^{l_q}_{\; j_q}
\beta^{i_1}_{\; k_1}\cdots \beta^{i_p}_{\; k_p}
\xi_{l_1,...,l_q}^{\;\;\;\;\;\;k_1,...,k_p}
\end{aligned}
が成立します.これは,通常知られている「テンソルの変換則」となっています.

【コメント2】
ベクトル$\boldsymbol{v}$からなるベクトル空間を$V$とするとき,転置ベクトル${}^t\boldsymbol{w}$からなる空間は,双対空間$V^*$とみなすことができます.


この双対空間の概念を使うと,さらなる一般化が可能です:

【コメント3】
ここでは「テンソル」は「多重線形写像」であるとしました.これは次に解説する「ベクトルの拡張概念として捉える」方法で定めるテンソルと同型になります.実際,

  • $ \mathcal{L}(V_1,...,V_n;U)$:「$k$線形空間$V_1,..., V_n$」から「$k$線形空間$U$」への多重線形写像全体
  • $T_{\textcolor{blue}{q}}^{~\textcolor{red}{p}}(V)=\textcolor{red}{\overset{p}{\overbrace{V\otimes\cdots\otimes V}}} \otimes \textcolor{blue}{\underset{q}{\underbrace{V^*\otimes\cdots\otimes V^*}}}$:「方法2」で定義する$(p,q)$型テンソル空間
とするとき
\begin{aligned}
\mathcal{L}(\textcolor{blue}{\underset{q}{\underbrace{\color{red}{V,...,V}}}},\textcolor{red}{\overset{p}{\overbrace{\textcolor{blue}{V^*,...,V^*}}}};k)
\cong T_{\textcolor{blue}{q}}^{~\textcolor{red}{p}} (V)
\end{aligned}
であることが示されます(参考:ジョルダン標準形・テンソル代数 (岩波基礎数学選書)).


ベクトルの拡張概念として捉える

以下で扱っています.もっと噛み砕いた内容をここに追記する予定です.



ざっくりいうと,ベクトル$v$が基底$\{e_i\}$を用いて
\begin{aligned}
v=\sum_{i}v^i e_i
\end{aligned}
と表せることに注目します.そこで,$\{e_i\otimes e_j\}$という「基底を2つ使った新しい基底」をつくり
\begin{aligned}
v=\sum_{i,j} v^{ij} e_i\otimes e_j
\end{aligned}
とした量を考えます.さらに,個数を増やす&双対基底(上の「転置ベクトル」に相当するもの)を使って
\begin{aligned}
\bigl\{ e_{i_1}\otimes\cdots\otimes e_{i_p}\otimes f^{j_1}\otimes\cdots\otimes f^{j_q} \bigr\}_{\substack{i_1,...,i_p \\ j_1,...,j_q}}
\end{aligned}
という基底で表される量(にいくつかのルールをつけて)一般のテンソルとして定義します.

参考文献

[1]ジョルダン標準形・テンソル代数 (岩波基礎数学選書)
[2]流体力学 (物理テキストシリーズ 9):応力テンソルについて参考にしました.

*1:面に垂直な単位ベクトル.ある領域の表面を考える場合,向きは領域の外側を向くように取る(例:後で出てくる四面体の図).