3つのベクトルの張る体積

平行四辺形の面積

まず, 2つのベクトル(ベクトルを横に書く悪習は辞めましょう)
{\mathbf x} = \left(\begin{array}{c} x_1\\x_2\end{array}\right),\quad {\mathbf y} = \left(\begin{array}{c}y_1\\y_2\end{array}\right)
が張る平行四辺形の面積Sを考えよう. 小学生でも習うこの公式
S = (底辺) × (高さ)
を思い出そう. 底辺を{\mathbf y}とすると, これに対する高さは
\left|{\mathbf x}\right| \left|\sin \theta\right|
となる. ここで, \theta\mathbf x\mathbf yがなす角である. すると, 面積S
S=\left|{\mathbf x}\right|\left|{\mathbf y}\right|\left|\sin\theta\right|
となる. ここで, 我々は内積というものを知っているとする. つまり,
{\mathbf x}\cdot {\mathbf y} = \left|{\mathbf x}\right|\left|{\mathbf y}\right|\cos\theta
より
S=\sqrt{{\left|{\mathbf x}\right|}^2{\left|{\mathbf y}\right|}^2 - {({\mathbf x}\cdot {\mathbf y})}^2}
となる. 成分で計算すると
\begin{eqnarray}S&=&\sqrt{(x_1^2 + x_2^2)(y_1^2 + y_2^2) - {(x_1y_1 + x_2y_2)}^2} \\&=&\sqrt{x_1^2y_2^2 + x_2^2y_1^2 - 2x_1x_2y_1y_2} \\&=&\left|x_1y_2-x_2y_1\right|\end{eqnarray}
となる.

さて, 絶対値が気持ち悪い. 絶対値を書かなければいけない原因は, \sin\thetaが負になっても無理やり「高さ」を正にしていたからだ. そこで, 絶対値を外して
S=x_1y_2-x_2y_1
と書くことにしよう. このSは, \mathbf x, \mathbf yについて反対称となっており, \mathbf xから\mathbf yへ角が0\le \theta \le \piであるときに正となる. これを符号付きの面積という. 例えば
{\mathbf x} = \left(\begin{array}{c}1\\0\end{array}\right),\quad {\mathbf y} = \left(\begin{array}{c}0 \\ 1 \end{array}\right)
を入れると正になり, 逆に入れると負になることを確認すると良い.

平行四辺形の面積 - 行列式

さて, 先ほどの
S=x_1y_2-x_2y_1
は, 2×2の行列式として書けることにすぐ気がつく.
S= \det \left(\begin{array}{cc}x_1&x_2\\y_1&y_2\end{array}\right)
このように書いておくとすっきりする. それだけではなく, 符号付きの面積の性質, 例えば双線形性や反対称性などが行列式の性質と対応していることが分かり, 面積の性質についての定理を証明するときに, 「線形代数の定理より」という言葉を使うことが出来る.

平行四辺形の面積 - 外積

更に, 3次元空間内の\mathbf a, \mathbf bが張る平行四辺形の面積を考えよう.
{\mathbf a} = \left(\begin{array}{c} a_1\\a_2\\a_3\end{array}\right),\quad {\mathbf b} = \left(\begin{array}{c} b_1\\b_2\\b_3\end{array}\right)
成分を計算する前の式を思い出すと
\left| S \right|=\sqrt{{\left|{\mathbf a}\right|}^2{\left|{\mathbf b}\right|}^2 - {({\mathbf a}\cdot {\mathbf b})}^2}
この式は, 三次元でも使うことができ, 成分で計算すると
\begin{eqnarray}\left| S \right|&=&\sqrt{(a_1^2 + a_2^2 + a_3^2)(b_1^2 + b_2^2 + b_3^2) - {(a_1b_1 + a_2b_2 + a_3b_3)}^2} \\&=&\sqrt{ a_1^2b_2^2 + a_1^2b_3^2 + a_2^2b_1^2 + a_2^2b_3^2 + a_3^2b_1^2 + a_3^2b_2^2 - 2 a_1a_2b_1b_2 - 2 a_1a_3b_1b_3 - 2 a_2a_3b_2b_3 } \\&=& \sqrt{{(a_1b_2-a_2b_1)}^2 + {(a_2b_3-a_3b_2)}^2 + {(a_3b_1-a_1b_3)}^2} \end{eqnarray}
となる. これは, とある3次元ベクトルの長さと捉えることが出来る.
\left| S \right| = \left|\left(\begin{array}{c} a_2b_3-a_3b_2\\ a_3b_1-a_1b_3\\ a_1b_2-a_2b_1\end{array} \right)\right|
更に, 各成分は行列式として書くことができ,
\left| S \right| = \left|\left(\begin{array}{c} \det\left(\begin{array}{cc}a_2&a_3\\b_2&b_3\end{array}\right)\\ \det\left(\begin{array}{cc}a_3&a_1\\b_3&b_1\end{array}\right)\\ \det\left(\begin{array}{cc}a_1&a_2\\b_1&b_2\end{array}\right) \end{array} \right)\right|
となる. 二次元空間での結果は, この式にa_3 = b_3 = 0を代入すれば得られることが分かるだろう. 更に, 一行目に基底を並べて
\left| S \right| = \left|\det\left(\begin{array}{ccc} {\mathbf e}_1&{\mathbf e}_2&{\mathbf e}_3\\a_1&a_2&a_3\\b_1&b_2&b_3\end{array}\right)\right|
とも書ける. 実はこのベクトルのことを外積といい, \mathbf a \times \mathbf bで表記される.
\left| S \right| = \left| {\mathbf a} \times {\mathbf b} \right|

外積というのはベクトルで, 大きさは平行四辺形の面積である. 更に,
\left( {\mathbf a} \times {\mathbf b} \right) \cdot {\mathbf a} = \left( {\mathbf a} \times {\mathbf b} \right) \cdot {\mathbf b} = 0
であることは, 行列式の性質からすぐ分かる(同じ行が2つあると0である).
\left(\begin{array}{ccc} {\mathbf e}_1&{\mathbf e}_2&{\mathbf e}_3\\a_1&a_2&a_3\\b_1&b_2&b_3\end{array}\right) \cdot {\mathbf a} = \left(\begin{array}{ccc} a_1&a_2&a_3\\a_1&a_2&a_3\\b_1&b_2&b_3\end{array}\right) = 0
よって外積 {\mathbf a} \times {\mathbf b} は, \mathbf aとも\mathbf bとも直交し, 長さがこれらの張る平行四辺形の面積であるような, そんなベクトルなのである. 方向は\mathbf aから\mathbf bに回る正の方向である.

平行六面体の体積 - スカラー三重積

次の3つのベクトルが張る平行六面体の体積Vを考えよう.
{\mathbf a} = \left(\begin{array}{c}a_1\\a_2\\a_3\end{array}\right),\quad {\mathbf b} = \left(\begin{array}{c}b_1\\b_2\\b_3\end{array}\right),\quad {\mathbf c} = \left(\begin{array}{c}c_1\\c_2\\c_3\end{array}\right)
やはり小学生でも知っている
V = (底面積) × (高さ)
で体積は計算できる. まず底面積は, これまで見てきたように
 \left|{\mathbf b} \times {\mathbf c}\right|
である. 高さは
\left|{\mathbf a}\right| \left|\cos \theta\right|
で計算できる. ただし, \theta\mathbf a {\mathbf b} \times {\mathbf c} のなす角である. 従って体積は
V = \left|{\mathbf b} \times {\mathbf c}\right| \left|{\mathbf a}\right| \left|\cos \theta\right|
となるが, これはまさに内積である. よって
V = \left| {\mathbf a} \cdot \left({\mathbf b} \times {\mathbf c}\right)\right|
となる.

さて, やはり絶対値が邪魔である. 絶対値の原因は, \cos\thetaの符号であった. 仮に
V = {\mathbf a} \cdot \left({\mathbf b} \times {\mathbf c}\right)
と書いてみよう. これは,  {\mathbf b} \times {\mathbf c} の方向と, (底面に対して)同じ方向に\mathbf aが向いているときに正となる, そういう符号付きの体積となる. そもそも体積が正に限るなんて, 角度を正に限るくらいに視野の狭い考えである.

実は, ここで得られた符号付き体積(煩わしいのでこれからは符号付きとはわざわざ言わないが)の値は, \mathbf a, \mathbf b, \mathbf cをサイクリックに取り替えても変わらない.
V = {\mathbf a} \cdot \left({\mathbf b} \times {\mathbf c}\right) = {\mathbf b} \cdot \left({\mathbf c} \times {\mathbf a}\right) = {\mathbf c} \cdot \left({\mathbf a} \times {\mathbf b}\right)
更に, 2つのベクトルを入れ替えると符号が変わる, すなわち反対称となっている. この値をスカラー三重積という.

スカラー三重積は, その中のある2つが同じベクトルなら0になるのだが, それは張られる体積が0であり, 或いはサイクリックに回して{\mathbf a} \times {\mathbf a} = {\mathbf 0}となることなどから理解できる.

平行六面体の体積 - 行列式

外積は, ある一行が基底であるような行列式として書くことができた.
 {\mathbf b} \times {\mathbf c} = \det\left(\begin{array}{ccc} {\mathbf e}_1&{\mathbf e}_2&{\mathbf e}_3\\b_1&b_2&b_3\\c_1&c_2&c_3\end{array}\right)
これを用いると, スカラー三重積は次のように計算できる.
V = {\mathbf a} \cdot \det \left(\begin{array}{ccc} {\mathbf e}_1&{\mathbf e}_2&{\mathbf e}_3\\b_1&b_2&b_3\\c_1&c_2&c_3\end{array}\right) = \det\left(\begin{array}{ccc} a_1&a_2&a_3\\b_1&b_2&b_3\\c_1&c_2&c_3\end{array}\right)
なんと, 3つのベクトルが張る平行六面体の体積は成分を並べた3×3の行列式として計算できるのだ ここで, 2つのベクトルが張る平行四辺形の符号付き面積が次の式で表せることを思い出そう.
S= \det \left(\begin{array}{cc}x_1&x_2\\y_1&y_2\end{array}\right)
これらはなんと美しい式ではないか!

思い返せばSVも反対称性があったが, それは行列式のある行と別の行を入れ替えると符号が反転するということと対応しているのだ.

レヴィ・チヴィタ記号

アインシュタインの記法とレヴィ・チヴィタ記号を用いると, ベクトルの世界の成分計算は大いに楽になる. レヴィ・チヴィタ記号というのは,
\varepsilon_{i_1, i_2, \dots, i_n} = \begin{cases} 1 & \text{$(i_1, i_2, \dots, i_n)$ is an even permutation of $(1, 2, \dots, n)$} \\ - 1 & \text{$(i_1, i_2, \dots, i_n)$ is an odd permutation of $(1, 2, \dots, n)$} \\ 0 & \text{otherwise}\end{cases}
で定義されるものである. これを用いると外積(の成分)が
{\left({\mathbf a} \times {\mathbf b}\right)}_i = \varepsilon_{ijk} a^jb^k
と書ける. 慣習上の理由により, ここだけは成分を上付き添字で書くことにする(何乗とかではない). スカラー三重積は
V = \varepsilon_{ijk}a^i b^j c^k
と書くことが出来る. もはやノートを三行もムダにすること無く書けるのだ.

ではSもこういうふうに書きたいと思うのだが, 単純に
S = \varepsilon_{ij}x^iy^j
とすれば良い. 置換(i, j)が置換(1, 2)の偶置換, これはそのものしか無く, 奇置換なら(2, 1)だけで, 結局
S = x^1y^2 - x^2y^1
となる.

行列式の各成分の符号をレヴィ・チヴィタ記号に押し付け, \sumを書くのが面倒だからアインシュタインの記法を持ちだしただけなのだが, これによって符号付きの体積の性質はレヴィ・チヴィタの記号に押し付けられる. 反対称性の理由付けには, 行列式の中でベクトルの列がごっそり入れ替わるのような大層なことよりも, レヴィ・チヴィタの記号の性質(互換を掛けると偶奇が入れ替わる)という方が, より明確であろう.

平行六面体の体積 - 四元数

思考をベクトルに限るのは我々の良くない癖で, いつまでもベクトルの中で考えていては物事は先に進まない. 次のステップに行くための手がかりはいくつかあるが, ここでは四元数を考えよう.

四元数とは
{\mathbb H} = \left\{x_0 + i x_1 + j x_2 + k x_3 : x_l \in {\mathbb R}\right\}
に, 和と, 実数倍を定義したベクトル空間で,
i^2 = j^2 = k^2 = ijk = -1
と, i, j, kの反対称性(と閉包)
\begin{eqnarray} ij &=& - ji = k\\ jk &=& - kj = i\\ ki &=& - ik = j \end{eqnarray}
によって双線形な積を入れた空間である.

さて, 次のように三次元のベクトルと四元数に対応させよう.
\begin{eqnarray}{\mathbf a} &=& \left(\begin{array}{c}a_1\\a_2\\a_3\end{array}\right) \quad \leftrightarrow \quad \alpha &=& ia_1 + ja_2 + ka_3 \\ {\mathbf b} &=& \left(\begin{array}{c}b_1\\b_2\\b_3\end{array}\right) \quad \leftrightarrow \quad \beta &=& ib_1 + jb_2 + kb_3 \\ {\mathbf c} &=& \left(\begin{array}{c}c_1\\c_2\\c_3\end{array}\right) \quad \leftrightarrow \quad \gamma &=& ic_1 + jc_2 + kc_3 \end{eqnarray}

更に, 四元数を一つの実数と一つのベクトルの組として表記することもある.
x_0 + i x_1 + j x_2 + k x_3 = \left(x_0, \left(\begin{array}{c} x_1 \\ x_2 \\ x_3 \end{array} \right)\right)
これを用いると, ベクトル{\mathbf a}から四元数\alphaを対応させる方法を, 次のように書くことができる.
\alpha = (0, {\mathbf a})

計算の練習に, \beta\gammaの積を計算しよう.
\begin{eqnarray} \beta \gamma &=& (ib_1 + jb_2 + kb_3) (ic_1 + jc_2 + kc_3) \\ &=& - (b_1 c_1 + b_2 c_2 + b_3 c_3) + i(b_2 c_3 - b_3 c_2) + j(b_3 c_1 - b_1 c_3) + k(b_1 c_2 - b_2 c_1) \\ &=& \left(- {\mathbf b} \cdot {\mathbf c} , {{\mathbf b} \times {\mathbf c}} \right) \end{eqnarray}
なんと, 四元数の積は内積外積によって書くことが出来るのだ.
\left(0, {\mathbf b}\right) \left(0, {\mathbf c}\right) = \left(- {\mathbf b} \cdot {\mathbf c} , {{\mathbf b} \times {\mathbf c}} \right)
では更に\alphaを左から掛けてみよう.
\begin{eqnarray}\alpha(\beta \gamma) &=& \left(0, {\mathbf a}\right) \left(-{\mathbf b} \cdot {\mathbf c} , {{\mathbf b} \times {\mathbf c}}\right) \\ &=& \left( - {\mathbf a} \cdot \left({\mathbf b} \times {\mathbf c}\right) , - ({\mathbf b} \cdot {\mathbf c}) {\mathbf a} + {{\mathbf a} \times\left({\mathbf b} \times {\mathbf c}\right)}\right)\end{eqnarray}
なんと, スカラー三重積が出てきた(ベクトル三重積が見える人は, それをばらすと良い). ここで
\mathrm{Re} (x_0 + i x_1 + j x_2 + k x_3) = x_0
で実数部分を定義すると, \mathbf a, \mathbf b, \mathbf cが張る平行六面体の体積は
V = - \mathrm{Re} \left[\alpha(\beta \gamma)\right]
となり, 四元数は積の結合律が成り立つので
V = - \mathrm{Re} \left(\alpha\beta\gamma\right)
と書くことが出来る. 体積Vというのは, まずベクトルを四元数にしてから掛けあわせた時の, 実数部分を取り出して正負を逆にしたものだったのだ.

まとめ

行列式だけだったらだれでも知ってる話なのでこんな記事を書こうとは思わなかっただけで, 四元数で遊んでいた時に, 四元数を3つ掛けた時の実数部分がスカラー三重積になってることに気がついたことが, この記事を書く動機付けとなった. 行列式, 更にレヴィ・チヴィタ記号による表記は, ある意味では短くていいのだが, 符号がどうなるとかなにやらごたごたしている気がするのだ. 四元数の最も重要な性質はi, j, kの積の反対称性なのだが, これはレヴィ・チヴィタ記号と対応し, しかも結合律が成り立つという素晴らしい積が入っている. ごたごたを積構造に組み込んだ, こんな便利なものを使わない手は無いのである.

反対称反対称と連呼しておいて, テから始まるあの四文字の言葉を言わないのは奇妙に思えるかもしれないが, それは自分がアレをきちんと分かったレベルになっていないからである.

ちょいと自明な場合を確認しておこう.
{\mathbf a} = \left(\begin{array}{c}1\\0\\0\end{array}\right),\quad {\mathbf b} = \left(\begin{array}{c}0\\1\\0\end{array}\right),\quad {\mathbf c} = \left(\begin{array}{c}0\\0\\1\end{array}\right)
が張るのは, 1辺1の立方体なので体積は1となる. これは次のように計算できる.
V = \det\left(\begin{array}{ccc} 1&0&0 \\0&1&0\\0&0&1\end{array}\right) = 1
V = \varepsilon_{ijk}\delta^i_1 \delta^j_2 \delta^k_3 = \varepsilon_{123} = 1
V = - \mathrm{Re} (ijk) = - (-1) = 1
めでたしめでたし. イイハナシダナー.