【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

行列表現で考えるテンソル積

テンソル積の扱い方を多重複素数の行列表現で考えます。

シリーズの記事です。

  1. テンソル積と双四元数
  2. 分解型四元数とベクトル
  3. 行列表現で考えるテンソル積 ← この記事
  4. 四元数からクリフォード代数へ
  5. ケイリー=ディクソン構成と行列表現

目次

概要

テンソル積は代数の構造を表します。

複素数を基底と係数とのテンソル積 $\mathbb C⊗\mathbb R$ と見なして、行列表現を考えます。

\begin{aligned} a+ib &↦1⊗a+i⊗b \\ &↦\begin{pmatrix}1&0\\0&1\end{pmatrix}a +\begin{pmatrix}0&-1\\1&0\end{pmatrix}b \\ &=\begin{pmatrix}a&-b\\b&a\end{pmatrix} \end{aligned}

複素数の係数を複素数にした代数 $\mathbb C⊗\mathbb C$ を複素数と呼びます。双複素数の行列表現を考えます。

\begin{aligned} &1⊗(a+ib)+i⊗(c+id) \\ &↦\begin{pmatrix}1&0\\0&1\end{pmatrix}(a+ib) +\begin{pmatrix}0&-1\\1&0\end{pmatrix}(c+id) \\ &=\begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix} \end{aligned}

複素数の三重のテンソル積 $\mathbb C⊗\mathbb C⊗\mathbb C$ を三重複素数と呼びます。三重複素数の行列表現には行列のテンソル積が現れます。

\begin{aligned} &1⊗\{1⊗(a+ib)+i⊗(c+id)\}+i⊗\{1⊗(e+if)+i⊗(g+ih)\} \\ &↦\begin{pmatrix}1&0\\0&1\end{pmatrix} ⊗\begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix} +\begin{pmatrix}0&-1\\1&0\end{pmatrix} ⊗\begin{pmatrix}e+if&-(g+ih)\\g+ih&e+if\end{pmatrix} \\ &=\begin{pmatrix} \begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix} & -\begin{pmatrix}e+if&-(g+ih)\\g+ih&e+if\end{pmatrix} \\ \begin{pmatrix}e+if&-(g+ih)\\g+ih&e+if\end{pmatrix} & \begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix} \end{pmatrix} \end{aligned}

このように多重複素数の系列はテンソル積によって無限に拡張できます。

複素数

複素数の行列表現を考えます。

複素数を2次元ベクトルに変換します。

a+ib↦\begin{pmatrix}a\\b\end{pmatrix}

実部と虚部の基底 $1,i$ を決めれば、後は定数倍で対応できます。

1↦\begin{pmatrix}1\\0\end{pmatrix},\quad i↦\begin{pmatrix}0\\1\end{pmatrix}

行列同士を掛け合わせて同じ形に戻るようにするため、横に拡張します。$1$ は単位行列ですが、$i$ の2列目は未知数 $a,b$ とします。

1↦\begin{pmatrix}1&0\\0&1\end{pmatrix},\quad i↦\begin{pmatrix}0&a\\1&b\end{pmatrix}

$i ^ 2=-1$ を再現する $a,b$ を求めます。

\begin{pmatrix}0&a\\1&b\end{pmatrix}^2 =\begin{pmatrix}a&ab\\b&a+b^2\end{pmatrix} =\begin{pmatrix}-1&0\\0&-1\end{pmatrix}
∴\ a=-1\ ,\quad b=0\ ,\quad i↦\begin{pmatrix}0&-1\\1&0\end{pmatrix}

※ 右上の成分に2乗で得られる $-1$ が現れています。

複素数の行列表現が求まりました。後で行列のテンソル積(クロネッカー積)を計算する都合に合わせて、基底を左に置きます。

\begin{aligned} a+ib &↦1⊗a+i⊗b \\ &↦\begin{pmatrix}1&0\\0&1\end{pmatrix}a +\begin{pmatrix}0&-1\\1&0\end{pmatrix}b \\ &=\begin{pmatrix}a&-b\\b&a\end{pmatrix} \end{aligned}

テンソル積と行列表現の対応は、基底が行列となり、係数が行列に掛かります。係数が行列に掛かっていることは、テンソル積で実数倍が移動可能であることと対応しています。

テンソル積は抽象的に感じるかもしれませんが、このように行列表現と対応付ければイメージが湧きやすいのではないでしょうか。

複素数

複素数の係数を複素数にした代数 $\mathbb C⊗\mathbb C$ を双複素数と呼びます。

複素数にはテッサリンなど亜種がありますが、今回は単純に複素数係数のテンソル積として得られる代数を考えます。

\begin{aligned} &1⊗(a+ib)+i⊗(c+id) \\ &↦\begin{pmatrix}1&0\\0&1\end{pmatrix}(a+ib) +\begin{pmatrix}0&-1\\1&0\end{pmatrix}(c+id) \\ &=\begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix} \end{aligned}

複素数の表記にはいくつか流儀がありますが、今回は四元数のような見た目で基底 $1,i,j,k$ によって表記します。

\begin{aligned} 1⊗(a+ib)+i⊗(c+id) &↦1(a+ib)+j(c+id) \\ &=a+ib+jc+kd \end{aligned}

$i⊗1$ と $i⊗i$ の2乗をテンソル積表記と行列表現とで計算します。

\begin{aligned} (i⊗1)^2=i^2⊗1^2=(-1)⊗1=1⊗(-1) \\ (i⊗i)^2=i^2⊗i^2=(-1)⊗(-1)=1⊗1 \end{aligned}
\begin{aligned} \left\{\begin{pmatrix}0&-1\\1&0\end{pmatrix}1\right\}^2 &=\begin{pmatrix}0&-1\\1&0\end{pmatrix}^21^2 =\begin{pmatrix}-1&0\\0&-1\end{pmatrix}1 =-\begin{pmatrix}1&0\\0&1\end{pmatrix} \\ \left\{\begin{pmatrix}0&-1\\1&0\end{pmatrix}i\right\}^2 &=\begin{pmatrix}0&-1\\1&0\end{pmatrix}^2i^2 =\begin{pmatrix}-1&0\\0&-1\end{pmatrix}(-1) =\begin{pmatrix}1&0\\0&1\end{pmatrix} \end{aligned}

この結果から、$j,k$ の2乗の計算方法が分かりました。

\begin{aligned} j^2&=i^2=-1 \\ k^2&=(ij)^2=i^2j^2=(-1)(-1)=1 \end{aligned}

同じことを違う表記でやっていることが分かれば、行列計算を省略して双複素数テンソル積を直接計算できるでしょう。

テンソル積を構成する複素数が可換で、可換性を制限する要素はないため、双複素数も可換です。

(a⊗b)(c⊗d)=(c⊗d)(a⊗b)=ac⊗bd

テンソル積の積が可換という意味です。テンソル積が可換という意味ではありません。$a⊗b≠b⊗a$

可換性と $i ^ 2=j ^ 2=-1,\ k=ij$ より積が計算できます。

\begin{aligned} jk=kj&=ijj=-i \\ ki=ik&=iij=-j \end{aligned}

乗積表にまとめます。

$1$ $i$ $j$ $k$
$i$ $-1$ $k$ $-j$
$j$ $k$ $-1$ $-i$
$k$ $-j$ $-i$ $1$

Wikipediaに載っている乗積表はテッサリンという亜種のため、ここに掲載したものとは異なります。

注意点

係数として行列に掛かることと、テンソル積を飛び越えて掛かることに関連はありますが、同じではありません。

実数がテンソル積を飛び越えると解釈しても問題はありません。行列表現が等しいためです。

\underbrace{i⊗6}_{j6}=\underbrace{(6i)⊗1}_{6j}
\begin{pmatrix}0&-1\\1&0\end{pmatrix}6=\begin{pmatrix}0&-6\\6&0\end{pmatrix}

しかし虚数が係数として行列に掛かることは、テンソル積を飛び越えることを意味しません。

例として $i⊗i$ を考えます。

(\underbrace{i⊗1}_j)(\underbrace{1⊗i}_i)=\underbrace{i⊗i}_k
\begin{pmatrix}0&-1\\1&0\end{pmatrix}i=\begin{pmatrix}0&-i\\i&0\end{pmatrix}

仮に $i$ がテンソル積を飛び越えられるとすると、結果が変わってしまいます。

i⊗i=\underbrace{i^2⊗1}_{\text{間違い}}=(-1)⊗1

テンソル積を飛び越えられるのは実数だけであることを演算子に添えて $⊗_R$ のように明示する方法もあります。煩雑になるので今回は省略します。

三重複素数

テンソル積による複素数の多重化はセグレの多重複素数と呼ばれます。

※ 多重複素数にはフルーリーの多重複素数という別の代数系もあります。こちらも面白い特徴を持っているため、機会があれば紹介したいです。

複素数の三重のテンソル積 $\mathbb C⊗\mathbb C⊗\mathbb C$ を三重複素数と呼びます。三重複素数の行列表現には行列のテンソル積が現れます。

\begin{aligned} &1⊗\{1⊗(a+ib)+i⊗(c+id)\}+i⊗\{1⊗(e+if)+i⊗(g+ih)\} \\ &↦\begin{pmatrix}1&0\\0&1\end{pmatrix} ⊗\begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix} +\begin{pmatrix}0&-1\\1&0\end{pmatrix} ⊗\begin{pmatrix}e+if&-(g+ih)\\g+ih&e+if\end{pmatrix} \end{aligned}

テンソル積の右側の行列を係数と同様に1つの数と見なして、左側の行列に成分を掛けて入れます。

\begin{aligned} &=\begin{pmatrix}1\begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix}&0\\0&1\begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix}\end{pmatrix} \\ &\ +\begin{pmatrix}0&-1\begin{pmatrix}e+if&-(g+ih)\\g+ih&e+if\end{pmatrix}\\1\begin{pmatrix}e+if&-(g+ih)\\g+ih&e+if\end{pmatrix}&0\end{pmatrix} \\ &=\begin{pmatrix} \begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix} & -\begin{pmatrix}e+if&-(g+ih)\\g+ih&e+if\end{pmatrix} \\ \begin{pmatrix}e+if&-(g+ih)\\g+ih&e+if\end{pmatrix} & \begin{pmatrix}a+ib&-(c+id)\\c+id&a+ib\end{pmatrix} \end{pmatrix} \end{aligned}

このような行列のテンソル積はクロネッカー積と呼ばれます。

この例は実用的な計算というよりもクロネッカー積の計算例を示すのが目的です。実際の計算は行列表現を使わなくてもテンソル積でやった方が簡単です。

計算例を示します。

\begin{aligned} &(i⊗i⊗i)^2=i^2⊗i^2⊗i^2=(-1)⊗(-1)⊗(-1)=1⊗1⊗(-1) \\ &(i⊗1⊗1)(i⊗1⊗i)=i^2⊗1⊗i=(-1)⊗1⊗i=1⊗1⊗(-i) \end{aligned}

多重複素数虚数単位に世代を添えて表記します。

\begin{aligned} (i_3i_2i_1)^2&=i_3^2i_2^2i_1^2=(-1)(-1)(-1)=-1 \\ i_3(i_3i_1)&=i_3^2i_1=-i_1 \end{aligned}

複素数をどんどんネストさせて代数を作る感覚が分かれば、多重複素数の系列はテンソル積によって無限に拡張できることがイメージできるでしょう。

逆向きのネスト

クロネッカー積が右から左に入れるような演算のため、ネストが分かりやすいように左に基底を付け足して行きました。

テンソル積の左右を入れ替えると行列表現は変わりますが、代数としての表現力(表現可能な範囲)は同じなので同型です。

参考までに右に基底を付け足す形で三重複素数の行列表現を示します。

\begin{aligned} &\{(a+bi)⊗1+(c+di)⊗i\}⊗1+\{(e+fi)⊗1+(g+hi)⊗i\}⊗i \\ &↦\begin{pmatrix}a+bi&-(c+di)\\c+di&a+bi\end{pmatrix} ⊗\begin{pmatrix}1&0\\0&1\end{pmatrix} +\begin{pmatrix}e+fi&-(g+hi)\\g+hi&e+fi\end{pmatrix} ⊗\begin{pmatrix}0&-1\\1&0\end{pmatrix} \\ &=\begin{pmatrix} (a+bi)\begin{pmatrix}1&0\\0&1\end{pmatrix} & -(c+di)\begin{pmatrix}1&0\\0&1\end{pmatrix} \\ (c+di)\begin{pmatrix}1&0\\0&1\end{pmatrix} & (a+bi)\begin{pmatrix}1&0\\0&1\end{pmatrix} \end{pmatrix} \\ &\ +\begin{pmatrix} (e+fi)\begin{pmatrix}0&-1\\1&0\end{pmatrix} & -(g+hi)\begin{pmatrix}0&-1\\1&0\end{pmatrix} \\ (g+hi)\begin{pmatrix}0&-1\\1&0\end{pmatrix} & (e+fi)\begin{pmatrix}0&-1\\1&0\end{pmatrix} \end{pmatrix} \\ &=\begin{pmatrix} \begin{pmatrix}a+bi&-(e+fi)\\e+fi&a+bi\end{pmatrix} & -\begin{pmatrix}c+di&-(g+hi)\\g+hi&c+di\end{pmatrix} \\ \begin{pmatrix}c+di&-(g+hi)\\g+hi&c+di\end{pmatrix} & \begin{pmatrix}a+bi&-(e+fi)\\e+fi&a+bi\end{pmatrix} \end{pmatrix} \end{aligned}

行列としての形は同じですが、成分の並び方が変わっています。

おわりに

テンソル積やクロネッカー積は量子計算でも多用されます。先に代数的なイメージをつかんでいれば入りやすいかもしれません。