【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

四元数によるベクトル三重積とヤコビ恒等式

四元数によってベクトル三重積の公式とヤコビ恒等式を導出します。

【2023.02.05】逆からたどる方法を追記しました。

目次

概要

実部がなく虚部だけの四元数を純虚四元数と呼びます。$a,b,c$ を純虚四元数とします。

\begin{aligned} a&=a_1i+a_2j+a_3k \\ b&=b_1i+b_2j+b_3k \\ c&=c_1i+c_2j+c_3k \end{aligned}

純虚四元数は 3 次元ベクトルと同一視できます。

a_1i+a_2j+a_3k \mapsto \begin{pmatrix}a_1 \\ a_2 \\ a_3\end{pmatrix}

純虚四元数の積は「外積内積」となります。

ab = a \times b - a \cdot b

ベクトル三重積の公式は外積内積に変換していると解釈できます。四元数で扱えそうです。(この記事を書いた動機)

a×(b×c)=(a⋅c)b-(a⋅b)c

しかし単純に計算すると結果を想定して項を補うことになります。そのため別のアプローチを試みます。

外積結合則を満たしません。結合則からのずれより、ヤコビ恒等式と呼ばれる関係式が得られます。

a×(b×c)-(a×b)×c=-b×(c×a) \\
∴a×(b×c)+b×(c×a)+c×(a×b)=0

ヤコビ恒等式を経由してベクトル三重積の公式が導出できます。

\begin{aligned} a×(b×c) &=-b×(c×a)-c×(a×b) \\ &=b×(a×c)-c×(a×b) \\ &=b(a⋅c)-c(a⋅b) \end{aligned}

四元数

今回の記事で必要となる四元数の知識を簡単にまとめます。

ベクトルには内積外積が定義されます。

\begin{aligned} \begin{pmatrix}a_1 \\ a_2 \\ a_3\end{pmatrix} \cdot \begin{pmatrix}b_1 \\ b_2 \\ b_3\end{pmatrix} &= a_1b_1+a_2b_2+a_3b_3 \\ \begin{pmatrix}a_1 \\ a_2 \\ a_3\end{pmatrix} \times \begin{pmatrix}b_1 \\ b_2 \\ b_3\end{pmatrix} &= \begin{pmatrix}a_2b_3-a_3b_2 \\ a_3b_1-a_1b_3 \\ a_1b_2-a_2b_1\end{pmatrix} \end{aligned}

これを純虚四元数の積と比較すれば、「外積内積」となることが分かります。

\begin{aligned} &(a_1i+a_2j+a_3k)(b_1i+b_2j+b_3k) \\ &=\underbrace{(a_2b_3-a_3b_2)i+(a_3b_1-a_1b_3)j+(a_1b_2-a_2b_1)k}_{\text{外積}} \\ &\quad-\underbrace{(a_1b_1+a_2b_2+a_3b_3)}_{\text{内積}} \end{aligned}

内積は交換しますが、外積は交換に対して符号が反転します。

\begin{aligned} a⋅b&=b⋅a \\ a×b&=-b×a \end{aligned}

純虚四元数の積を交換すれば、外積部分の符号が反転します。

\begin{aligned} ab&=a×b-a⋅b \\ ba&=b×a-b⋅a \\ &=-a×b-a⋅b \end{aligned}

$ab-ba$ は積のうち交換しない部分を抽出し、交換子と呼びます。$ab+ba$ は交換する部分を抽出し、反交換子と呼びます。

\begin{aligned} ab-ba&=2a×b \\ ab+ba&=-2a⋅b \end{aligned}

交換子と反交換子の係数を調整すれば、外積内積が得られます。内積の符号に注意してください。

\begin{aligned} a⋅b&=-\frac12(ab+ba) \\ a×b&=\frac12(ab-ba) \end{aligned}

ベクトル三重積

外積から内積への変形過程において、結果から逆算して項を補う個所があります。

それを避けるためまず逆からたどります。項を打ち消すため積の順序を入れ替えます。(赤字部分)

\begin{aligned}
&(a⋅c)b-(a⋅b)c \\
&=-\frac{(ac+ca)b-(ab+ba)\textcolor{red}c}2 \\
&=-\frac{(ac+ca)b-\textcolor{red}c(ab+ba)}2 \\
&=-\frac{acb\cancel{+cab}\cancel{-cab}-cba}2 \\
&=-\frac{a(cb)-(cb)a}2 \\
&=-\frac{a(c×b-c⋅b)-(c×b-c⋅b)a}2 \\
&=-\frac{a(c×b)\cancel{-a(c⋅b)}-(c×b)a\cancel{+(c⋅b)a}}2 \\
&=\frac{a(b×c)-(b×c)a}2 \\
&=a×(b×c) \\
\end{aligned}

※ ベクトルの成分には触れないで、積の構造を利用して変形しているのがポイントです。

この結果を利用して公式の順にたどります。途中で項を補う必要があります。(赤字部分)

\begin{aligned}
&a×(b×c) \\
&=\frac{a(b×c)-(b×c)a\textcolor{red}{+a(b⋅c)-a(b⋅c)}}2 \\
&=\frac{a(b×c-b⋅c)-(b×c-b⋅c)a}2 \\
&=\frac{a(bc)-(bc)a}2 \\
&=\frac{(ab)c-b(ca)\textcolor{red}{+(ba)c-b(ac)}}2 \\
&=\frac{(ab+ba)c-b(ca+ac)}2 \\
&=-(a⋅b)c+b(c⋅a) \\
&=(a⋅c)b-(a⋅b)c
\end{aligned}

四元数の積や内積の形に持ち込むため項を補っていますが、前者は分かりやすい形にまとめられます。

\begin{aligned}
a×(b×c)
&=\frac{a(b×c)-(b×c)a}2 \\
&=\frac{a(bc)-(bc)a}2
\end{aligned}

内積を補うことで四元数の積を構成しているため、単独で外積四元数の積に組み替えることはできません。

\begin{aligned} a(b×c)&≠a(bc) \\ (b×c)a&≠(bc)a \end{aligned}

結合子とヤコビ恒等式

四元数の積は結合則を満たします。

a(bc)=(ab)c

そのため括弧を省略して $abc$ と書くことができます。

ところが外積結合則を満たしません。

a×(b×c)≠(a×b)×c

左辺と右辺の差は結合則からのずれを表し、結合子と呼びます。計算して確認します。

\begin{aligned}
&a×(b×c)-(a×b)×c \\
&=\frac{a(bc)-(bc)a}2-\frac{(ab)c-c(ab)}2 \\
&=\frac{\cancel{abc}-bca\cancel{-abc}+cab}2 \\
&=\frac{-b(ca)+(ca)b}2 \\
&=-b×(c×a) \\
\end{aligned}

結果を整理すれば、ヤコビ恒等式と呼ばれる関係式が得られます。

a×(b×c)-(a×b)×c=-b×(c×a) \\
∴a×(b×c)+b×(c×a)+c×(a×b)=0

ベクトル三重積とヤコビ恒等式

ヤコビ恒等式を経由してベクトル三重積の公式を導出します。右辺に現れる 2 つのベクトル三重積を色分けして、一部の項を交換して内積を構成する様子を示します。

\begin{aligned}
&a×(b×c) \\
&=-\textcolor{red}{b×(c×a)}-\textcolor{blue}{c×(a×b)} \\
&=-\frac{\textcolor{red}{b(c×a)-(c×a)b}\textcolor{blue}{+c(a×b)-(a×b)c}}2 \\
&=-\frac{\textcolor{red}{b(ca-ac)-(ca-ac)b}\textcolor{blue}{+c(ab-ba)-(ab-ba)c}}4 \\
&=-\frac{\textcolor{red}{bca-bac-cab+acb}\textcolor{blue}{+cab-cba-abc+bac}}4 \\
&=-\frac{\textcolor{red}{b(ca)}\textcolor{blue}{+b(ac)+(ca)b}\textcolor{red}{+(ac)b-c(ab)}\textcolor{blue}{-c(ba)-(ab)c}\textcolor{red}{-(ba)c}}4 \\
&=-\frac{b(\textcolor{red}{ca}+\textcolor{blue}{ac})+(\textcolor{blue}{ca}+\textcolor{red}{ac})b-c(\textcolor{red}{ab}+\textcolor{blue}{ba})-(\textcolor{blue}{ab}+\textcolor{red}{ba})c}4 \\
&=\frac{b(c⋅a)+(c⋅a)b-c(a⋅b)-(a⋅b)c}2 \\
&=(a⋅c)b-(a⋅b)c
\end{aligned}

計算過程を単純化すれば、ヤコビ恒等式とベクトル三重積の公式の類似性が見て取れます。2 行目の 2 つのベクトル三重積の中心に $a$ が来ることに注目します。(赤字部分)

\begin{aligned} a×(b×c) &=-b×(c×a)-c×(a×b) \\ &=b×(\textcolor{red}a×c)-c×(\textcolor{red}a×b) \\ &=b(a⋅c)-c(a⋅b) \end{aligned}

※ 2 つのベクトル三重積の間で項を交換することで内積を構成しているため、単独で内積に組み替えることはできません。

\begin{aligned} b×(a×c)&≠b(a⋅c) \\ c×(a×b)&≠c(a⋅b) \end{aligned}

関連記事

四元数で 3 次元の回転公式を計算するのにベクトル三重積を使用します。

今回の前半部分をクリフォード代数で書き直した記事です。