ベクトルのテンソル積から得られた行列の固有値、固有ベクトル

　はじめまして、[りょーつ](https://twitter.com/Gomachan_2021)といいます。高専出身の大学院2年生です。研究の専門は力学や機構学で、Qiitaでは主に制御工学や数学に関する記事を書いています。本当は同次変換行列について書きたかったのですが、熱が出てしまったので今週は軽めの記事を投稿します。

# 目次
[1.はじめに](#1-はじめに)
[2.固有値と固有ベクトル](#2-固有値と固有ベクトル)
[3.ベクトルのテンソル積](#3-ベクトルのテンソル積)
[4.テンソル積と固有値・固有ベクトル](#4-テンソル積と固有値・固有ベクトル)
[5.おわりに](#5-おわりに)

# 1. はじめに
　本稿では、2つのベクトルをテンソル積することで得られる行列について固有値・固有ベクトルを求めてみようと思います。手計算で固有値を求める場合、固有多項式に落とし込み、それらの解として固有値を求めることが多いかなと感じますが、本記事では固有値と固有ベクトルの定義を参照しながら非正攻法でこれらを求めようと思います。
　一般教養程度の線形代数の知識があると理解しやすいです。
 
# 2. 固有値と固有ベクトル
　まずは固有値と固有ベクトルについて軽く復習します。
ある$n \times n$行列$A$について、定数$\lambda$と$n$次元縦ベクトル$\boldsymbol{x}$により
```math
A \boldsymbol{x}
=
\lambda \boldsymbol{x}
\tag{1}
```
が成り立つとき、定数$\lambda$を固有値、ベクトル$\boldsymbol{x}$を固有ベクトルと言います。固有値と固有ベクトルは対応しており、1つの行列$A$に対して複数のペアが存在することが多いです。
　(1)式の左辺は、「行列$A$によるベクトル$\boldsymbol{x}$の線形変換」を意味しています。線形変換はベクトルの変形と捉えていただくと分かりやすいです。大きさが変わったり、向きが変わったりします。
　どのような変形をするのかは変形元のベクトル$\boldsymbol{x}$に依存しており、「線形変換によって向きはそのままで、大きさのみが変化するようなベクトルが固有ベクトルである」と解釈できます。そして、その大きさの変化の倍率が固有値$\lambda$です。

# 3. ベクトルのテンソル積
　次にベクトルのテンソル積について軽く説明します。テンソル積は記号$\otimes$を使う演算です。内積$\cdot$と外積$\times$の親戚みたいなものです。
　ある2つの$n$次元縦ベクトル$\boldsymbol{a}$と$\boldsymbol{b}$のテンソル積は以下のように定義されます。
```math
\boldsymbol{a} \otimes \boldsymbol{b}
=
\begin{bmatrix}
a_1 b_1 & a_1 b_2 & \cdots & a_1 b_n  \\
a_2 b_1 & a_2 b_2 & \cdots & a_2 b_n  \\
\vdots & \vdots & \ddots & \vdots\\
a_n b_1 & a_n b_2 & \cdots & a_n b_n  \\
\end{bmatrix}
\tag{2}
```
　(2)式より、$n$次元のベクトルどうしのテンソル積の結果は$n \times n$行列になることが分かりました。さらに計算結果の行列の成分$({\boldsymbol{a} \otimes \boldsymbol{b}})_{ij}$はベクトル$\boldsymbol{a}$と$\boldsymbol{b}$の成分を用いて以下のように計算できることが分かります。
```math
({\boldsymbol{a} \otimes \boldsymbol{b}})_{ij}
=
a_i b_j
\tag{3}
```
　さらに(2)式の結果は行列の掛け算を用いて以下のように表すことができます。$T$は行列の転置を意味しています。
```math
\boldsymbol{a} \otimes \boldsymbol{b}
=
\boldsymbol{a} \boldsymbol{b}^T
\tag{4}
```

# 4. テンソル積と固有値・固有ベクトル
　さいごに非零の$n$次元ベクトル$\boldsymbol{a}$と$\boldsymbol{b}$をテンソル積して得られた行列の固有値$\lambda$と固有ベクトル$\boldsymbol{x}$について考えます。ただし、$(\boldsymbol{a} \cdot \boldsymbol{b}) \neq 0$とします。(1)式の定義より、これらは以下の関係を満たします。
```math
(\boldsymbol{a} \otimes \boldsymbol{b}) \boldsymbol{x} 
=
\lambda \boldsymbol{x}
\tag{5}
```
　ここで(4)式を使って左辺を書き換えると、左辺の計算結果が$\boldsymbol{a}$に平行なベクトルになることが分かります。
```math
(\boldsymbol{a} \otimes \boldsymbol{b}) \boldsymbol{x} 
=
\boldsymbol{a} \boldsymbol{b}^T \boldsymbol{x}
=
\boldsymbol{a} (\boldsymbol{b}^T \boldsymbol{x})
=
(\boldsymbol{b} \cdot \boldsymbol{x}) \boldsymbol{a}
\ /\!/ \
\boldsymbol{a}
\tag{6}
```
　まず$\lambda \neq 0$の条件下で(5)式を満たすためには、
```math
\boldsymbol{x} 
=
c \ \boldsymbol{a}
\ /\!/ \
\boldsymbol{a}
\tag{7}
```
となる必要があります。
　では(7)式に対応する固有値を求めてみましょう。(5)式の両辺に(7)式を代入すると
```math
(\boldsymbol{a} \otimes \boldsymbol{b}) c \ \boldsymbol{a} 
=
(\boldsymbol{b} \cdot \boldsymbol{a})c\ \boldsymbol{a}
=
\lambda c \ \boldsymbol{a}
```
```math
\therefore
\lambda
=
(\boldsymbol{b} \cdot \boldsymbol{a})
\tag{8}
```
となります。
　次に$\lambda = 0$の場合を考えてみましょう。このとき(5)式は以下のように変形できます。
```math
(\boldsymbol{a} \otimes \boldsymbol{b}) \boldsymbol{x} 
=
\boldsymbol{0}
\tag{9}
```
　(9)式を(6)式と同様に変形し、整理すると以下のようになります。
```math
(\boldsymbol{a} \otimes \boldsymbol{b}) \boldsymbol{x} 
=
\boldsymbol{a} \boldsymbol{b}^T \boldsymbol{x}
=
(\boldsymbol{b} \cdot \boldsymbol{x}) \boldsymbol{a}
=
\boldsymbol{0}
```
```math
\therefore
(\boldsymbol{b} \cdot \boldsymbol{x}) 
=
0
\tag{10}
```
(10)式より、固有値$\lambda = 0$に対応する固有ベクトルが、$\boldsymbol{b}$に直交するすべてのベクトルであることが分かります！この固有ベクトルは$\boldsymbol{b}$の直交補空間に属するとも考えられるため、$\boldsymbol{a} \cdot \boldsymbol{b} \neq 0$の場合に$n-1$個の基底を持ちます。これにより$n$個の固有ベクトルが得られたため、行列$(\boldsymbol{a} \otimes \boldsymbol{b})$は対角化可能となります。

# 5. おわりに
　今回は小ネタとして、授業ではあまり出てこない固有値・固有ベクトルに関する話をまとめてみました。はやいこと風邪を治してスクリュー理論の記事を書きたいと思います。
　最後まで読んでいただきありがとうございました。