四元数を発見法的に導く

# はじめに
弊社はIoTスタートアップということで、6軸センサーを搭載したウェアラブル端末によるサービスを提供しています。そのウェアラブル端末からクォータニオンのデータをタブレット端末で受け取り、色々な計算を行なっているわけですが、アプリ開発者の私としては、クォータニオンの理解は避けて通るわけにはいきません。入社以来8ヶ月が過ぎましたが、正確に理解できているかというと怪しいので、今回記事にまとめることにしました。
# 概要
といっても、クォータニオンの利便性は全く扱っておりません。あくまでもクォータニオンの定義はどこから出てくるのかだけを書いています。クォータニオンは四元数ともいわれており、以下では四元数と表記します。
これまでネットでちょくちょく調べてはいましたが、四元数の定義と実用的な式を解説してある記事はよくみかけますが、その定義がどこから出てきたものなのかをまず知りたいと思っていました。四元数の和書はあまり多くないですが、[『四元数の発見』](https://www.amazon.co.jp/%E5%9B%9B%E5%85%83%E6%95%B0%E3%81%AE%E7%99%BA%E8%A6%8B-%E7%9F%A2%E9%87%8E-%E5%BF%A0/dp/4875253141/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E5%9B%9B%E5%85%83%E6%95%B0%E3%81%AE%E7%99%BA%E8%A6%8B&qid=1575639765&s=books&sr=1-1)はそのニーズに答えてくれたと思っています。四元数ってそもそもなんなの？と気になっている人にお勧めできる書籍です。
この記事の本筋は『四元数の発見』の第2章に基づいています。
# 四元数の定義
四元数は文字通り4つの元(element)からできている数であり、複素数の拡張とみなせます。$a,b,c,d$を実数として、以下のように表せます。
$$q=a+bi+cj+dk$$
$j,k$は$i$に極めてよく似たものであり、$j=\sqrt{-1},k=\sqrt{-1}$と書けますが、$i$とは独立しています。また、$i,j,k$の間には以下の関係が成り立ちます。

```math
i^2=j^2=k^2=ijk=-1\\
ij=-ji=k\\
jk=-kj=i\\
ki=-ik=j
```
# ウィリアム・ローワン・ハミルトン
上記の四元数は1843年にアイルランド生まれのイギリスの数学者[ハミルトン](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%83%AA%E3%82%A2%E3%83%A0%E3%83%BB%E3%83%AD%E3%83%BC%E3%83%AF%E3%83%B3%E3%83%BB%E3%83%8F%E3%83%9F%E3%83%AB%E3%83%88%E3%83%B3)によって発見されました。ハミルトンが何を考えて四元数の発見に至ったのか、当時の思考を辿ることで四元数の必然性が理解できます。四元数とはそもそも何か？$i,j,k$の間に成り立つ関係がなぜそのようになっているのか？なぜ4なのか？ということも腑に落ちて、そこから先の勉強に迷いがなくなるでしょう。
# 複素平面での*i*は半時計回りの90度回転を表す
ハミルトンのアイデアに触れる前に、複素平面について触れておきましょう。
下の図のように、複素数 $z=a+bi$に座標平面上の点$(a,b)$を対応させると、すべての複素数と平面上の点とが1対1に対応します。
　　　　　　　　　　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142900/838ac0c4-d185-b1a6-8a0c-c69e01031619.png)
このように、各点がそれぞれ1つの複素数を表すと定めた平面を複素平面といいます（あるいは複素数平面、ガウス平面）。複素平面を話題にする場合、$x$軸、$y$軸はそれぞれ実軸、虚軸といい、**Re**,**Im**で表したりもします。また、複素数の絶対値を原点からの距離$\sqrt{a^2+b^2}$で定義します。
ここで、$i$とはもちろん虚数単位のことで、2乗すると$-1$になる数字のことです。2乗すると$-1$になる数字なんて存在するのか？となりがちですが、複素平面上だとその意味がはっきりします。例えば実軸上の点$(1,0)$に対応する複素数$1$に$i$をかけると、当然$i$になりますが、これは複素平面上では虚軸上の点$(0,1)$に相当し、原点を基準にして反時計回りに90度回転させることになります。
　　　　　　　　　　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142900/d2d1a8a0-09d5-494d-ee7b-ee9486a2ced3.png)
さらに$i$をかけると$(-1, 0)$へ移動、そのまたさらに$i$をかけると$(0, -1)$へ移動、というふうに、90度ずつ回転させることができます。このように、複素平面を学ぶと$i$の意味合いがはっきりしてきますが、悲しいかな、私が高校在学時はこの複素平面が学習指導要領から削除されてしまったのです。複素数自体は習ったものの、この平面のイメージは当時の私の頭の中にはありませんでした。$i$の意味合いを実感してもらうにはおそらく最も手頃で実用上重要であるはずの複素平面を削るなんて、今から考えるとよくないと思いますねー(最近は復活したみたいですが、その代わり行列が削除されたいう話も聞くのでそれはそれで微妙)。
詳細は省きますが、より一般的には、90度だけでなくすべての回転を複素数で表現することができます。極形式を導入するとそのことがより鮮明になります。

# 空間と関係づけられる数は定義できるか
複素数は平面と関係づけることができて、点の回転(もしくはベクトルの回転)も自由に行えることがわかりました。
では、平面から空間に拡張した場合、同様のことが可能な数というのは存在するのでしょうか？この疑問に当時のハミルトンは真剣に向き合い、一つのアイデアに思い至ります。それは、複素平面の実軸と虚軸に垂直な第三の軸を考えて、以下を満たす虚数単位$j$を導入するというものです。
$$j^2=-1,　j=\sqrt{-1}, 　j≠i$$
図示すると以下のようになります。$j$は$i$と同じように、実軸と第三の軸で構成される平面にて、点を90度回転させる操作であるとみなせます。この$j$を使って、$1,i,j$の3つを元とする新しい数である三元数というものを考えて、これが空間と関係づけられないかと考えました。この考え方からいくと、複素数は$1,i$を元とする二元数という言い方もできます。
　　　　　　　　　　　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142900/ce8692b6-c98e-86cf-4181-356b82681f51.png)

# 絶対値の法則と体について
果たして三元数は存在するのか？ハミルトンの推論に入る前に、絶対値の法則と体について述べておきます。
絶対値の法則という呼び方はあくまでも『四元数の発見』によるものですが、新たに導入する数が「合理的な数」であるための指導原理として、ハミルトンが三元数の存在を確認するために拠り所としたもので、以下のようになっています。

---
$a,b,c$が複素数のとき、$c=ab$ならば、
$$|c|=|a||b|$$
あるいは
$$|c|^2=|a|^2|b|^2$$
が成り立つこと

---
ハミルトンは三元数の場合でもこれが成立していないといけないと考えていたようです。ハミルトンのような天才ならではの発想なのか、数学に十分詳しい人なら当たり前の考え方なのか、現時点の私にははっきりしませんが、とにかくこれだけは受け入れます。
『四元数の発見』には以下のような記述があります。
>Hamiltonはこの絶対値の法則を式では表していないが、文で「乗積の絶対値は絶対値の乗積に等しい」と書いている。だから三元数の積を考えるときに、絶対値の法則を重要な指導原理として考えていたことは間違いがない。

ここで、合理的な数とは何のことでしょうか？書籍では明確にこのことは説明されていませんが、文脈から類推するにこれは「体」をなす数のことであるといえます。体とは、四則演算が自由にできる数の集合のことです。自由にできるというのは、例えば複素数を四則演算すると必ず複素数になる、ということのようです。
体であるもの、そうでないものの実例としては以下のようなものが挙げられます([『ハミルトンと四元数』](https://www.amazon.co.jp/%E3%83%8F%E3%83%9F%E3%83%AB%E3%83%88%E3%83%B3%E3%81%A8%E5%9B%9B%E5%85%83%E6%95%B0%E2%80%95%E4%BA%BA%E3%83%BB%E6%95%B0%E3%81%AE%E4%BD%93%E7%B3%BB%E3%83%BB%E5%BF%9C%E7%94%A8-%E5%A0%80-%E6%BA%90%E4%B8%80%E9%83%8E/dp/4875252439/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E3%83%8F%E3%83%9F%E3%83%AB%E3%83%88%E3%83%B3+%E5%9B%9B%E5%85%83%E6%95%B0&qid=1575642480&s=books&sr=1-1)という書籍を参考にしました)。

・実数は体
・整数や自然数は体ではない(割り算すると有理数になる場合がある)
・有理数は体
・ベクトルは体ではない(割り算がない。積も複雑)
# 大雑把なハミルトンの三元数についての推論
第三の元$j$を導入したわけですが、$i$と$j$の間の関係はまだ決まっていません。これは導入した人が決めなくてはいけません。ハミルトンは上で述べた絶対値の法則を拠り所として考えていきました。少し大雑把ですが、その思考の流れを以下でみていきます(四元数の発見についてハミルトンはノートを残しており、『四元数の発見』ではその難解なノートを解読して整理してくれています。以下ではそれをさらに短縮した形で書きます)。

**①まずは$ij=ji$として、三元数それ自身の2乗を考えてみましょう。**
$$(a+bi+cj)^2=(a^2-b^2-c^2)+2abi+2acj+2bcij$$
$ij$の項が存在するので、三元数それ自身の2乗は三元数になりません。これでは三元数が体ではないことになり、都合が悪いです($ij=0$とすると消えますが、この場合は居心地が悪いとハミルトンは感じたようです)。

**②では、$ji=-ij$としてはどうでしょうか？**
$$(a+bi+cj)^2=(a^2-b^2-c^2)+2abi+2acj$$
三元数それ自身の2乗は、ちゃんと三元数になっています(当然といえば当然ですが)。
また、
$$(a^2+b^2+c^2)(a^2+b^2+c^2)=(a^2-b^2-c^2)^2+(2ab)^2+(2ac)^2$$
となり、絶対値の法則も成立しています。このことから、$i,j$間の関係はいったん$ji=-ij$と定めましょう。

**③今度は、$ji=-ij$を前提として、一般的な2つの三元数の積を考えます。**

　　　$(a+bi+cj)(x+yi+zj)$
　　　　　　　　$=(ax-by-cz)+(ay+bx)i+(az+cx)j+(bz-cy)ij$

やはり$ij$の項が出てきてしまいます。どうも三元数を定義することはできないようです。
しかし、

　　　$(a^2+b^2+c^2)(x^2+y^2+z^2)$
　　　　　　　　$=(ax-by-cz)^2+(ay+bx)^2+(az+cx)^2+(bz-cy)^2$

となっています。これが意味することは、もう一つの次元$k=ij$となる元を認めさえすれば、絶対値の法則は成立するということです。
以下、『四元数の発見』の引用です。
>このことからHamiltonはどうしても第4番目の元kがあることを認めなければならなかった。すなわち、一般の”三元数”の積を考えれば”三元数”の中にはなかった第4番目の元kが必然的に出てくるのだから、”三元数”の積は”三元数”としては表せない(数学的にいえば閉じていない)。したがって、”三元数”を”三元数”の範囲で合理的に定義することはできない。

# 四元数の発見
これにて「なぜ4なのか？」という疑問が解消されました。ところで、一般的な四元数の積は絶対値の法則を満たすのかというと、しっかり満たしています。また、除法についても全く問題がないこともはっきりします。この記事では割愛しますが、『四元数の発見』ではきっちり計算過程が書かれています。
以上のことを言葉でまとめると、以下のようになるでしょうか。

**平面と関係づけることができる複素数、言い換えれば二元数を拡張し、空間と関係づけることができる三元数を定義しようとした。しかし、どう頑張っても定義できない。その代わり、$ij=k,ji=-k$を満たす、第4番目の元$k$を導入すれば、四元数というものが定義できる。**

ここで、$ji=k、ji=-k$から、$k^2=ijij=-ijji=i^2=-1$となり、$k^2=-1$が成立します。$k$も$i,j$のような虚数単位として捉えることができます。
上の四元数の定義に立ち戻れば、$i,j,k$のきれいな関係を表現する式も、同じように簡単に導かれます。



# 四元数の数としての性質
四元数は四則演算が自由にできるわけですが、まとめると以下のようになります。

---
$\alpha,\beta,\gamma$を四元数とすると、
1.加法と乗法に関して結合則が成り立つ
$$\alpha+(\beta+\gamma)=(\alpha+\beta)+\gamma,\alpha(\beta\gamma)=(\alpha\beta)\gamma$$
2.加法について交換則が成り立つが、乗法については成立しない
$$\alpha+\beta=\beta+\alpha,\alpha\beta≠\beta\alpha$$
3.分配則は成り立つ
$$\alpha(\beta+\gamma)=\alpha\beta+\alpha\gamma$$
4.除法は$0$による割り算を除いてはっきりと定義できる
5.絶対値の法則に従う
6.四元数の虚数部分$bi+cj+dk$は3次元空間と関係づけることもできる。すなわち、虚数部分は3次元ベクトルとも考えることができる

---
四元数は体ですが、乗法については交換できないため非可換体といわれています。
6.についてですが、３次元空間の$x$軸、$y$軸、$z$軸の単位ベクトルをそれぞれ$\vec{i}$、$\vec{j}$、$\vec{k}$とすると、

```math
\vec{i}×\vec{j}=-\vec{j}×\vec{i}=\vec{k}\\
\vec{j}×\vec{k}=-\vec{k}×\vec{j}=\vec{i}\\
\vec{k}×\vec{i}=-\vec{i}×\vec{k}=\vec{j}
```
という関係がありますが、これは上の四元数の定義のところで出てきた$i,j,k$の2~4番目の関係式と似た形をしており、四元数の虚数部分は3次元ベクトルとも考えることができます。このことから、四元数は「ハミルトンのベクトル」とか「割り算のできるベクトル」と説明されることがあるようです。しかし、四元数の元$i,j,k$の代数系と3次元空間の単位ベクトル$\vec{i},\vec{j},\vec{k}$のスカラー積とベクトル積の関係がすべて1対1に対応しているわけではないですし、四元数はあくまでも数であって~~ベクトルではないことは銘記すべきです。~~(ベクトルという言葉の意味は広いので、このように言い切るのは危険な気がします)
四元数の虚数部分で3次元空間のベクトルが表現できるのに、実数部分が余計な項に思えたこともありました。このことは、四元数をわかりづらくさせている1つの要因かもしれません。しかし最近では、この実数部分も四元数の便利さ、面白さに寄与していると感じます。
# 終わりに
ハミルトンの思考を辿ることで、四元数がどこから出てくるのかをみてきました。四元数は数であるからこそとても有用ですが、実態として捉えづらい数です。ですから、ただ定義だけを飲み込んで実用に走った場合、自分で計算したりするときに答えにたどり着かなかったりすると混乱したり、基本的な理解ができていないのではと疑ってしまったりして、もやもやすることが多くなるのではないでしょうか。しかし発見の経緯を知っていれば、なぜ4なのか？$i,j,k$の間になぜそれが成り立つのか？といったことがクリアになり、知識の吸収もすんなりいくと思います。