第14回 四元数の行列表現

オンデマンドで受講する場合は、本題に入る前に必ず連絡の動画を見てください。

四元数の積の行列表現

概要

動画の解説を参照

四元数は
\(\boldsymbol{q}=(s, x, y, z)\)
のように略記できますが、これを行ベクトルとして扱うこともできます。すると、\(\boldsymbol{q}\) の転置行列は
\(\boldsymbol{q}^T= \begin{pmatrix} s\\x\\y\\z \end{pmatrix} \)
のような列ベクトルになります。この書き方では、第13回の公式(5)はこのようになります。
\((\boldsymbol{q}_1\boldsymbol{q}_2)^T = \begin{pmatrix} s_1s_2-x_1x_2-y_1y_2-z_1z_2\\ s_1x_2+s_2x_1+y_1z_2-z_1y_2\\ s_1y_2+s_2y_1+z_1x_2-x_1z_2\\ s_1z_2+s_2z_1+x_1y_2-y_1x_2 \end{pmatrix} \)
この右辺は
\( \begin{pmatrix} s_1& -x_1& -y_1& -z_1\\ x_1& s_1& -z_1& y_1\\ y_1& z_1& s_1& -x_1\\ z_1& -y_1& x_1& s_1 \end{pmatrix} \begin{pmatrix} s_2\\ x_2\\ y_2\\ z_2 \end{pmatrix}\cdots(1) \)
と等しく、
\( \begin{pmatrix} s_2& -x_2& -y_2& -z_2\\ x_2& s_2& z_2& -y_2\\ y_2& -z_2& s_2& x_2\\ z_2& y_2& -x_2& s_2 \end{pmatrix} \begin{pmatrix} s_1\\ x_1\\ y_1\\ z_1 \end{pmatrix}\cdots(2) \)
とも等しくなります。
(1)式の左側の行列は \(\boldsymbol{q}_1\) の成分を並べて作れるので、\(\boldsymbol{Q}_L(\boldsymbol{q}_1)\)
(2)式の左側の行列は \(\boldsymbol{q}_2\) の成分を並べて作れるので、\(\boldsymbol{Q}_R(\boldsymbol{q}_2)\)
と書くことにすると、
\((\boldsymbol{q}_1\boldsymbol{q}_2)^T=\boldsymbol{Q}_L(\boldsymbol{q}_1)\boldsymbol{q}_2^T\)
\((\boldsymbol{q}_1\boldsymbol{q}_2)^T=\boldsymbol{Q}_R(\boldsymbol{q}_2)\boldsymbol{q}_1^T\)
となります。一般化すると、四元数を行列で表現しているときは
\( \boldsymbol{Q}_L(\boldsymbol{q})= \begin{pmatrix} s& -x& -y& -z\\ x& s& -z& y\\ y& z& s& -x\\ z& -y& x& s \end{pmatrix}\cdots(3) \)
を左から別の四元数の列ベクトルにかけることは「左から \(\boldsymbol{q}\) をかける」という四元数の演算にあたります。

同様に、
\( \boldsymbol{Q}_R(\boldsymbol{q})= \begin{pmatrix} s& -x& -y& -z\\ x& s& z& -y\\ y& -z& s& x\\ z& y& -x& s \end{pmatrix}\cdots(4) \)
を左から別の四元数の列ベクトルにかけることは「右から \(\boldsymbol{q}\) をかける」という四元数の演算にあたります。

課題1

※ 準備 : 学籍番号を入れて「入力」をクリック (タップ) してください。


\(\boldsymbol{q}\) の場合の \(\boldsymbol{Q}_L(\boldsymbol{q})\) を求めてください。

課題1解説

課題2

課題1の \(\boldsymbol{q}\) について、\(\boldsymbol{Q}_R(\boldsymbol{q})\) を求めてください。

課題2解説

行列表現での回転

概要

動画の解説を参照

前回、回転を表すことを確認した
\(\boldsymbol{p}'=\boldsymbol{q}\boldsymbol{p}\boldsymbol{q}^{-1}\)
の変換を、行列を使って表してみましょう。
これは、\(\boldsymbol{p}\) に「左から \(\boldsymbol{q}\) をかける」と「右から \(\boldsymbol{q}^{-1}\) をかける」という2つの演算にあたります。
行列をつくるのに必要な4つの成分を明示するとこのようになります。
\(\boldsymbol{q}=(s, v_x, v_y, v_z)\)
\(\boldsymbol{q}^{-1}=(s, -v_x, -v_y, -v_z)\)
これを(3)式に入れると「左から \(\boldsymbol{q}\) をかける」行列は
\( \boldsymbol{Q}_L(\boldsymbol{q})= \begin{pmatrix} s&-v_x&-v_y&-v_z\\ v_x&s&-v_z&v_y\\ v_y&v_z&s&-v_x\\ v_z&-v_y&v_x&s\\ \end{pmatrix} \)
同様に(4)式から「右から \(\boldsymbol{q}^{-1}\) をかける」行列は
\(\boldsymbol{Q}_R(\boldsymbol{q}^{-1})= \begin{pmatrix} s&v_x&v_y&v_z\\ -v_x&s&-v_z&v_y\\ -v_y&v_z&s&-v_x\\ -v_z&-v_y&v_x&s\\ \end{pmatrix} \)
となります。 その結果、「\(\boldsymbol{q}\) を左からかける」のあとで「\(\boldsymbol{q}^{-1}\) を右からかける」を行う行列は
\( \begin{eqnarray} \boldsymbol{Q}(\boldsymbol{q})&\equiv&\boldsymbol{Q}_R(\boldsymbol{q}^{-1})\boldsymbol{Q}_L(\boldsymbol{q})\\ &=& \begin{pmatrix} s&v_x&v_y&v_z\\ -v_x&s&-v_z&v_y\\ -v_y&v_z&s&-v_x\\ -v_z&-v_y&v_x&s\\ \end{pmatrix} \begin{pmatrix} s&-v_x&-v_y&-v_z\\ v_x&s&-v_z&v_y\\ v_y&v_z&s&-v_x\\ v_z&-v_y&v_x&s\\ \end{pmatrix}\\ &=& \begin{pmatrix} 1&0&0&0\\ 0&s^2+v_x^2-v_y^2-v_z^2&2v_xv_y-2sv_z&2v_zv_x+2sv_y\\ 0&2v_xv_y+2sv_z&s^2+v_x^2+v_y^2-v_z^2&2v_yv_z-2sv_x\\ 0&2v_zv_x-2sv_y&2v_yv_z+2sv_x&s^2-v_x^2-v_y^2+v_z^2 \end{pmatrix}\cdots(5) \end{eqnarray} \)
となります (左上の成分は \(s^2+v_x^2+v_y^2+v_z^2\) で、\(\boldsymbol{q}\) が単位四元数なので1になります)。
前回見たように、\(\boldsymbol{q}\) が単位四元数の場合は角度 \(\theta\) と単位ベクトル \(\boldsymbol{n}\) を使って
\(\boldsymbol{q} = (\cos(\theta/2), \sin(\theta/2)\boldsymbol{n})\)
の形で表せます (\(\boldsymbol{Q}(\boldsymbol{q})\) も間接的に \(\theta\) と \(\boldsymbol{n}\) で決まるので、 \(\boldsymbol{Q}(\boldsymbol{n}, \theta)\) と書けます)。
これらを使って \(\boldsymbol{q}\) の4つの成分を書くと
\( \begin{eqnarray} s &=& \cos(\theta/2)\\ v_x &=& n_x\sin(\theta/2)\\ v_y &=& n_y\sin(\theta/2)\\ v_z &=& n_z\sin(\theta/2) \end{eqnarray}\)
となります。この形を使うと、(5)の\(ii\)成分は
\( \begin{eqnarray} &&s^2+v_x^2-v_y^2-v_z^2\\ &=&\cos^2(\theta/2)+(n_x^2-n_y^2-n_z^2)\sin^2(\theta/2)\\ &=&\cos^2(\theta/2)+(2n_x^2-1)\sin^2(\theta/2)\\ &=&\cos^2(\theta/2)-\sin^2(\theta/2)+2n_x^2\sin^2(\theta/2)\\ &=&\cos\theta+n_x^2(1-\cos\theta) \end{eqnarray}\)
となります。\(jj\), \(kk\) 成分も同様です。
\(ij\)成分は
\( \begin{eqnarray} &&2v_xv_y-2sv_z\\ &=&2n_xn_y\sin^2(\theta/2)-2n_z\cos(\theta/2)\sin(\theta/2)\\ &=&n_xn_y(1-\cos\theta)-n_z\sin\theta \end{eqnarray}\)
となります。これ以外の5つの非対角成分も同様です。
こうしてすべての成分を書き換えると (5)式はこのようになります。
\( \boldsymbol{Q}(\boldsymbol{n}, \theta) = \begin{pmatrix} 1&0&0&0\\ 0& \cos\theta+n_x^2(1-\cos\theta)& n_xn_y(1-\cos\theta)-n_z\sin\theta& n_zn_x(1-\cos\theta)+n_y\sin\theta\\ 0& n_xn_y(1-\cos\theta)+n_z\sin\theta& \cos\theta+n_y^2(1-\cos\theta)& n_yn_z(1-\cos\theta)-n_x\sin\theta\\ 0& n_zn_x(1-\cos\theta)-n_y\sin\theta& n_yn_z(1-\cos\theta)+n_x\sin\theta& \cos\theta+n_z^2(1-\cos\theta) \end{pmatrix}\cdots(6) \)

この授業の中では解説しませんが、前回見たロドリゲスの回転公式からも同様の結果を導くことができます。
興味がある人はこちらを参照してください。

課題3

\(\boldsymbol{n}\) の場合の \(\boldsymbol{Q}(\boldsymbol{n}, \theta)\) を求めてください。
計算過程も書いてください。

課題3解説

※ \(\boldsymbol{Q}(\boldsymbol{n}, \theta)\) の \(\boldsymbol{n}\) はベクトルなので太字です。間違える人が多いので注意してください。
※ \(n_x, n_y, n_z\) はベクトルの成分であり、ベクトルではありません。 太字にすると誤りになります。これも間違える人が多いので注意してください。

課題

課題解答