二重四元数

数学における**二重四元数**（にじゅうしげんすう、）または**双対四元数**（そうついしげんすう）とは、四元数と二重数のテンソル積と同型な8次元の実数体上の多元環である。したがって、係数として実数の代わりに二重数を使用することを除いて、四元数と同じ方法で構成できる。二重四元数は  の形で表すことができる。ここで、*A* と *B* は通常の四元数であり、*ε* は  を満たし、代数のすべての要素と可換な二重数単位である。
四元数とは異なり、二重四元数は可除多元環を形成しない。

力学において、二重四元数は3次元のを表す数として適用される。二重四元数の空間は8次元であり、剛体変換は6つの実自由度（並進3つ、回転3つ）を持つため、この応用では2つの代数的制約に従う二重四元数が使用される。単位四元数は2つの代数的制約を受けるため、剛体変換を表すには単位四元数が標準的である。

3次元空間での回転を単位長の四元数で表せるのと同様に、3次元空間での剛体運動は単位長の二重四元数で表すことができる。この事実は、理論的な運動学（McCarthyを参照）、および3次元コンピュータグラフィックス、ロボット工学、コンピュータビジョンへの応用で使用されている。（非ゼロの実ノルムを持つ）二重四元数によって与えられる係数を持つ多項式は、リンク機構設計の文脈でも使用されている。

## 歴史

ウィリアム・ローワン・ハミルトンは1843年に四元数を導入し、1873年までにウィリアム・キングドン・クリフォードは、彼が *biquaternions* と呼んだこれらの数の広範な一般化を得た。これは現在クリフォード代数と呼ばれているものの例である。

1898年、は二重四元数代数を生成するために Ω2 = 0 となる Ω を使用した。
しかしながら、彼の *octonions* という用語は定着しなかった。今日の八元数は別の代数であるためである。

1891年、はこの結合多元環が3次元空間の運動群を記述するのに理想的であることに気づいた。彼は1901年の *Geometrie der Dynamen* でこのアイデアをさらに発展させた。
B・L・ファン・デル・ヴェルデンはこの構造を「シュトゥーディの双四元数」と呼んだ。これはと呼ばれる3つの8次元代数のうちの1つである。

1895年、ロシアの数学者は、力学の研究で使用するために二重ベクトルと二重四元数を開発した。

## 演算規則
二重四元数での演算を記述するために、まず四元数を考えると役に立つ。

四元数は、基底要素 1, *i*, *j*, *k* の線形結合である。*i*, *j*, *k* に対するハミルトンの積の規則は、しばしば次のように書かれる。
:  i^2 = j^2 = k^2 = ijk = -1 .
 を計算して  を得、 または  を得る。ここで  なので、この積は  となることがわかる。これは四元数を行列式の性質に関連付ける。

四元数の積を扱う便利な方法は、四元数をスカラーとベクトル（厳密には）の和として書くことである。すなわち  である。ここで *a*0 は実数であり、 は3次元ベクトルである。ベクトルのドット積とクロス積の演算を使用して、 と  の四元数積を次のように定義できる。

:  G = AC = (a_0 + \mathbf{A})(c_0 + \mathbf{C}) = (a_0 c_0 - \mathbf{A}\cdot \mathbf{C}) + (c_0 \mathbf{A} + a_0 \mathbf{C} + \mathbf{A}\times\mathbf{C}).

二重四元数は通常、係数として二重数を持つ四元数として記述される。二重数は順序対  である。2つの二重数は成分ごとに加算され、規則  に従って乗算される。二重数はしばしば  の形で書かれる。ここで *ε* は *i*, *j*, *k* とであり、 の性質を持つ二重数単位である。

その結果、二重四元数は四元数の順序対  として書くことができる。2つの二重四元数は成分ごとに加算され、次の規則に従って乗算される。

:  \hat{A}\hat{C} = (A, B)(C, D) = (AC, AD+BC).
二重四元数を二重スカラーと二重ベクトルの和  として書くと便利である。ここで  であり、 はを定義する二重ベクトルである。この表記法により、2つの二重四元数の積を次のように書くことができる。

:  \hat{G} = \hat{A}\hat{C} = (\hat{a}_0 + \mathsf{A})(\hat{c}_0 + \mathsf{C}) = (\hat{a}_0 \hat{c}_0 - \mathsf{A}\cdot \mathsf{C}) + (\hat{c}_0 \mathsf{A} + \hat{a}_0 \mathsf{C} + \mathsf{A}\times\mathsf{C}).

### 加算
二重四元数の加算は成分ごとに定義される。 

:  \hat{A} = (A, B) = a_0 + a_1 i + a_2 j + a_3 k + b_0 \varepsilon + b_1 \varepsilon i + b_2 \varepsilon j + b_3 \varepsilon k, 
および
:  \hat{C} = (C, D) = c_0 + c_1 i + c_2 j + c_3 k + d_0 \varepsilon + d_1 \varepsilon i + d_2 \varepsilon j + d_3 \varepsilon k, 
が与えられたとき、

:  \hat{A} + \hat{C} = (A+C, B+D) = (a_0+c_0) + (a_1+c_1) i + (a_2+c_2) j + (a_3+c_3) k + (b_0+d_0) \varepsilon + (b_1+d_1) \varepsilon i + (b_2+d_2) \varepsilon j + (b_3+d_3) \varepsilon k. 

### 乗算
2つの二重四元数の乗算は、四元数単位 *i*, *j*, *k* の乗算規則と、二重数単位 *ε* による可換乗算から導かれる。特に、

:  \hat{A} = (A, B) = A + \varepsilon B, 
および
:  \hat{C} = (C, D) = C + \varepsilon D, 
が与えられたとき、

:  \hat{A}\hat{C} = (A + \varepsilon B)(C + \varepsilon D) = AC + \varepsilon (AD+BC).
二重数の定義が  を要求するため、*BD* の項がないことに注意せよ。

これにより、以下の乗積表が得られる（乗算順序は行×列であることに注意）。

### 共役

二重四元数の共役は、四元数の共役の拡張である。すなわち、
:  \hat{A}^* = (A^*, B^*) = A^* + \varepsilon B^*. \!

四元数と同様に、二重四元数の積  の共役は、逆順での共役の積となる。
:  \hat{G}^* = (\hat{A}\hat{C})^* = \hat{C}^*\hat{A}^*.

四元数のスカラー部とベクトル部、または二重四元数の二重スカラー部と二重ベクトル部を選択する関数 Sc(∗) と Vec(∗) を導入すると便利である。特に、 の場合、
:  \mbox{Sc}(\hat{A}) = \hat{a}_0, \mbox{Vec}(\hat{A}) = \mathsf{A}.
これにより、 の共役を次のように定義できる。
:  \hat{A}^* = \mbox{Sc}(\hat{A}) - \mbox{Vec}(\hat{A}).
または、 
:  (\hat{a}_0+\mathsf{A})^* = \hat{a}_0 - \mathsf{A}.

二重四元数とその共役の積は次のようになる。
: \hat{A}\hat{A}^* = (\hat{a}_0+\mathsf{A})(\hat{a}_0 - \mathsf{A}) = \hat{a}_0^2 + \mathsf{A}\cdot\mathsf{A}.
これは二重四元数の「大きさの二乗」である二重スカラーである。

### 二重数共役

二重四元数の2番目のタイプの共役は、二重数の共役をとることによって与えられる。
:  \overline{\hat{A}} = (A, -B) = A - \varepsilon B. \!

四元数共役と二重数共役を組み合わせて、3番目の形式の共役を与えることができる。
:  \overline{\hat{A}^*} = (A^*, -B^*) = A^* - \varepsilon B^*. \!

二重四元数の文脈では、「共役」という用語は、四元数共役、二重数共役、またはその両方を意味するために使用されることがある。

### ノルム
二重四元数  の*ノルム*は、共役を使用して  を計算することで求められる。これは二重四元数の*大きさ*と呼ばれる二重数である。 である二重四元数は*単位二重四元数*である。

大きさ1の二重四元数は、空間的なユークリッド変位を表すために使用される。 という要件は、*Â* の成分に2つの代数的制約を導入することに注意せよ。すなわち、
:  \hat{A}\hat{A}^* = (A, B)(A^*, B^*) = (AA^*, AB^* + BA^*) = (1, 0).

最初の制約   AA^* = 1 は A の大きさが 1 であることを意味し、2番目の制約 AB^* + BA^* = 0 は A と B が直交していることを意味する。

### 逆元
 が二重四元数であり、*p* がゼロでない場合、二重四元数の逆元は次のように与えられる。 
: *p*−1 (1 − *ε* *q* *p*−1).
したがって、部分空間  の要素は逆元を持たない。この部分空間は、環論においてイデアルと呼ばれる。これは二重数環の唯一の極大イデアルとなっている。

二重数環の可逆元は、イデアルに含まれない数で構成される。唯一の極大イデアルが存在するため、二重数は局所環を形成する。単数群はリー群であり、指数写像を使用して研究できる。二重四元数は、ユークリッドの運動群における変換を示すために使用されてきた。典型的な要素はとして書くことができる。

## 二重四元数と空間変位
2つの空間変位 *D<sub>B</sub>* = ([*R<sub>B</sub>*], **b**) と *D<sub>A</sub>* = ([*R<sub>A</sub>*], **a**) の合成 *D<sub>C</sub>* = *D<sub>B</sub>D<sub>A</sub>* の二重四元数定式化の利点は、結果の二重四元数が合成変位 *D<sub>C</sub>* のと二重角を直接与えることである。

一般に、空間変位 *D* = ([*A*],**d**) に関連付けられた二重四元数は、その *S* = (**S**,**V**) と二重角 (*φ*,*d*) から構成される。ここで *φ* は軸周りの回転、*d* は軸に沿ったスライドであり、変位 *D* を定義する。関連付けられた二重四元数は次のように与えられる。
:  \hat{S} = \cos\frac{\hat{\phi}}{2} + \sin\frac{\hat{\phi}}{2} \mathsf{S}. 

変位 DB と DA の合成を変位 *D**C* = *D**B**D**A* とする。*D**C* のスクリュー軸と二重角は、DA と DB の二重四元数の積から得られる。
: \hat{A}=\cos(\hat{\alpha}/2)+ \sin(\hat{\alpha}/2)\mathsf{A}\quad
\text{and}\quad \hat{B}=\cos(\hat{\beta}/2)+ \sin(\hat{\beta}/2)\mathsf{B}.
すなわち、合成変位 DC = DBDA は、次の関連付けられた二重四元数を持つ。
:  \hat{C}  = \cos\frac{\hat{\gamma}}{2}+\sin\frac{\hat{\gamma}}{2}\mathsf{C}
=
\left(\cos\frac{\hat{\beta}}{2}+\sin\frac{\hat{\beta}}{2}\mathsf{B}\right) \left(\cos\frac{\hat{\alpha}}{2}+
\sin\frac{\hat{\alpha}}{2}\mathsf{A}\right).


この積を展開して次を得る。
: 
\cos\frac{\hat{\gamma}}{2}+\sin\frac{\hat{\gamma}}{2} \mathsf{C} = 
\left(\cos\frac{\hat{\beta}}{2}\cos\frac{\hat{\alpha}}{2} - 
\sin\frac{\hat{\beta}}{2}\sin\frac{\hat{\alpha}}{2} \mathsf{B}\cdot \mathsf{A}\right) + \left(\sin\frac{\hat{\beta}}{2}\cos\frac{\hat{\alpha}}{2} \mathsf{B} + 
\sin\frac{\hat{\alpha}}{2}\cos\frac{\hat{\beta}}{2} \mathsf{A} + 
\sin\frac{\hat{\beta}}{2}\sin\frac{\hat{\alpha}}{2} \mathsf{B}\times \mathsf{A}\right).


この方程式の両辺を恒等式
:  \cos\frac{\hat{\gamma}}{2} = \cos\frac{\hat{\beta}}{2}\cos\frac{\hat{\alpha}}{2} - 
\sin\frac{\hat{\beta}}{2}\sin\frac{\hat{\alpha}}{2} \mathsf{B}\cdot \mathsf{A}
で割って次を得る。
:  \tan\frac{\hat{\gamma}}{2} \mathsf{C}  = \frac{\tan\frac{\hat{\beta}}{2}\mathsf{B} + 
\tan\frac{\hat{\alpha}}{2} \mathsf{A} + 
\tan\frac{\hat{\beta}}{2}\tan\frac{\hat{\alpha}}{2} \mathsf{B}\times \mathsf{A}}{1 - 
\tan\frac{\hat{\beta}}{2}\tan\frac{\hat{\alpha}}{2} \mathsf{B}\cdot \mathsf{A}}.


これは、2つの変位のスクリュー軸によって定義される合成変位のスクリュー軸に対するの公式である。彼は1840年にこの公式を導出した。

3つのスクリュー軸 A, B, C は空間三角形を形成し、この三角形の辺を形成する共通法線の間のこれら*頂点*での二重角は、3つの空間変位の二重角に直接関係している。

## 二重四元数積の行列表現
四元数積の行列表現は、行列代数を使用して四元数計算をプログラミングするのに便利である。これは二重四元数演算にも当てはまる。

四元数積 AC は、四元数 C の成分に対する演算子 A による線形変換であるため、C の成分から構成されるベクトルに作用する A の行列表現が存在する。

四元数  の成分をベクトル  として構成する。ここでは四元数のベクトル部の成分を先に、スカラー部を後に並べていることに注意せよ。これは任意の選択だが、この規則を選択したら、それに従わなければならない。

四元数積 *AC* は、行列積として次のように表すことができる。
:  
AC = [A^+] C =
\begin{bmatrix}
a_0 & A_3 & -A_2 & A_1 \\
-A_3 & a_0 & A_1 & A_2 \\
A_2 & -A_1 & a_0  & A_3 \\
-A_1 & -A_2 & -A_3 & a_0
\end{bmatrix}
\begin{Bmatrix} C_1 \\ C_2 \\ C_3 \\ c_0 \end{Bmatrix}.


積 AC は、A の成分に対する C による演算と見なすこともできる。その場合、次のようになる。
: 
AC = [C^-] A = \begin{bmatrix}
c_0 & -C_3 & C_2 & C_1 \\
C_3 & c_0 & -C_1 & C_2 \\
-C_2 & C_1 & c_0  & C_3 \\
-C_1 & -C_2 & -C_3 & c_0
\end{bmatrix}
\begin{Bmatrix} A_1 \\ A_2 \\ A_3 \\ a_0 \end{Bmatrix}.


二重四元数積 ÂĈ = (A, B)(C, D) = (AC, AD+BC) は、次のように行列演算として定式化できる。Ĉ の成分を8次元ベクトル Ĉ = (C1, C2, C3, c0, D1, D2, D3, d0) として構成すると、ÂĈ は 8x8 行列の積で与えられる。
: 
\hat{A}\hat{C} = [\hat{A}^+]\hat{C} = \begin{bmatrix} A^+ & 0 \\ B^+ & A^+ \end{bmatrix}\begin{Bmatrix} C \\ D\end{Bmatrix}.


四元数で見たように、積 ÂĈ は座標ベクトル Â に対する Ĉ の演算と見なすことができる。つまり、ÂĈ は次のように定式化することもできる。
: 
\hat{A}\hat{C} = [\hat{C}^-]\hat{A} = \begin{bmatrix} C^- & 0 \\ D^- & C^- \end{bmatrix}\begin{Bmatrix} A \\ B\end{Bmatrix}.


## 空間変位の詳細
変位 *D* = ([*A*], **d**) の二重四元数は、回転 [*A*] を定義する四元数 S = cos(*φ*/2) + sin(*φ*/2)**S** と、並進ベクトル **d** から構成される純虚四元数 *D* = *d*1*i* + *d*2*j* + *d*3*k* から構成できる。この表記法を使用すると、変位 *D* = ([*A*], **d**) の二重四元数は次のように与えられる。
:  \hat{S} = S + \varepsilon \frac{1}{2}DS. 

移動体内の点 **p** を通る方向 **x** の直線のプリュッカー座標と、点 **P** を通る方向 **X** の固定フレーム内の座標は次のように与えられる。
: \hat{x}=\mathbf{x} + \varepsilon \mathbf{p}\times\mathbf{x}\quad\text{and}\quad\hat{X}=\mathbf{X} + \varepsilon \mathbf{P}\times\mathbf{X}.
すると、この物体の変位の二重四元数は、次の式によって移動フレームのプリュッカー座標を固定フレームのプリュッカー座標に変換する。
: \hat{X} = \hat{S}\hat{x}\overline{\hat{S}^*}.

二重四元数積の行列表現を使用すると、これは次のようになる。
: \hat{X} =[\hat{S}^+][\hat{S}^-]^*\hat{x}.
この計算は行列演算を使用して容易に行える。

## 二重四元数と 4×4 同次変換
特に剛体運動において、単位二重四元数を同次変換行列として表すと役立つ場合がある。上記のように、二重四元数は \hat q = r + d\varepsilon r と書くことができる。ここで *r* と *d* は両方とも四元数である。*r* 四元数は実部または回転部として知られ、d 四元数は二重部または変位部として知られる。

回転部は次のように与えられる。
: r = r_w + r_xi + r_yj + r_zk = \cos \left( \frac{\theta}{2} \right) + \sin \left( \frac{\theta}{2} \right) \left( \vec{a} \cdot (i, j, k) \right)

ここで \theta は単位ベクトル \vec{a} で与えられる方向周りの回転角である。変位部は次のように書くことができる。
: d = 0 + \frac{\Delta x}{2}i + \frac{\Delta y}{2}j + \frac{\Delta z}{2}k.

3次元ベクトルの二重四元数等価物は
: \hat v := 1 + \varepsilon (v_x i + v_y j + v_z k)
であり、\hat q によるその変換は次のように与えられる。
: \hat{v}' = \hat q \cdot \hat v \cdot \overline{\hat q^*} .

これらの二重四元数（または実際には3次元ベクトル上のそれらの変換）は、同次変換行列によって表すことができる。
:  T = \begin{pmatrix}
1 & 0 & 0 & 0 &  \\
\Delta x  &   &   &  \\
\Delta y  &   & R &  \\
\Delta z  &   &   &  \\
\end{pmatrix}
ここで 3×3 直交行列は次のように与えられる。
: R =\begin{pmatrix}
r_w^2+r_x^2-r_y^2-r_z^2   & 2r_xr_y-2r_wr_z         & 2r_xr_z+2r_wr_y        \\
2r_xr_y+2r_wr_z           & r_w^2-r_x^2+r_y^2-r_z^2 & 2r_yr_z-2r_wr_x        \\
2r_xr_z-2r_wr_y           & 2r_yr_z+2r_wr_x         & r_w^2-r_x^2-r_y^2+r_z^2\\
\end{pmatrix}.

3次元ベクトル
:  v = \begin{pmatrix}
1 \\
v_x \\
v_y \\
v_z \\
\end{pmatrix}
に対して、*T* による変換は次のように与えられる。
: \vec{v}' =  T \cdot  \vec{v}

## クリフォード代数との関係
2種類のクリフォード代数である四元数と二重数のテンソル積であることに加え、二重四元数はクリフォード代数に関して他の2つの定式化を持つ。

第一に、二重四元数は、i^2 = j^2 = -1 および e^2 = 0 を満たす3つの反交換生成元 i, j, e によって生成されるクリフォード代数と同型である。k = ij および \varepsilon = ek を定義すると、二重四元数を定義する関係はこれらによって導かれ、逆もまた同様である。第二に、二重四元数は、以下を満たす4つの反交換生成元 e_1, e_2, e_3, e_4 によって生成されるクリフォード代数の偶部分代数と同型である。
: e_1 ^2 = e_2^2 = e_3^2 = -1, \,\, e_4^2 = 0.
詳細については、Clifford algebras: dual quaternions を参照。

## エポニム
とウィリアム・キングドン・クリフォードの両者が二重四元数を使用し、それについて書いたため、著者によっては二重四元数を "Study biquaternions" または "Clifford biquaternions" と呼ぶことがある。後者のエポニムはを指すためにも使用されている。クリフォードの支持者の見解については、以下にリンクされている Joe Rooney の記事を参照。クリフォードとシュトゥーディの主張には議論があるため、競合を避けるために現在の名称である*二重四元数*を使用するのが便利である。

## 脚注

## 関連項目
* 
* 
* 
* 
* 
* 

## 参考文献

* A.T. Yang (1963) *Application of quaternion algebra and dual numbers to the analysis of spatial mechanisms*, Ph.D thesis, Columbia University.
* A.T. Yang (1974) "Calculus of Screws" in *Basic Questions of Design Theory*, William R. Spillers, editor, Elsevier, pages 266 to 281.
* J.M. McCarthy (1990) *An Introduction to Theoretical Kinematics*, pp.&nbsp;62–5, MIT Press .
* L. Kavan, S. Collins, C. O'Sullivan, J. Zara (2006) ''Dual Quaternions for Rigid Transformation Blending'', Technical report, Trinity College Dublin.
* Joe Rooney [William Kingdon Clifford](http://oro.open.ac.uk/8455/01/chapter4(020507).pdf), Department of Design and Innovation, the Open University, London.
* Joe Rooney (2007) "William Kingdon Clifford", in Marco Ceccarelli, *Distinguished figures in mechanism and machine science*, Springer.
* Eduard Study (1891) "Von Bewegungen und Umlegung", Mathematische Annalen 39:520.

## 関連文献

* 
* 
* E. Pennestri & R. Stefanelli (2007)  Linear Algebra and Numerical Algorithms Using Dual Numbers, published in *Multibody System Dynamics* 18(3):323–349.
* E. Pennestri and P. P. Valentini, Dual Quaternions as a Tool for Rigid Body Motion Analysis: A Tutorial with an Application to Biomechanics, *ARCHIWUM BUDOWY MASZYN*, vol. 57, pp.&nbsp;187–205, 2010
* E. Pennestri and P. P. Valentini, Linear Dual Algebra Algorithms and their Application to Kinematics, *Multibody Dynamics*, October 2008, pp.&nbsp;207–229, 
* 
* D.P. Chevallier (1996) "On the transference principle in kinematics: its various forms and limitations", *Mechanism and Machine Theory* 31(1):57–76.
* M.A. Gungor (2009) "Dual Lorentzian spherical motions and dual Euler-Savary formulas", *European Journal of Mechanics A Solids* 28(4):820–6.
*  Translation in English by D.H. Delphenich.
*  Translation in English by D.H. Delphenich.

## 外部リンク
* Dual quaternion toolbox, a Matlab toolbox.
* DQrobotics: ロボットのモデリングと制御のために二重四元数を使用するスタンドアロン型オープンソースライブラリ。