群の表現と不変量

#はじめに
群の表現論とその群に対する不変量(関数の線形結合として)の関連性について、日本語で分かり易いと感じる記事や文献が個人的にはなかったのでまとめてみました．

#自己紹介
結晶構造(高校化学ででてくるアレ)を特徴量に変換する手法について検討をする研究をしています．
研究で必要だったので，不変量の導出について勉強しました．

#対象者
・群の定義や性質などの基本中の基本は知っている方
・群の表現論に興味があり、”なんとなくのイメージ”だけでも掴みたい人
・ある群に対して不変な量を導出したい人(画像認識の分野の特徴量エンジニアリングとか？)

#注意点
私は群論そのものよりも、不変量導出手法のテクニックを理解することに注力して群の表現論をざっと勉強しただけです．
そのため厳密な定義などを欠くこともあるかと思いますが、その際はご指摘頂けますと幸いです．
また，私の専攻は物理ですので，数学専攻の方からするといい加減な部分も多いかもしれません．．．
暖かい目で読んでくださると幸いです．

本記事の内容のほとんどは[『群論入門』](https://www.amazon.co.jp/%E7%89%A9%E6%80%A7%E7%89%A9%E7%90%86-%E7%89%A9%E6%80%A7%E5%8C%96%E5%AD%A6%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80-%E5%B0%8F%E9%87%8E%E5%AF%BA-%E5%98%89%E5%AD%9D/dp/4785328061/ref=sr_1_3?adgrpid=54963298684&gclid=Cj0KCQjw6cHoBRDdARIsADiTTzZhhZbiNIc2bOPjvxEXR6yBxuAsyKgYgR9xnSC11d8qwCdlCqEhJq8aAixyEALw_wcB&hvadid=338524927365&hvdev=c&hvlocphy=1009507&hvnetw=g&hvpos=1t1&hvqmt=b&hvrand=5597242575999098661&hvtargid=aud-759377471893%3Akwd-332614424566&hydadcr=13892_10891616&jp-ad-ap=0&keywords=%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80&qid=1561436545&s=gateway&sr=8-3)に記載があります．


#前提知識の導入
不変量導出の手法の説明の前に、よく物理屋さんの書いた群論の教科書に出てくる
「表現行列」や「基底関数」，そして「積表現」について定義しておきます．
これらについては[『群論入門』](https://www.amazon.co.jp/%E7%89%A9%E6%80%A7%E7%89%A9%E7%90%86-%E7%89%A9%E6%80%A7%E5%8C%96%E5%AD%A6%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80-%E5%B0%8F%E9%87%8E%E5%AF%BA-%E5%98%89%E5%AD%9D/dp/4785328061/ref=sr_1_3?adgrpid=54963298684&gclid=Cj0KCQjw6cHoBRDdARIsADiTTzZhhZbiNIc2bOPjvxEXR6yBxuAsyKgYgR9xnSC11d8qwCdlCqEhJq8aAixyEALw_wcB&hvadid=338524927365&hvdev=c&hvlocphy=1009507&hvnetw=g&hvpos=1t1&hvqmt=b&hvrand=5597242575999098661&hvtargid=aud-759377471893%3Akwd-332614424566&hydadcr=13892_10891616&jp-ad-ap=0&keywords=%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80&qid=1561436545&s=gateway&sr=8-3)の内容をただただ纏めただけですので，より詳細な内容をご所望の方は
そちらを参考にされたほうが確実かと思います．
[『群論入門』](https://www.amazon.co.jp/%E7%89%A9%E6%80%A7%E7%89%A9%E7%90%86-%E7%89%A9%E6%80%A7%E5%8C%96%E5%AD%A6%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80-%E5%B0%8F%E9%87%8E%E5%AF%BA-%E5%98%89%E5%AD%9D/dp/4785328061/ref=sr_1_3?adgrpid=54963298684&gclid=Cj0KCQjw6cHoBRDdARIsADiTTzZhhZbiNIc2bOPjvxEXR6yBxuAsyKgYgR9xnSC11d8qwCdlCqEhJq8aAixyEALw_wcB&hvadid=338524927365&hvdev=c&hvlocphy=1009507&hvnetw=g&hvpos=1t1&hvqmt=b&hvrand=5597242575999098661&hvtargid=aud-759377471893%3Akwd-332614424566&hydadcr=13892_10891616&jp-ad-ap=0&keywords=%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80&qid=1561436545&s=gateway&sr=8-3)を読んだことがある方や上記の概念についてご存知の方は読み飛ばして下さい．


##群の表現行列と基底関数
ある$g$個の群元$R_{1}, R_{2}, ..., R_{g}$から成る群$G$を考える．
$\forall{R_{i}}\in{G}$の3次元空間$\boldsymbol{r}$への作用$R_{i}\boldsymbol{r}$が適当に定まっているとする．
この時$R_{i}$の関数$f(\boldsymbol{r})$への作用を以下で定義する．
$${R_{i}f(\boldsymbol{r}) \equiv f(R_{i}^{-1}\boldsymbol{r})}\tag{1}$$
また，関数を行ベクトルの形で並べた
$$\boldsymbol{\psi}=\Bigl\\{{\phi_{1}(\boldsymbol{r}), \phi_{2}(\boldsymbol{r}), ..., \phi_{d}(\boldsymbol{r})}\Bigr\\}$$
を適当に用意したとする．

このとき，$\forall{R_{i}}\in{G}$に対して$\forall{\phi_{\nu}}\in{\boldsymbol{\psi}}$が以下の式を満たすとき${\boldsymbol{\psi}}$を群$G$の**基底**と呼び，一々の関数$\phi_{\nu}$を**基底関数**と呼ぶ．
$$R_{i}\phi_{\nu}=\sum_{\mu=1}^{d}D_{\mu\nu}(R_{i})\phi_{\mu} \tag{2}$$
$$(D_{\mu\nu}(R_{i})\in{C})$$

($\forall{\phi_{\nu}}\in{\boldsymbol{\psi}}$が$\boldsymbol{r}$の関数であることは省略して表記)
つまり、ある関数系が群$G$の作用に対して閉じているときにその関数の集合を群$G$の基底と呼ぶ．

また1次結合の係数$D_{\mu\nu}(R_{i})$を使うと$d$行$d$列の行列を構成することができる．
その行列を
$$\hat{\boldsymbol{D}}(R_{i})=[D_{\mu\nu}(R_{i})]$$
と表せば上記の式は，
$$[R_{i}\phi_{1}, R_{i}\phi_{2}, ..., R_{i}\phi_{d}]=[\phi_{1}, \phi_{2}, ..., \phi_{d}]\hat{\boldsymbol{D}}(R_{i}) \tag{3}$$
と書くことができる．
この行列$\hat{\boldsymbol{D}}(R_{i})$の集まり
$$\Bigl\\{\hat{\boldsymbol{D}}(R_{1}), \hat{\boldsymbol{D}}(R_{2}), ...,  \hat{\boldsymbol{D}}(R_{g})\Bigr\\}$$
を群$G$の**表現**と呼び，一々の行列$\hat{\boldsymbol{D}}(R_{i})$を**表現行列**と呼ぶ．
また基底関数の個数$d$を表現の**次元**(あるいは**次元数**)と呼ぶ．次元$d$は同時に表現行列の大きさを与える．

##積表現
続いてもう一つの重要な概念である**積表現**を導入します．
こちらも[『群論入門』](https://www.amazon.co.jp/%E7%89%A9%E6%80%A7%E7%89%A9%E7%90%86-%E7%89%A9%E6%80%A7%E5%8C%96%E5%AD%A6%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80-%E5%B0%8F%E9%87%8E%E5%AF%BA-%E5%98%89%E5%AD%9D/dp/4785328061/ref=sr_1_3?adgrpid=54963298684&gclid=Cj0KCQjw6cHoBRDdARIsADiTTzZhhZbiNIc2bOPjvxEXR6yBxuAsyKgYgR9xnSC11d8qwCdlCqEhJq8aAixyEALw_wcB&hvadid=338524927365&hvdev=c&hvlocphy=1009507&hvnetw=g&hvpos=1t1&hvqmt=b&hvrand=5597242575999098661&hvtargid=aud-759377471893%3Akwd-332614424566&hydadcr=13892_10891616&jp-ad-ap=0&keywords=%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80&qid=1561436545&s=gateway&sr=8-3)の内容を纏めただけです．

群$G$の表現$D^{(\alpha)}，D^{(\beta)}$が与えられているとき，この2つの表現から$$D^{(\alpha)}\times{D^{(\beta)}}$$という記号で表される積表現を作ることができる．

2つの表現の次元がそれぞれ$d_{\alpha}，d_{\beta}$であるとし，その基底関数を並べたベクトルを
$$\Bigl\\{\phi_1, \phi_2, ..., \phi_{d_\alpha}\Bigr\\}$$
及び
$$\Bigl\\{\psi_1, \psi_2, ..., \psi_{d_\beta}\Bigr\\}$$
とする．
この2組の基底関数は，群$G$の群元$R$によりそれぞれ
$$R\phi_j = \sum_{i}\phi_iD_{ij}^{(\alpha)}(R)$$
$$R\phi_l = \sum_{k}\psi_kD_{kl}^{(\beta)}(R)$$
と変換される．
ここで上記2組の基底関数から$d_{\alpha}d_{\beta}$個の積$\phi_{j}\psi_{l}$を作成することを考える．
この$d_{\alpha}d_{\beta}$個の関数は群$G$の変換に対して閉じているため，先述の式を基にして群$G$の表現を作ることができる．群元$R$を$\phi_{j}\psi_{l}$に作用させた結果の式は，
$${R\phi_{j}\psi_{l} \equiv R\phi_{j}R\psi_{l}} = {\sum_{ik}\phi_{i}\psi_{k}}[\hat{D}^{({\alpha}\times{\beta})}(R)]_{ik, jl} \tag{4}$$


$$[\hat{D}^{({\alpha}\times{\beta})}(R)]\_{ik, jl}
\equiv D_{ij}^{(\alpha)}(R) D_{kl}^{(\beta)}(R) \tag{5}$$

となる．

行列$\hat{\boldsymbol{D}}^{({\alpha}\times{\beta})}(R)$が表現$D^{(\alpha)}$と表現$D^{(\beta)}$の積表現の表現行列に相当する．
なおこの行列は[Kronecker積](https://en.wikipedia.org/wiki/Kronecker_product)と呼ばれる行列同士の演算で得ることができ，
$$\hat{\boldsymbol{D}}^{({\alpha}\times{\beta})}(R) = \hat{\boldsymbol{D}}^{(\alpha)}(R) \otimes \hat{\boldsymbol{D}}^{(\beta)}(R) \tag{6}$$
と書くことができる．

#射影行列と不変量
それでは本題の不変量を系統的に導出する手法を説明します．
**射影行列(Projection Matrix)**と呼ばれる行列を用いることで任意の群に対する不変量を系統的に導出することが可能です．
射影行列を用いることで，ある表現を与える基底関数を系統的に得ることができます．
この概念について，[『群論入門』](https://www.amazon.co.jp/%E7%89%A9%E6%80%A7%E7%89%A9%E7%90%86-%E7%89%A9%E6%80%A7%E5%8C%96%E5%AD%A6%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80-%E5%B0%8F%E9%87%8E%E5%AF%BA-%E5%98%89%E5%AD%9D/dp/4785328061/ref=sr_1_3?adgrpid=54963298684&gclid=Cj0KCQjw6cHoBRDdARIsADiTTzZhhZbiNIc2bOPjvxEXR6yBxuAsyKgYgR9xnSC11d8qwCdlCqEhJq8aAixyEALw_wcB&hvadid=338524927365&hvdev=c&hvlocphy=1009507&hvnetw=g&hvpos=1t1&hvqmt=b&hvrand=5597242575999098661&hvtargid=aud-759377471893%3Akwd-332614424566&hydadcr=13892_10891616&jp-ad-ap=0&keywords=%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80&qid=1561436545&s=gateway&sr=8-3)では"射影演算子"という言葉で記述がありますので参考にして下さい．

まずは射影行列について説明する．
群$G$に対して，以下の基底表現及び表現行列を持つ表現$\alpha$が存在するとする．
$$\boldsymbol{\phi^{(\alpha)}} = (\phi_1^{(\alpha)}, \phi_2^{(\alpha)}, ..., \phi_{d_{\alpha}}^{(\alpha)})$$
$$\boldsymbol{D}^{(\alpha)}(R_{i}) (R_{i} \in G)$$
表現$\alpha$を群$G$の表現$\beta$に射影する射影行列$\boldsymbol{P}^{(\alpha → \beta)}$は以下の式で得られる．
$$\boldsymbol{P}^{(\alpha → \beta)} = \frac{d_{\beta}}{g}\sum_{R_{i} \in G} \chi^{(\beta)}(R_i)^{*}  \boldsymbol{D}^{(\alpha)}(R_i) \tag{7}$$
ここで$g$は群$G$の群元の数，$d_{\beta}$は表現$\beta$の次元数，$\chi^{(\beta)}(R_i)$は表現$\beta$の表現行列$\boldsymbol{D}^{(\beta)}(R_i)$の指標である．

射影行列を用いると，
**ある適当なベクトルに左から射影行列$\boldsymbol{P}^{(\alpha → \beta)}$を作用させて得られた新たなベクトルから，表現$\beta$の基底関数の線形結合を得る**
ことができる．
以上が射影行列の簡単な説明である．

さて，今我々は群$G$の不変量を求めたい訳だが，それは即ち**群$G$の1次元の恒等表現の基底関数を求めることに相当する．**
(この理由は先述の表現行列と基底関数の関係を表す式$(3)$を見て頂くとわかるかと思います)
(ここでいう1次元の恒等表現とは，すべての群元の表現行列がスカラーの1になるような表現)

よって，上記の式*(7)*の射影先の表現$\beta$を1次元の恒等表現に置き換えて，表現$\alpha$を1次元の恒等表現に射影する射影行列$\boldsymbol{P}^{(\alpha → 1)}$は以下の式で表される．
$$\boldsymbol{P}^{(\alpha → 1)} = \frac{1}{g}\sum_{R_{i} \in G} \boldsymbol{D}^{(\alpha)}(R_i) \tag{8}$$

この射影行列$\boldsymbol{P}^{(\alpha → 1)}$に対して固有値1の固有ベクトル，即ち
$$\boldsymbol{P}^{(\alpha → 1)} \boldsymbol{u} = \boldsymbol{u} \tag{9}$$
を満たす$\boldsymbol{u}$を求める．
すると，$\boldsymbol{u}$の各成分を$u_{i}$と書いた時，以下の式$(10)$で与えられる関数$\psi$は，群$G$の任意の操作に対して不変である．
$$\psi = \sum_{i}\phi_{i}^{(\alpha)}u_{i} \tag{10}$$
(射影先が1次元表現であるため，射影行列を用いることで基底関数そのものを得ることができる．)

#不変量の求め方まとめ
長々と書いて来ましたが，要は群$G$に対する不変量は，
**STEP1. 群$G$の表現(基底関数とそれに対応する表現行列)を一つ"見つける"
STEP2. 式$(8)$を用いて1次元の恒等表現への射影行列を計算
STEP3. 射影行列の固有値1の固有ベクトルを求める
STEP4. STEP3で求めた固有ベクトルともとの基底関数から不変量が導出される**
という流れで系統的に導出することができます．

なお，STEP1で"見つけた"表現によってはSTEP3の固有値1の固有ベクトルが求まらない場合がありますが，その際はその表現からは不変量が求まらないという事に相当します．
(なお，その場合も積表現から射影することを考えれば不変量が求まったりします．
これについては次の具体例で紹介します．)


#具体例(2次の回転不変量を導出)
では最後に本手法を適用できる具体例を紹介して終わりたいと思います．
ここでは群$G$として群$\rm{SO(2)}$(2次元の任意の回転操作を群元に持つ群)を考えます．
この群に対する不変量として真っ先に$x^2 + y^2$という関数が思いつくかと思いますが，これをここまで述べてきた手法で導出したいと思います．

群$\rm{SO(2)}$の表現として，以下の式で表される基底関数$\boldsymbol{\phi}^{(\alpha)}$と表現行列$\boldsymbol{D}^{(\alpha)}(\theta)$を持つ表現$\alpha$が存在する．
$$\boldsymbol{\phi}^{(\alpha)} = (x, y) \tag{11}$$
$$\boldsymbol{D}^{(\alpha)}(\theta) := \begin{pmatrix} \rm{cos{\theta}} & -\rm{sin{\theta}} \\\ \rm{sin{\theta}} & \rm{cos{\theta}} \end{pmatrix} \tag{12}$$
(ここでいう関数$x, y$とはそれぞれ任意の点の$x$座標および$y$座標を返す関数です．)
(式$(12)$の表現行列$\boldsymbol{D}^{(\alpha)}(\theta)$は回転行列として知られる行列で，$\theta$は回転角に対応します．)

この表現$\alpha$から1次元の恒等表現への射影行列$\boldsymbol{P}^{(\alpha → 1)}$の要素${P}^{(\alpha → 1)}_{ij}$は式$(8)$のシグマが積分になり，以下の式$(13)$で与えられる．
(群$\rm{SO(2)}$は連続群であるため，表現行列の和が積分に代わります．)

$${P}^{(\alpha → 1)}_{ij} = \frac{1}{2\pi} \int\_{0}^{2\pi}{D\_{ij}^{(\alpha)}}(\theta)d\theta \tag{13}$$
ここで$D\_{ij}^{(\alpha)}$は行列$\boldsymbol{D}^{(\alpha)}(\theta)$の$ij$成分．
式$(13)$の計算結果は，$D\_{ij}^{(\alpha)}$の表式からも分かる通り全て0になり，
$$\boldsymbol{P}^{(\alpha → 1)} = \begin{pmatrix} 0 & 0 \\\ 0 & 0 \end{pmatrix}$$
となる．
この行列$\boldsymbol{P}^{(\alpha → 1)}$の固有値1の固有ベクトルは$(0, 0)^\rm{T}$しか存在せず，式$(10)$に則り基底関数$\boldsymbol{\phi}^{(\alpha)}$を用いて不変量$\psi^{(\alpha)}$を求めると，
$$\psi^{(\alpha)} = 0\times x + 0 \times y = 0$$となる．
これは関数$x$と$y$の線形結合から得られる群$\rm{SO(2)}$に対する不変量は$0x + 0y (= 0)$という自明な不変量のみであるという事に対応する．
(実際，関数$x$と$y$の線形結合から2次元の自明でない回転不変量は得られないということは直観的にも分かるかと思います．)

では，射影前の表現として*表現$\alpha$同士の積表現$\beta = \alpha \times \alpha$*を考えてみましょう．
表現$\beta$の基底関数$\boldsymbol{\phi}^{(\beta)}$及び表現行列$\boldsymbol{D}^{(\beta)}(\theta)$は先述の積表現の定義より，以下の式で定義される．
$$\boldsymbol{\phi}^{(\beta)} = \boldsymbol{\phi}^{(\alpha)} \otimes \boldsymbol{\phi}^{(\alpha)} = (x^2, xy, yx, y^2) \tag{14}$$ 
$$\boldsymbol{D}^{(\beta)}(\theta) = \boldsymbol{D}^{(\alpha)}(\theta) \otimes \tag{15} \boldsymbol{D}^{(\alpha)}(\theta) = \begin{pmatrix} \rm{cos}^2(\theta) & -\rm{sin}(\theta)\rm{cos}(\theta) & -\rm{sin}(\theta)\rm{cos}(\theta) & \rm{sin}^2(\theta) \\\ \rm{sin}(\theta)\rm{cos}(\theta)
& \rm{cos}^2(\theta) & -\rm{sin}^2(\theta) & -\rm{sin}(\theta)\rm{cos}(\theta) \\\
\rm{sin}(\theta)\rm{cos}(\theta) & -\rm{sin}^2(\theta) & \rm{cos}^2(\theta) & -\rm{sin}(\theta)\rm{cos}(\theta) \\\
\rm{sin}^2(\theta) & \rm{sin}(\theta)\rm{cos}(\theta) & \rm{sin}(\theta)\rm{cos}(\theta) & \rm{cos}^2(\theta)
\end{pmatrix}$$

先ほどの式$(13)$と同様に表現行列$\boldsymbol{D}^{(\beta)}(\theta)$の各要素を積分すると射影行列$\boldsymbol{P}^{(\beta → 1)}$が得られ，以下の式になる．
$$\boldsymbol{P}^{(\beta → 1)} = \begin{pmatrix} \frac{1}{2} & 0 & 0 & \frac{1}{2} \\\
0 & \frac{1}{2} & -\frac{1}{2} & 0\\\
0 & -\frac{1}{2} & \frac{1}{2} & 0\\\
\frac{1}{2} & 0 & 0 & \frac{1}{2} \end{pmatrix} \tag{16}$$

この射影行列$\boldsymbol{P}^{(\beta → 1)}$の固有値1の固有ベクトルの一つに，$(1, 0, 0, 1)^\rm{T}$がある．
先ほどと同様に式$(10)$に則り，基底関数$\boldsymbol{\phi}^{(\beta)}$を用いて不変量$\psi^{(\beta)}$を導出すると，
$$\psi^{(\beta)} = 1\times x^2 + 0 \times xy + 0 \times yx + 1 \times y^2 = x^2 + y^2　\tag{17}$$となり，これは最初に述べた$x^2 + y^2$が2次元の任意の回転に対して不変であるという知識を導く結果となっている！！

このように，群のある表現やその積表現を考えることで系統的に不変量を導出することができます．

#最後に
同じ表現同士の積表現を考えた場合には，互いに独立でない不変量が導出されたり，自明な不変量が導出されるなどの問題があるのですが，今回はそこまでは触れず，群の表現と不変量の関係について簡単に述べるにとどめておきます．
本手法は，画像認識の分野での特徴量作成などに応用できるのではないかと思います．
ちなみに，具体例は2次元の回転不変量を扱いましたが，これを3次元に拡張すると球面調和関数の積の線形結合で不変量が与えられます．
私の研究では，3次元の任意の回転に対する不変量を作成する手法を検討しています．
また，私はテクニカルに不変量を導出する手法に注力して勉強しただけなので，群の表現の理解で間違っているところがあるかもしれませんが，その際はご指摘頂けると幸いです．
実装などについてはまた別の記事で書こうかと思います．

#参考文献など
[『群論入門』](https://www.amazon.co.jp/%E7%89%A9%E6%80%A7%E7%89%A9%E7%90%86-%E7%89%A9%E6%80%A7%E5%8C%96%E5%AD%A6%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80-%E5%B0%8F%E9%87%8E%E5%AF%BA-%E5%98%89%E5%AD%9D/dp/4785328061/ref=sr_1_3?adgrpid=54963298684&gclid=Cj0KCQjw6cHoBRDdARIsADiTTzZhhZbiNIc2bOPjvxEXR6yBxuAsyKgYgR9xnSC11d8qwCdlCqEhJq8aAixyEALw_wcB&hvadid=338524927365&hvdev=c&hvlocphy=1009507&hvnetw=g&hvpos=1t1&hvqmt=b&hvrand=5597242575999098661&hvtargid=aud-759377471893%3Akwd-332614424566&hydadcr=13892_10891616&jp-ad-ap=0&keywords=%E7%BE%A4%E8%AB%96%E5%85%A5%E9%96%80&qid=1561436545&s=gateway&sr=8-3)
[『応用群論』](https://www.amazon.co.jp/%E5%BF%9C%E7%94%A8%E7%BE%A4%E8%AB%96%E2%80%95%E7%BE%A4%E8%A1%A8%E7%8F%BE%E3%81%A8%E7%89%A9%E7%90%86%E5%AD%A6-%E7%8A%AC%E4%BA%95-%E9%89%84%E9%83%8E/dp/4785328010/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E5%BF%9C%E7%94%A8%E7%BE%A4%E8%AB%96&qid=1561527832&s=gateway&sr=8-1)
[『Symmetry and Condensed Matter Physics: A Computational Approach』](https://www.amazon.co.jp/Symmetry-Condensed-Matter-Physics-Computational/dp/0521828457/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=symmetry+and+condensed+matter&qid=1561439439&s=gateway&sr=8-1)
[Kronecker product](https://en.wikipedia.org/wiki/Kronecker_product)