Pynote

Python、機械学習、画像処理について

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

四元数の表記法

四元数は4つの実数の順序対で表される数である。
次の3つの表記法を紹介する。

4つの実数の順序対で表す方法

 \displaystyle
p = (s, t, u, v), s, t, u, v \in \mathbb{R}

実数と3次元実ベクトルの順序対で表す方法

 \displaystyle
p = (s, \hat{\boldsymbol{p}}), s \in \mathbb{R}, \hat{\boldsymbol{p}} \in \mathbb{R}^3

基底 \mathrm{1, i, j, k} で表す方法

 \displaystyle
p = s\mathrm{1} + t\mathrm{i} + u\mathrm{j} + v\mathrm{k}, s, t, u, v \in \mathbb{R}

ただし、\mathrm{1, i, j, k} は、i^2 = j^2 = k^2 = ijk = -1 を満たす。
\mathrm{1} は実数の1ではなく、記号なので注意されたい。

以下の流れ

まず、ハミルトンによる複素数の定義と同じ手順で、順序対により四元数の定義を行う。
その後、別表現として、「実数と3次元実ベクトルの順序対で表す方法」及び「基底 \mathrm{1, i, j, k} で表す方法」を紹介する。
最後にノルム、共役のいくつかの重要な性質を示す。

順序対による定義

4つの実数の順序対全体の成す直積集合を \mathbb{H} = \{(s, t, u, v); s, t, u, v \in \mathbb{R}\} とおく。

この集合 \mathbb{H} に加法、スカラー倍、乗法を次で定義する。
(これから定義する演算子は、実数の演算子 +, \times と区別するため、\oplus, \otimes を使用する。)

加法

(s_1, t_1, u_1, v_1) \oplus (s_2, t_2, u_2, v_2) := (s_1 + s_2, t_1 + t_2, u_1 + u_2, v_1 + v_2)

スカラー

\lambda \in \mathbb{R} であるとき、\lambda (s, t, u, v) := (\lambda s, \lambda t, \lambda u, \lambda v)
四元数 p に対して、(-1)p -p と表すことにする。

乗法

(s_1, t_1, u_1, v_1) \otimes (s_2, t_2, u_2, v_2) := (c_1, c_2, c_3, c_4)
ただし、
 \displaystyle
\begin{align}
c_1 &= s_1s_2 - t_1t_2 - u_1u_2 - v_1v_2 \\
c_2 &= s_1t_2 + t_1s_2 + u_1v_2 - v_1u_2 \\
c_3 &= s_1u_2 - t_1v_2 + u_1s_2 + v_1t_2 \\
c_4 &= s_1v_2 + t_1u_2 - u_1t_2 + v_1s_2
\end{align}

\mathbb{H} の元を四元数 (quaternion クォータニオン) という。
\mathbb{H} を使うのは、四元数を発明した数学者ハミルトン (Hamilton) から来ている。

四元数は実数の拡張

(s, 0, 0, 0) を実数 s と同一視する。
実際、四元数の加法、乗法の定義に従うと、

 \displaystyle
(s_1, 0, 0, 0) \oplus (s_2, 0, 0, 0) = (s_1 + s_2, 0, 0, 0)

 \displaystyle
(s_1, 0, 0, 0) \otimes (s_2, 0, 0, 0) = (s_1s_2, 0, 0, 0)

であるから、実数で定義された加法、乗法とも矛盾しない。

等号

順序対なので、2つの四元数 p = (s_1, t_1, u_1, v_1), q = (s_2, t_2, u_2, v_2) が等しいとは、
s_1 = s_2, t_1 = t_2, u_1 = u_2, v_1 = v_2 であるときをいう。

共役

四元数 p = (s, t, u, v)共役 \overline{p}

 \displaystyle
\overline{p} = (s, -t, -u, -v)

で定義する。

ノルム

四元数 p = (s, t, u, v)ノルム \|p\|

 \displaystyle
\|p\| = \sqrt{s^2 + t^2 + u^2 + v^2}

で定義する。

\|p\| = 1 となる四元数 p単位四元数という。

加法の性質

任意の p, q, r \in \mathbb{H} について

  • 閉じている。: p \oplus q \in \mathbb{H}
  • 交換則が成り立つ。: p \oplus q = q \oplus p
  • 結合則が成り立つ。: p \oplus (q \oplus r) = (p \oplus q) \oplus r
  • 単位元が存在する。: p \oplus e = e \oplus p = p となる e \in \mathbb{H} が存在する。
  • 逆元が存在する。: p \oplus p' = e \oplus p' = e となる p' \in \mathbb{H} が存在する。
証明
閉じていること、交換則、結合則が成り立つことは加法の定義より明らか。
単位元p = (s, t, u, v) に対して、e = (0, 0, 0, 0) (\equiv 0) とおくと、 p \oplus e = e \oplus p = p となるので、存在する。
逆元は p = (s, t, u, v) に対して、 -p = (-s, -t, -u, -v) より、 p \oplus (-p) = (-p) \oplus p = 0 となるので、存在する。

乗法の性質

任意の p, q, r \in \mathbb{H} について

  • 閉じている。: p \otimes q \in \mathbb{H}
  • 交換則は成り立たない。: p \otimes q \ne q \otimes p
  • 結合則が成り立つ。: p \otimes (q \otimes r) = (p \otimes q) \otimes r
  • 分配則が成り立つ。: p \otimes (q \oplus r) = p \otimes q \oplus p \otimes r

(q \oplus r) \otimes p = q \otimes p \oplus r \otimes p

  • 単位元が存在する。: p \otimes e = e \otimes p = p となる e \in \mathbb{H} が存在する。
  • 逆元が存在する。: p \ne 0 のとき、p \otimes p^{-1} = p^{-1} \otimes p = e となる p^{-1} \in \mathbb{H} が存在する。
証明
閉じていること及び交換則が成り立たないことは乗法の定義より明らか。
結合則、分配則は定義に従い、地道に計算すれば示せる。(長くなるので省略)
単位元p = (s, t, u, v) に対して、e = (1, 0, 0, 0) (\equiv 1) とおくと、 p \otimes e = e \otimes p = p となるので、存在する。
逆元は p = (s, t, u, v)  \ne 0 に対して、
 \displaystyle
\begin{align}
p \otimes \overline{p} &= \overline{p} \otimes p =  (c_1, c_2, c_3, c_4) \\
c_1 &= ss - t(-t) - u(-u) - v(-v) = s^2 + t^2 + u^2 + v^2 = \|p\|^2 \\
c_2 &= st + t(-s) + u(-v) - v(-u) = 0 \\
c_3 &= su - t(-v) + u(-s) + v(-t) = 0 \\
c_4 &= sv + t(-u) - u(-t) + v(-s) = 0
\end{align}
であるから、p^{-1} = \frac{\overline{p}}{\|p\|^2} とおくと、 p \otimes p^{-1} = p^{-1} \otimes p = 1 となるので、存在する。

実部、虚部

四元数 p = (s, t, u, v) に対して、s実部 (real part)t, u, v虚部 (imagenary part) という。

s = 0t, u, v のうち、少なくとも1つは0でない四元数純虚 (pure imaginary) であるという。
t = u = v = 0 である四元数実 (real) であるという。

基底による定義

四元数 (s, t, u, v)s \circ \mathrm{1} \dotplus t \circ \mathrm{i} \dotplus u \circ \mathrm{j} \dotplus v \circ \mathrm{k} と表すことにする。

\circ, \dotplus はただの記号にすぎず、とくに意味はない。
\mathrm{1} は実数の 1 ではなく、\mathrm{i, j, k} と同じただの記号である。

ここで次を同一視する。

 \displaystyle
\begin{align}
s \circ \mathrm{1} &\equiv s \circ \mathrm{1} \dotplus 0 \circ \mathrm{i} \dotplus 0 \circ \mathrm{j} \dotplus 0 \circ \mathrm{k} \\
t \circ \mathrm{i} &\equiv 0 \circ \mathrm{1} \dotplus t \circ \mathrm{i} \dotplus 0 \circ \mathrm{j} \dotplus 0 \circ \mathrm{k} \\
u \circ \mathrm{j} &\equiv 0 \circ \mathrm{1} \dotplus 0 \circ \mathrm{i} \dotplus u \circ \mathrm{j} \dotplus 0 \circ \mathrm{k} \\
v \circ \mathrm{k} &\equiv 0 \circ \mathrm{1} \dotplus 0 \circ \mathrm{i} \dotplus 0 \circ \mathrm{j} \dotplus v \circ \mathrm{k} \\
\mathrm{i} &\equiv 1 \circ \mathrm{i} \\
\mathrm{j} &\equiv 1 \circ \mathrm{j} \\
\mathrm{k} &\equiv 1 \circ \mathrm{k}
\end{align}

すると、

 \displaystyle
\begin{align}
s \circ \mathrm{1} \dotplus 0 \circ \mathrm{i} \dotplus 0 \circ \mathrm{j} \dotplus 0 \circ \mathrm{k}
&= s \circ \mathrm{1} \dotplus 0 \circ \mathrm{i} \dotplus 0 \circ \mathrm{j} \dotplus 0 \circ \mathrm{k} \\
&\oplus 0 \circ \mathrm{1} \dotplus 1 \circ \mathrm{i} \dotplus 0 \circ \mathrm{j} \dotplus 0 \circ \mathrm{k} \\
&\oplus 0 \circ \mathrm{1} \dotplus 0 \circ \mathrm{i} \dotplus 1 \circ \mathrm{j} \dotplus 0 \circ \mathrm{k} \\
&\oplus 0 \circ \mathrm{1} \dotplus 0 \circ \mathrm{i} \dotplus 0 \circ \mathrm{j} \dotplus 1 \circ \mathrm{k} \\
&= s \circ \mathrm{1} \oplus t \circ \mathrm{i} \oplus u \circ \mathrm{j} \oplus v \circ \mathrm{k}
\end{align}

さらに、

 \displaystyle
\begin{align}
s \circ \mathrm{1} &= s \otimes 1 \circ \mathrm{1} = s \otimes \mathrm{1} \\
t \circ \mathrm{i} &= t \otimes 1 \circ \mathrm{i} = t \otimes \mathrm{i} \\
u \circ \mathrm{j} &= u \otimes 1 \circ \mathrm{j} = u \otimes \mathrm{j} \\
v \circ \mathrm{k} &= v \otimes 1 \circ \mathrm{k} = v \otimes \mathrm{k}
\end{align}

よって、\dotplus\oplus\circ\otimes と表せる。

以上の議論より、四元数s \otimes \mathrm{1} \oplus t \otimes \mathrm{i} \oplus u \otimes \mathrm{j} \oplus v \otimes \mathrm{k}; s, t, u, v \in \mathbb{R} と表すことにする。
基本的に \mathrm{1} は省略して表記されるのが普通である。

ここで、乗法の定義より、\mathrm{1,i, j, k} 同士の積は表のようになることが確かめられる。

 \displaystyle
\newcommand\T{\Rule{0pt}{1em}{.3em}}
\begin{array}{|c|c|c|c|c|}
\hline
  & 1 & i  & j  & k  \\ \hline
1 & 1 & i  & j  & k  \\
i & i & -1 & k  & -j \\
j & j & -k & -1 & i  \\
k & k & j  & -i & -1 \\ \hline
\end{array}

スカラー及びベクトルの順序対で表す表記法

虚部を \hat{\boldsymbol{p}} = (t, u, v)^t とベクトルで表し、四元数スカラーとベクトルの順序対 p = (s, \hat{\boldsymbol{p}}), s \in \mathbb{R}, \hat{\boldsymbol{p}} \in \mathbb{R}^3 と表記する。

この表記の利点は、四元数同士の積がある式の見通しがよくなることである。

p = (s_1, \hat{\boldsymbol{p}}), q = (s_2, \hat{\boldsymbol{q}}) とすると、

加法

p \oplus q = (s_1 + s_2, \hat{\boldsymbol{p}} + \hat{\boldsymbol{q}})

乗法

p\otimes q = (s_1s_2 - \langle \hat{\boldsymbol{p}}, \hat{\boldsymbol{q}} \rangle, s_1 \hat{\boldsymbol{q}} + s_2 \hat{\boldsymbol{p}} + \hat{\boldsymbol{p}} \times \hat{\boldsymbol{q}})

証明
pq = (c_1, (c_2, c_3, c_4)^t) としたとき、実部は、
 \displaystyle
c_1 = s_1s_2 - t_1t_2 - u_1u_2 - v_1v_2 = s_1s_2 - \langle \hat{\boldsymbol{p}}, \hat{\boldsymbol{q}} \rangle
虚部は、
 \displaystyle
\begin{align}
\begin{pmatrix}
    s_1t_2 + t_1s_2 + u_1v_2 - v_1u_2\\
    s_1u_2 - t_1v_2 + u_1s_2 + v_1t_2\\
    s_1v_2 + t_1u_2 - u_1t_2 + v_1s_2
\end{pmatrix}
&= s_1 \begin{pmatrix}
    t_2\\
    u_2\\
    v_2
\end{pmatrix} + s_2 \begin{pmatrix}
    t_1\\
    u_1\\
    v_1
\end{pmatrix} + \begin{pmatrix}
    u_1v_2 - v_1u_2\\
    v_1t_2 - t_1v_2\\
    t_1u_2 - u_1t_2
\end{pmatrix} \\
&= s_1 \hat{\boldsymbol{q}} + s_2 \hat{\boldsymbol{p}} + \hat{\boldsymbol{p}} \times \hat{\boldsymbol{q}}
\end{align}
ただし、\langle \hat{\boldsymbol{p}}, \hat{\boldsymbol{q}} \rangle内積\hat{\boldsymbol{p}} \times \hat{\boldsymbol{q}} はクロス積を表す。

共役

p = (s, \hat{\boldsymbol{p}}) とすると、 \overline{p} = (s, -\hat{\boldsymbol{p}})

演算子を区別しない。

これまで実数の加法、乗法の演算 +, \times と区別するために、四元数の演算では \oplus, \otimes を使用してきた。

ただ先程見たように四元数は実数の拡張とみなせるので、以降は \oplus, \otimes+, \times と区別しないことにする。

基底による四元数の定義を改めてかくと、
 \displaystyle
q = s  + t\mathrm{i} + u\mathrm{j} + v\mathrm{k}; s, t, u, v \in \mathbb{R}

ノルム、共役の性質

任意の p, q, r \in \mathbb{H} について次が成り立つ。

p\overline{p} = \|p\|^2
証明
乗法の単位元の存在の証明を参照
 \displaystyle
\overline{\overline{p}}=p
証明
p = (s, t, u, v) とすると、 \overline{p} = (s, -t, -u, -v) であるから、 \overline{\overline{p}} = (s, -(-t), -(-u), -(-v)) = (s, t, u, v) = p
 \displaystyle
\overline{p + q} = \overline{p} + \overline{q}
証明
p = (s_1, t_1, u_1, v_1), q = (s_2, t_2, u_2, v_2) とすると、  \displaystyle
\begin{align}
\overline{p + q}
&= (s_1 + s_2, -(t_1 + t_2), -(u_1 + u_2), -(v_1 + v_2)) \\
&= (s_1, -t_1, -u_1, -v_1) + (s_2, -t_2, -u_2, -v_2) \\
&= \overline{p} + \overline{q}
\end{align}
 \displaystyle
\overline{pq} = \overline{q}\ \overline{p}
証明
p = (s_1, t_1, u_1, v_1), q = (s_2, t_2, u_2, v_2) とすると、
 \displaystyle
\begin{align}
pq &= (c_1, c_2, c_3, c_4) \\
c_1 &= s_1s_2 - t_1t_2 - u_1u_2 - v_1v_2 \\
c_2 &= s_1t_2 + t_1s_2 + u_1v_2 - v_1u_2 \\
c_3 &= s_1u_2 - t_1v_2 + u_1s_2 + v_1t_2 \\
c_4 &= s_1v_2 + t_1u_2 - u_1t_2 + v_1s_2
\end{align}
より、
 \displaystyle
\begin{align}
\overline{pq} &= (c_1, c_2, c_3, c_4) \\
c_1 &= s_1s_2 - t_1t_2 - u_1u_2 - v_1v_2 \\
c_2 &= -s_1t_2 - t_1s_2 - u_1v_2 + v_1u_2 \\
c_3 &= -s_1u_2 + t_1v_2 - u_1s_2 - v_1t_2 \\
c_4 &= -s_1v_2 - t_1u_2 + u_1t_2 - v_1s_2
\end{align}
一方、\overline{p} = (s_1, -t_1, -u_1, -v_1), \overline{q} = (s_2, -t_2, -u_2, -v_2) であるから、
 \displaystyle
\begin{align}
\overline{q}\ \overline{p} &= (c_1, c_2, c_3, c_4) \\
c_1 &= s_2s_1 - t_2t_1 - u_2u_1 - v_2v_1 \\
c_2 &= -s_2t_1 - t_2s_1 + u_2v_1 - v_2u_1 \\
c_3 &= -s_2u_1 - t_2v_1 - u_2s_1 + v_2t_1 \\
c_4 &= -s_2v_1 + t_2u_1 - u_2t_1 - v_2s_1
\end{align}
 \displaystyle
\|p\|^2 = \|\overline{p}\|^2
証明
共役とノルムの定義より明らか。
 \displaystyle
\|pq\| = \|p\|\|q\|
証明
 \displaystyle
\|pq\|^2 = (pq)\overline{pq}
= (pq)\overline{q}\ \overline{p}
= p\|q\|^2\overline{p}
= \|q\|^2p\overline{p}
= \|p\|^2\|q\|^2
単位四元数 p の逆元 p^{-1} は、p^{-1} = \overline{p}
証明
四元数 p の逆元 p^{-1} は、\frac{\overline{p}}{\|p\|^2} 単位四元数なので、\|p\| = 1 より、p^{-1} = \overline{p}