はじめに

この記事では、四元数の指数・冪・対数関数が持つ特異点の取り扱い方法について紹介します。

四元数の表現

任意の値をとる四元数$( \tilde{q} $)を以下のように表現します。

$[ \begin{align*} \tilde{q} &= q_0 + \boldsymbol{q} \\ &= \| \tilde{q} \| \left \{ \cos{\Omega} + \frac{ \boldsymbol{q} }{ \| \boldsymbol{q} \| } \sin{\Omega} \right \} \end{align*} $]

ここで、式中の$( \Omega $)は $[ \Omega = \tan^{-1} \left( \frac{ \boldsymbol{q} }{\| \boldsymbol{q} \|} \right) $] ないし $[ \begin{equation*} \Omega = \left\{ \begin{alignedat}{2} +\sin^{-1} (\| \boldsymbol{q} \| / \| \tilde{q} \|) \quad (q_0 \geq 0) \\ -\sin^{-1} (\| \boldsymbol{q} \| / \| \tilde{q} \|) \quad (q_0 < 0) \end{alignedat} \right. \end{equation*} $] より求まります。

指数関数

まず指数関数について見ていきましょう。

ネイピア数$( e $)に対して、四元数の指数関数は

$[ \begin{align*} \exp(\tilde{q}) &= \exp(q_0 + \boldsymbol{q}) \\ &= \exp(q_0) \exp(\boldsymbol{q}) \\ &= e^{q_0} \left ( \cos{\| \boldsymbol{q} \|} + \frac{ \boldsymbol{q} }{\| \boldsymbol{q} \|} \sin{\| \boldsymbol{q} \|} \right ) \end{align*} $]

となります。しかし、この式をそのまま計算すると $( \| \boldsymbol{q} \| = 0 $)のときにゼロ除算が起きてしまいます。

そこで、以下のように定義されるsinc関数

$[ \mathrm{sinc}(x) := \frac{\sin x}{x} \quad (\text{ただし、} \mathrm{sinc}(0)=1 ) $]

を用いて

$[ \begin{align*} \exp(\tilde{q}) = e^{q_0} \left ( \cos{\| \boldsymbol{q} \|} + \boldsymbol{q} ~ \mathrm{sinc}{\| \boldsymbol{q} \|} \right ) \end{align*} $]

とします。先にも述べたようにsinc関数はsinc(0)=1ですから、上式の形ではゼロ除算が起きることはなく、もともとあった $( \| \boldsymbol{q} \| = 0 $)における特異点を除去できていることがわかります。

ちなみに、sinc関数は以下のような曲線を描きます。

sincカーブ

sinc関数の実装方法については過去の記事(『sinc関数の最良近似式を作る』)に書いてありますので、興味があればご覧ください。

冪関数

指数関数のときと同じ考え方を冪関数にも適用することができます。

四元数の冪は $[ \begin{align*} \tilde{q}^t = \| \tilde{q} \|^t \left \{ \cos(t \Omega) + \frac{ \boldsymbol{q} }{\| \boldsymbol{q} \|} \sin(t \Omega) \right \} \end{align*} $] と表されます。指数関数の場合と同様、この状態では $(\| \boldsymbol{q} \| = 0 $)に特異点を持っていますね。

ここで、 $( \| \boldsymbol{q} \| = \| \tilde{q} \| \sin \Omega $)の関係より $[ \begin{align*} \frac{ \boldsymbol{q} }{\| \boldsymbol{q} \|} \sin(t \Omega) = \frac{\boldsymbol{q}}{\| \tilde{q} \| \sin \Omega} \sin(t \Omega) \end{align*} $] と書くことができ、更に、sinc関数を使うため以下のように変形します。 $[ \begin{align*} \frac{ \boldsymbol{q} }{\| \boldsymbol{q} \|} \sin(t \Omega) = \boldsymbol{q} \frac{\Omega}{\| \tilde{q} \| \Omega \sin \Omega} \cdot \frac{t \Omega \sin(t \Omega)}{t \Omega} \end{align*} $] このような式変形を行うと、sinc関数を用いて $[ \begin{align*} \frac{ \boldsymbol{q} }{\| \boldsymbol{q} \|} \sin(t \Omega) = \boldsymbol{q} \frac{t \, \mathrm{sinc}(t \Omega)}{\| \tilde{q} \| \mathrm{sinc}(\Omega)} \end{align*} $] と表すことができます。最終的に、四元数$( \tilde{q} $)の冪は $[ \begin{align*} \tilde{q}^t = \| \tilde{q} \|^t \left \{ \cos(t \Omega) + \boldsymbol{q} \frac{t \, \mathrm{sinc}(t \Omega)}{\| \tilde{q} \| \mathrm{sinc}(\Omega)} \right \} \end{align*} $] となります。これで、冪関数における $(\| \boldsymbol{q} \| = 0$)の特異点を無くすことができました。

対数関数

指数関数、冪関数と来て、なんと対数関数にも同じ手が使えます。

四元数の対数関数は $[ \begin{align*} \ln (\tilde{q}) = \ln \| \tilde{q} \| + \frac{\boldsymbol{q}}{\| \boldsymbol{q} \|} \cos^{-1} \frac{q_0}{\| \tilde{q} \|} \end{align*} $] と表されます。ここで、 $[ \| \boldsymbol{q} \| = \| \tilde{q} \| \sin \Omega $] および $[ q_0 = \| \tilde{q} \| \cos \Omega $] の関係より、 $[ \begin{align*} \ln (\tilde{q}) &= \ln \| \tilde{q} \| + \frac{\boldsymbol{q}}{\| \tilde{q} \| \sin \Omega} \cos^{-1} \frac{\| \tilde{q} \| \cos \Omega}{\| \tilde{q} \|} \\ &= \ln \| \tilde{q} \| + \frac{\boldsymbol{q}}{\| \tilde{q} \| \sin \Omega} \Omega \\ &= \ln \| \tilde{q} \| + \frac{\boldsymbol{q}}{\| \tilde{q} \| \mathrm{sinc} (\Omega)} \end{align*} $] を得ます。

おわりに

以上のようにして、四元数の冪・指数・対数関数から $(\| \boldsymbol{q} \| = 0$)の場合の特異点を無くすことができました。

四元数の計算でsinc関数がここまで活躍するなんて驚きですね。