クォータニオンの探検

※ 式の符号が間違っていたので直しました。[2008.12.05]

やべぇ、クォータニオンって結構むずい・・・。

先日読んだ論文に、クォータニオンでは下記の式が成立すると書かれていたのだけれど、これがどうしてなのかサッパリ分からず困っていた。

 (q_1 q_2) \cdot q_3 = q_1 \cdot (q_3 q_2^*)

基本をきちんと勉強していないとこういう場面で困るという好例ですな。反省反省。

てなわけで、上記の式を理解するところまでを目的として色々とクォータニオンの式をいじってみたので、自分のメモをかねてここにまとめておくことにする。

まずは基本から

クォータニオン q を次式で表す。
 q = w + ix + jy + kz
ここで i, j, k は四元数虚数単位で、それぞれ次式が成立する。

  •  i^2 = j^2 = k^2 = -1
  •  jk = -kj = i
  •  ki = -ik = j
  •  ij = -ji = k

ベクトルを使ってお洒落に表記

ここで次の2つのベクトルを定義しておく。
 {\b i} = \(\array{i&j&k}\)^T, \quad {\b v} = \(\array{x&y&z}\)^T
これを使うと、q は次のように表記できる。
 q = w + {\b i}^T{\b v}
ちょっとはお洒落になったかな。

掛け算しよう

次の2つのクォータニオンがあるとする。
 q_1 = w_1 + {\b i}^T{\b v_1} = \(\array{1&{\b i}^T}\)\(\array{w_1\\{\b v_1}}\), \qquad {\b v_1} = \(\array{x_1&y_1&z_1}\)
 q_2 = w_2 + {\b i}^T{\b v_2} = \(\array{1&{\b i}^T}\)\(\array{w_2\\{\b v_2}}\), \qquad {\b v_2} = \(\array{x_2&y_2&z_2}\)
これを掛け算するとこうなる。
 q_1 q_2 = \(\array{w_1&{\b v_1}}\)\(\array{1 & {\b i}^T \\ {\b i} & {\b i}{\b i}^T}\)\(\array{w_2\\{\b v_2}}\) = \(\array{w_1&{\b v_1}}\)\(\array{1 & {\b i}^T \\ {\b i} & J}\)\(\array{w_2\\{\b v_2}}\)
ここで
 J = {\b i}{\b i}^T = \(\array{-1&k&-j\\-k&-1&i\\j&-i&-1}\) = \(\array{0&k&-j\\-k&0&i\\j&-i&0}\) - \(\array{1&0&0\\0&1&0\\0&0&1}\) = K - I
掛け算の計算を進めるためには、ここで登場した行列 K について調べておく必要がある。

行列 K と外積の関係

ここでは行列Kを用いて2つのベクトル間にある「掛け算」を導入する。
 {\b v_1}\ast{\b v_2} = {\b v_1}^TK{\b v_2} = \(\array{x_1&y_1&z_1}\)\(\array{0&k&-j\\-k&0&i\\j&-i&0}\)\(\array{x_2\\y_2\\z_2}\)
この「掛け算」と外積との関係を明らかにすることがこの節の目的だ。
さて、行列 K は見れば分かるように反対称行列であるので、次式が成立する。
 K^T = -K
この性質から、次のことがわかる。
 {\b v_2}\ast{\b v_1} = {\b v_2}^TK{\b v_1} = {\b v_1}^TK^T{\b v_2} = -{\b v_1}^TK{\b v_2} = -{\b v_1}\ast{\b v_2}
つまり、掛け算の順序を入れ替えると符号が反転するのである。このことからさらに、次の事実が導出できる。
 {\b v}\ast{\b v} = -{\b v}\ast{\b v} = 0
以上から、この「掛け算」と外積は非常に性質が似ていることがわかると思う。というわけで、行列 K の話題にいく前にまず外積について整理しておこう。ベクトル v に対する作用素 L を次のように定義すると、
 L({\b v}) = \(\array{0&-z&y\\z&0&-x\\-y&x&0}\)
外積は次のように書くことができる。
 {\b v_1 \times v_2} = L({\b v_1}){\b v_2} = -{\b v_2 \times v_1} = -L({\b v_2}){\b v_1}
以上を踏まえると、K による「掛け算」は次のように展開できる。
 {\b v_1}^TK{\b v_2} = \(\array{jz_1-ky_1&-iz_1+kx_1&iy_1-jx_1}\)\(\array{x_2\\y_2\\z_2}\) \\= \(\array{i&j&k}\)\(\array{0&-z_1&y_1\\z_1&0&-x_1\\-y_1&x_1&0}\)\(\array{x_2\\y_2\\z_2}\) = {\b i}^T L({\b v_1}){\b v_2}
つまり
 {\b v_1}^TK = {\b i}^T L({\b v_1})

掛け算 つづき

では先ほどの結果を利用して掛け算の式を展開していこう。
 q_1 q_2 = \(\array{w_1&{\b v_1}^T}\)\(\array{1 & {\b i}^T \\ {\b i} & K-I}\)\(\array{w_2\\{\b v_2}}\) \\= \(\array{w_1+{\b i}^T{\b v_1} & \quad w_1{\b i}^T + {\b v_1}^T\(K - I\)}\)\(\array{w_2\\{\b v_2}}\) \\= \(\array{w_1+{\b i}^T{\b v_1} & \quad - {\b v_1}^T + {\b i}^T\(w_1I + L({\b v_1})\)}\)\(\array{w_2\\{\b v_2}}\) \\= \(\array{1&{\b i}^T}\)\(\array{w_1 & -{\b v_1}^T \\ {\b v_1} & w_1I + L({\b v_1})}\)\(\array{w_2\\{\b v_2}}\)

ここでクォータニオン q に対する作用素 M を次のように定義すると
 M(q) = \(\array{w & -{\b v}^T \\ {\b v} & wI + L({\b v})}\) = wI + \(\array{0 & -{\b v}^T \\ {\b v} & L({\b v})}\)

次のように書き換えられる。
 q_1 q_2 = \(\array{1&{\b i}^T}\)M(q_1)\(\array{w_2\\{\b v_2}}\)

さらに、次のように表記するものとすると、
 {\b \bar i} = \(\array{1\\{\b i}}\), \quad {\b \bar v} = \(\array{w\\{\b v}}\)

掛け算は次式となる。
 q_1 q_2 = {\b \bar i}^T M(q_1) {\b \bar v_2}

同様にして、次のように展開することもできる。
 q_1 q_2 = {\b \bar v_1}^T \(\array{ w_2 + {\b v_2}^T{\b i} \\ w_2{\b i} - {\b v_2} + L({\b v_2}){\b i}}\) = {\b \bar v_1}^T \(\array{w_2 & {\b v_2}^T \\ -{\b v_2} & w_2I + L({\b v_2})}\) {\b \bar i} = {\b \bar i}^T \(\array{w_2 & -{\b v_2}^T \\ {\b v_2} & w_2I - L({\b v_2})}\) {\b \bar v_1}

ここで
 \hat{M}(q) = \(\array{w & -{\b v}^T \\ {\b v} & wI - L({\b v})}\) = wI + \(\array{0 & -{\b v}^T \\ {\b v} & -L({\b v})}\)

とおくと次のように書ける。
 q_1 q_2 = {\b \bar i}^T \hat{M}(q_2) {\b \bar v_1}

共役クォータニオン

クォータニオン q の共役クォータニオンは次のように定義される。
 q^* = w - {\b i}^T{\b v}

この共役クォータニオン作用素 M を適用すると次式が得られる。
 M(q^*) = wI - \(\array{0 & -{\b v}^T \\ {\b v} & L({\b v})}\) = M(q)^T

クォータニオン内積

内積を次のように定義する。
 q_1 \cdot q_2 = {\b \bar v_1} \cdot {\b \bar v_2} = {\b \bar v_1}^T{\b \bar v_2}

いよいよ冒頭の式を証明

いよいよ、冒頭の式

 (q_1 q_2) \cdot q_3 = q_1 \cdot (q_3 q_2^*)

を証明することにする。

 (q_1 q_2) \cdot q_3 = {\b \bar i}^T \hat{M}(q_2){\b \bar v_1} \cdot q_3 = {\b \bar v_1}^T \hat{M}(q_2)^T {\b \bar v_3} = {\b \bar v_1}^T \hat{M}(q_2^*) {\b \bar v_3} = q_1 \cdot (q_3 q_2^*)
証明終わり。


あああああああああああああああああああ、疲れた。