四元数(クォータニオン)の定義

全国的に「しげんすう」と読みます。

[
前の記事へ]  [物理数学の目次へ]  [次の記事へ]


簡単な紹介

 四元数(クォータニオン)には 3 次元空間での回転の座標変換をスマートに表せるという応用がある。近頃の美しい実写のような3Dゲームを作るためには必須の知識となっている。ゲームだけではなく人工衛星やロボットの姿勢制御にもクォータニオンの概念を使うようになってきている。そのような業界では四元数という数学用語よりも、英語圏のプログラマたちが使っているクォータニオンという英単語をそのままカタカナ表記で使うことの方が多い。
 しかし英語の綴り的にも実際の発音でも「クォータニオン」じゃなくて「コターニオン」に近いんだよな。どうしてこうなった?
 物理学で四元数を使う場面は今のところ見当たらない。もし使える場面があったとしても、二組の複素数を使って代用するルールを考えた方が楽だろう。いや、かつては四元数を使ってマクスウェル方程式などの物理法則を記述していたこともあったらしいのだが、後に確立され普及したベクトル解析の方がよっぽどイメージしやすく扱いやすいというので今では物理方面での応用は廃れてしまった。

 そういうわけで、座標変換への応用の話に集中して数回シリーズでお届けしよう。


三元数を構成するのは無理

 複素数というのは2つの実数の組で表されるような数であり、平面上に表されるものだった。すると、これを拡張して 3 次元空間上に表される数というものも作れるのではないだろうか。虚数単位\( i \)でも実数でもない何らかの単位\( j \)というものを導入して次のように表される数を考えてみよう。
\[ \begin{align*} X \ =\ \alpha \ +\ \beta \,i \ +\ \gamma \,j \end{align*} \]
 これを「三元数」と呼んでみることにしよう。\( \alpha, \beta, \gamma \)は実数である。\( i \)は虚数単位であるから\( i^2 = -1 \)を満たすとしても、\( j \)の方にはどんな性質を持たせたらいいだろうか。\( i \)\( j \)の積はどうなると考えてやればいいだろうか。

 積\( ij \)も三元数で表される何らかの値になって欲しいから、

\[ \begin{align*} ij \ =\ a + b\,i + c\,j \end{align*} \]
と表されるだろうと仮定する。この両辺に\( i \)を掛けると
\[ \begin{align*} (-1)j \ =\ a \, i \ +\ (-1)b \ +\ c(a + b\,i + c\,j) \end{align*} \]
となるはずだ。ところがこれを満たす実数\( a, b, c \)の組は存在し得ないのである。

 この式を変形してやると

\[ \begin{align*} (ac-b) + (a + bc) i + (c^2 + 1)\, j \ =\ 0 \end{align*} \]
となり、右辺が 0 なのでそれぞれのカッコの中身が 0 にならなくてはならないが、\( c^2 + 1 = 0 \)を満たす実数\( c \)がないからである。

 というわけで、結果的にこのアイデアはうまく行かないのである。


四元数の定義

 ところがこれに懲りずにさらに拡張してやるとうまくいく。\( i \)でも\( j \)でも実数でもない\( k \)という単位を導入し、次のような数を考えてみる。
\[ \begin{align*} A \ =\ \alpha \ +\ \beta \, i \ +\ \gamma \, j \ +\ \delta \, k \tag{1} \end{align*} \]
 \( \alpha, \beta, \gamma, \delta \)は実数である。これを「四元数(しげんすう)」あるいは「クォータニオン」と呼ぶ。

 \( i, j, k \)のそれぞれは次のような性質を持っている。

\[ \begin{align*} i^2 \ &=\ -1 \\ j^2 \ &=\ -1 \\ k^2 \ &=\ -1 \end{align*} \]
 また、それぞれの積は次の法則に従う。
\[ \begin{align*} ij \ &=\ -ji \ =\ k \\ jk \ &=\ -kj \ =\ i \\ ki \ &=\ -ik \ =\ j \end{align*} \]
 ここから分かるように、四元数どうしの掛算は交換則が成り立っていない。掛ける順序によって値が変わってしまうという性質があるのである。

 四元数どうしの積を計算する時には複素数と同様に普通に展開して計算してやればいいのだが、\( i, k, j \)の掛算の順序だけは変えないように気をつけないといけない。2つの四元数\( A \)\( B \)の積については、

\[ \begin{align*} AB \neq BA \end{align*} \]
であり、これ以上のことが言えない。


どうしてこうなのか

 \( i \)\( j \)\( k \)も、どれも 2 乗すると -1 になるという性質があるのに、それぞれは別の数であるとみなすのである。なぜこのような性質を導入することになったのか考えてみよう。

 先ほど三元数を考えたときと同じようなことを試してみる。\( ij \)もまた四元数で表されるべきであると仮定すると

\[ \begin{align*} ij = a + b i + c j + d k \end{align*} \]
であるが、この両辺に\( i \)を掛ければ、
\[ \begin{align*} &-j = a i - b + c (ij) + d (ik) \\ \therefore\ &-j = a i - b + c (a + b i + c j + d k) + d (ik) \\ \therefore\ &(- b + ca) + (a + bc) i + (c^2 + 1)j + cd \, k + d(ik) \ =\ 0 \tag{2} \end{align*} \]
となる。\( i, j, k \)はそれぞれ異なる性質を持った数なので、それぞれの項が 0 にならないといけない。
\[ \begin{align*} -b + ca &= 0 \\ a + bc &= 0 \\ c^2 + 1 &= 0 \tag{3}\\ cd &= 0 \\ d &= 0 \tag{4} \end{align*} \]
 三元数のときと同じように\( c^2 + 1 = 0 \)を満たす実数\( c \)は存在しないのだが、(2) 式の最後の項にある\( ik \)が、\( ik = j \)あるいは\( ik = -j \)になる性質を持っていてくれれば (3) 式と (4) 式を一つにまとめてこの条件を救うことが出来る。もちろん\( ik = 2j \)のようなことを考えてもいいのだが、出来る限り単純に解決したい。

 例えば\( ik = j \)の方を採用したとすると、

\[ \begin{align*} c^2 + 1 + d = 0 \end{align*} \]
を満たせば良くなるから、\( d \leqq -1 \)であればいい。この他に\( cd = 0 \)の条件があるが\( d \neq 0 \)なので\( c = 0 \)だろう。よって\( d = -1 \)である。\( c=0 \)なので\( a = 0 \)\( b = 0 \)も導かれる。これらの結果を使えば
\[ \begin{align*} ij = - k \end{align*} \]
だということになる。仮定した\( ik = j \)と得られた\( ij = - k \)の間に矛盾は見られない。一方の式の両辺に\( i \)を掛ければもう一方の式になるという関係だ。

 しかし、もう一つ、\( ik = -j \)という条件もあったのだった。こちらも試してみると、

\[ \begin{align*} c^2 + 1 - d = 0 \end{align*} \]
を満たせばいいので\( d \geqq 1 \)であればいい。やはり\( d \neq 0 \)なので\( c = 0 \)が導かれ、\( d=1 \)となり、他の変数は 0 である。それで
\[ \begin{align*} ij = k \end{align*} \]
だということになる。こちらも仮定した\( ik = -j \)との間に矛盾はない。

 どちらを採用すればいいかと迷うが、どちらでもいいのである。\( j \)\( k \)は今のところ記号が違うだけであり、何らの性質の違いも仮定していない。\( ij = k \)とするか\( ik = j \)とするかというどうでもいい違いである。アルファベット順になっていた方が覚えやすいので\( ij = k \)を採用しておこう。この式の両辺に\( i \)を掛けて得られる\( ik = -j \)も同じ意味である。

 次に考えたいのは\( j \)\( k \)の積がどうなるかである。ところがこれが、ここまでと同じ方法ではうまくいかない。やってみせよう。次のように仮定してみる。

\[ \begin{align*} jk = a + b i + c j + d k \end{align*} \]
 両辺に\( i \)を掛けてみる。
\[ \begin{align*} ijk \ &=\ a \, i \ +\ (-b) \ +\ c \,(ij) \ +\ d(ik) \\ \therefore\ k^2 \ &=\ a \, i \ -\ b \ +\ c \, k \ -\ d \, j \end{align*} \]
 さあ、ここで困る。\( k^2 \)に対してどんな性質を要求したらいいだろう?\( k^2 = \pm i \)でも\( k^2 = \pm 1 \)でも\( k^2 = \pm k \)でも\( k^2 = \pm j \)でもこの式に矛盾が生じないのである。

 例えば\( k^2 = 1 \)なんていう仮定は\( k =\pm 1 \)と同じことなのではないか、と思うかもしれない。しかしここではどうしても慎重になってしまう。\( k^2 \)がどういう性質を持つか既に紹介してしまったが、結果としては「\( k \)\( k^2 = -1 \)を満たすが\( i \)とは異なるもの」と考えているのだった。だとしたら、この段階ではまだ「\( k \)\( k^2 = 1 \)を満たすが\( k = 1 \)でも\( k= -1 \)でもないもの」という奇妙なものである可能性も捨てるべきではないだろう。

 ところが\( k^2 = \pm k \)\( k^2 = \pm j \)という可能性は、別の簡単な計算で矛盾することが示せる。例えば\( k^2 = k \)を考えてみよう。すでに\( ij = k \)を採用しているので、この式は\( ijk = k \)となってしまう。これは\( ij = 1 \)だと言っているようなものであり、\( ij = k \)に矛盾する。あるいは特別なルールを採用すればこの矛盾を回避できるかもしれないが、そのような奇妙な体系は欲しくはない。

 \( k^2 = j \)も否定できる。左辺は\( ijk \)に書き換えることができて、\( ijk = j \)となり、この両辺に\( i \)を掛けると\( -jk = ij \)であり、この右辺に\( ij=k \)を使えば、すなわち\( -jk =k \)となる。結局\( j= -1 \)だということになってしまう。

 同様にして\( j^2 = k \)\( j^2 = j \)なども否定できる。

 それでもまだ\( k^2 = \pm i \)\( k^2 = \pm 1 \)は否定できないのである。例えば\( k^2 = i \)を仮定すると\( ijk = i \)となり、両辺に\( i \)を掛けて\( jk=1 \)となる。これはまだこの段階では否定しきれない。\( k^2 = 1 \)を仮定しても\( ijk = 1 \)であり、両辺に\( i \)を掛けて\( jk = -i \)となる。これもこの段階では否定する要素がない。同様に\( j^2 = \pm i \)\( j^2 = \pm 1 \)なども否定できない。

仮定結果
\( k^2 = \pm 1 \)\( jk = \mp i \)
\( k^2 = \pm i \)\( jk = \pm 1 \)
\( j^2 = \pm 1 \)\( kj = \pm i \)
\( j^2 = \pm i \)\( kj = \pm 1 \)

 これらの結果を組み合わせたものもまた共存可能である。組み合わせ次第では非可換、すなわち積の順序によって結果が変わることを仮定しなくてはならないが、そうしなくてもいい可能性も残る。

 このように、「四元数は積に対して閉じている」という条件、すなわち「四元数と四元数を掛けたものは再び四元数となる」という条件だけではここまでしか決められないのである。これ以外の別の条件が必要だ。

 ところが解説書によっては、交換法則が成り立つように四元数を構成することはできない、などと書いているものがある。また、一通りにしか定まらないかのような表現も見られることがある。これらは正しくない。実際には四元数には幾つかのバージョンがあり、中には交換法則が使えるものすらもある。今回紹介している有名な「普通の四元数」の他にも次のような四元数系が知られている。

双複素数 (Bicomplex number)交換法則が成り立つ。
\( j^2 = 1, k^2 = -1 \)を採用。自動的に\( jk = i \)となる。
分解型四元数 (Split-quaternion)交換法則が成り立たない。
\( j^2 = 1, k^2 = 1 \)を採用。自動的に\( jk = -i \)となる。
双曲四元数 (Hyperbolic quaternion)交換法則が成り立たない。
\( j^2 = k^2 = 1 \)であるばかりか、\( i^2 = 1 \)も採用。

 \( i^2 = 1 \)としてしまう双曲四元数には驚いた。ここまでの議論では\( i^2 = -1 \)を当然のものとしていたからで、想定外である。しかし、いずれも\( ij = k \)を採用しているという点は共通なようだ。さすがに\( k^2 = \pm i \)\( j^2 = \pm i \)を採用しているものは無さそうだが、多分、それらについても誰かが深く考えていることだろう。


絶対値(ノルム)の採用

 四元数の性質を最初に述べたような形に定めるための理由付けが欲しいところである。最も自然で納得の行く制限としてはどんなものがあるだろうか。(1) 式のような四元数に対して、
\[ \begin{align*} |A| \ \equiv \ \sqrt{\alpha^2 + \beta^2 + \gamma^2 + \delta^2} \end{align*} \]
という量を定義しよう。これを四元数の「絶対値(ノルム)」と呼ぶ。複素数の絶対値と似たような概念である。もし\( |A| = 0 \)ならば、それは\( A = 0 \)のときしかない。

 そして 2 つの四元数\( A, B \)の「絶対値の積」と「積の絶対値」とは等しいという性質を満たすことにしよう。

\[ \begin{align*} |A|\,|B| \ = |AB| \end{align*} \]
 この条件を満たすようにするには\( j,k \)にどのような性質を持たせればいいかを考えるのは地道な作業である。それでも途中で行き詰まるのではあるが、最初の方で採用した\( ij = k \)\( ik = -j \)を使いながらさらに根気よく調べていくと、\( i,j,k \)の性質が全て定まり、最初の方で述べた形になるのである。もちろん交換則が成り立っていないことも導かれてしまう。

 四元数どうしの積では交換則が成り立たないが、絶対値については次のような関係が成り立つことはすぐに分かるだろう。

\[ \begin{align*} |AB| \ =\ |BA| \end{align*} \]
 四元数に対してとりとめもない感じがしていたが、このような絶対値についての条件が加わると、少しはイメージできそうな安心感が出てくる。

 次回では四元数の性質にもう少し踏み込んで、なぜ 3 次元回転の座標変換に応用されることになっているのかというところにまで迫ろうと思う。