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

マルチベクトルの内積

前回、マルチベクトル(k-ベクトル)の内積の計算方法を取り上げました。

今回は直観的なイメージを書きます。

目次

多項式の展開

簡単な計算をします。


\begin{aligned}
&(ax+by)(cx+dy) \\
&=ac\,xx+ad\,xy+bc\,yx+bd\,yy \\
&=ac\,x^2+(ad+bc)\,xy+bd\,y^2
\end{aligned}

xy が交換する、つまり xy=yx に注目してください。xy のように異なる変数が交わる項をクロスタームと呼びます。

1-ベクトルの内積

内積と言えば次のようなベクトルの計算が思い浮かぶのではないでしょうか。


\left(\begin{matrix}a\\b\end{matrix}\right)
\cdot
\left(\begin{matrix}c\\d\end{matrix}\right)
=ac+bd

同じ計算を、基底ベクトル(正規直交基底)を使って代数的に計算します。


\begin{aligned}
&(a\,e_1+b\,e_2)⋅(c\,e_1+d\,e_2) \\
&=ac\,\underbrace{e_1⋅e_1}_1+ad\,\underbrace{e_1⋅e_2}_0+bc\,\underbrace{e_2⋅e_1}_0+bd\,\underbrace{e_2⋅e_2}_1 \\
&=ac+bd
\end{aligned}

展開の要領は最初の x,y による多項式と同じですが、展開後も基底は内積として結合していることに注意が必要です。

ロスタームが 0 になって消えます。同じ基底同士の内積が 1 になることから、結果として係数の積だけが残ります。ベクトルの計算では、基底やクロスタームを省略することで単純化していると見なせます。

内積は、同じ基底の係数を掛けて、それらを足しています。

それでは次の式はどうでしょうか。


\begin{aligned}
&(a\,e_2+b\,e_1)⋅(c\,e_2+d\,e_3) \\
&=ac\,\underbrace{e_2⋅e_2}_1+ad\,\underbrace{e_2⋅e_3}_0+bc\,\underbrace{e_1⋅e_2}_0+bd\,\underbrace{e_1⋅e_3}_0 \\
&=ac
\end{aligned}

e _ 1e _ 3 は片方にしかないため、同じ基底のペアが作れず消えます。

ベクトルで計算すると、成分 0 との積として消えます。


\left(\begin{matrix}b\\a\\0\end{matrix}\right)
\cdot
\left(\begin{matrix}0\\c\\d\end{matrix}\right)
=ac

基底を明示すれば (a\,e _ 2+b\,e _ 1) のように添え字の順序を変えて記述できますが、ベクトルでは順序が固定されています。

2-ベクトルの内積

2-ベクトルでも「内積は、同じ基底の係数を掛けて、それらを足す」という原則は同じです。


(a\,e_1∧e_2+b\,e_2∧e_3)⋅(c\,e_1∧e_2+d\,e_2∧e_3)=ac+bd

この結果から、2-ベクトルの基底の内積でも、同じなら 1、異なれば 0 と計算するのが妥当だと判断できます。


\begin{aligned}
&(a\,e_1∧e_2+b\,e_2∧e_3)⋅(c\,e_1∧e_2+d\,e_2∧e_3) \\
&=ac\,\underbrace{(e_1∧e_2)⋅(e_1∧e_2)}_1+ad\,\underbrace{(e_1∧e_2)⋅(e_2∧e_3)}_0 \\
&\quad+bc\,\underbrace{(e_2∧e_3)⋅(e_1∧e_2)}_0+bd\,\underbrace{(e_2∧e_3)⋅(e_2∧e_3)}_1 \\
&=ac+bd
\end{aligned}

2-ベクトルは面を表します。3次元では面と面が直交すれば内積が 0 になる様子がイメージできます。

基底の並びが異なる場合、反交換性によりマイナスとなります。


(e_1∧e_2)⋅(e_2∧e_1)=-(e_1∧e_2)⋅(e_1∧e_2)=-1

これを利用した計算例です。


\begin{aligned}
&(a\,e_1∧e_2+b\,e_2∧e_3)⋅(c\,e_3∧e_2+d\,e_1∧e_2) \\
&=ac\,\underbrace{(e_1∧e_2)⋅(e_3∧e_2)}_0+ad\,\underbrace{(e_1∧e_2)⋅(e_1∧e_2)}_1 \\
&\quad+bc\,\underbrace{(e_2∧e_3)⋅(e_3∧e_2)}_{-1}+bd\,\underbrace{(e_2∧e_3)⋅(e_1∧e_2)}_0 \\
&=ad-bc
\end{aligned}

k-ベクトルの内積の定義

このように組み合わせに応じて 1,-1,0 の値を返すように作られたのが、前回取り上げた内積の定義です。


\begin{aligned}
⟨α,β⟩
&=\det \left( ⟨α_i,β_j⟩ \right) \\
&=\det \left( \begin{matrix}
  ⟨α_1,β_1⟩&⋯&⟨α_1,β_k⟩ \\
  ⋮&⋱&⋮ \\
  ⟨α_k,β_1⟩&⋯&⟨α_k,β_k⟩
  \end{matrix} \right)
\end{aligned}

見た目は複雑ですが、素朴な発想からスタートしているような気がします。

※ 今回は内積⟨α,β⟩ ではなく α⋅β と表記しています。

擬ベクトル

2-ベクトルの基底の並べ方を決めればベクトルとして扱えます。

3次元では e _ 1,e _ 2,e _ 3 のホッジ双対として e _ 2∧e _ 3,\ e _ 3∧e _ 1,\ e _ 1∧e _ 2 と並べることが一般的で、擬ベクトルとなります。

先ほどの2つの例を擬ベクトルで計算します。


\begin{aligned}
&(a\,e_1∧e_2+b\,e_2∧e_3)⋅(c\,e_1∧e_2+d\,e_2∧e_3) \\
&\mapsto
\left(\begin{matrix}b\\0\\a\end{matrix}\right)
\cdot
\left(\begin{matrix}d\\0\\c\end{matrix}\right)
=bd+ac
\end{aligned}

\begin{aligned}
&(a\,e_1∧e_2+b\,e_2∧e_3)⋅(c\,e_3∧e_2+d\,e_1∧e_2) \\
&\mapsto
\left(\begin{matrix}b\\0\\a\end{matrix}\right)
\cdot
\left(\begin{matrix}-c\\0\\d\end{matrix}\right)
=-bc+ad
\end{aligned}

幾何積

幾何積で2-ベクトルを計算すると、内積が符号反転します。


\begin{aligned}
&(a\,e_1e_2+b\,e_2e_3)(c\,e_3e_2+d\,e_1e_2) \\
&=ac\,\underbrace{e_1e_2e_3e_2}_{-e_1e_3}+ad\,\underbrace{e_1e_2e_1e_2}_{-1} \\
&\quad+bc\,\underbrace{e_2e_3e_3e_2}_{1}+bd\,\underbrace{e_2e_3e_1e_2}_{-e_1e_3} \\
&=\underbrace{(-ad+bc)}_{\text{内積}}+\underbrace{(-ac-bd)e_1e_3}_{\text{外積}}
\end{aligned}

四元数

幾何積で2-ベクトルの内積が符号反転するのは四元数と対応します。

対応関係 i=e_3e_2,\ j=e_1e_3,\ k=e_2e_1 より:


\begin{aligned}
&(-ak-bi)(ci-dk) \\
&=-ac\,\underbrace{ki}_j+ad\,\underbrace{k^2}_{-1} \\
&\quad-bc\,\underbrace{i^2}_{-1}+bd\,\underbrace{ik}_{-j} \\
&=\underbrace{(-ad+bc)}_{\text{内積}}+\underbrace{(-ac-bd)j}_{\text{外積}}
\end{aligned}

計量

特殊相対性理論では内積は次のように計算します。


\left(\begin{matrix}t\\x\\y\\z\end{matrix}\right)
\cdot
\left(\begin{matrix}t'\\x'\\y'\\z'\end{matrix}\right)
=tt'-xx'-yy'-zz'

符号を抜き出して (+---) と表現します。この並べ方を西海岸規約と呼んだりします。

※ 符号を逆にした東海岸規約 (-+++) もあります。

代数的に表現します。基底は γ で表記します。


\begin{aligned}
&(tγ_0+xγ_1+yγ_2+zγ_3)⋅(t'γ_0+x'γ_1+y'γ_2+z'γ_3) \\
&=tt'\,\underbrace{γ_0⋅γ_0}_1+tx'\,\underbrace{γ_0⋅γ_1}_0+ty'\,\underbrace{γ_0⋅γ_2}_0+tz'\,\underbrace{γ_0⋅γ_3}_0 \\
&\quad+xt'\,\underbrace{γ_1⋅γ_0}_0+xx'\,\underbrace{γ_1⋅γ_1}_{-1}+xy'\,\underbrace{γ_1⋅γ_2}_0+xz'\,\underbrace{γ_1⋅γ_3}_0 \\
&\quad+yt'\,\underbrace{γ_2⋅γ_0}_0+yx'\,\underbrace{γ_2⋅γ_1}_0+yy'\,\underbrace{γ_2⋅γ_2}_{-1}+yz'\,\underbrace{γ_2⋅γ_3}_0 \\
&\quad+zt'\,\underbrace{γ_3⋅γ_0}_0+zx'\,\underbrace{γ_3⋅γ_1}_0+zy'\,\underbrace{γ_3⋅γ_2}_0+zz'\,\underbrace{γ_3⋅γ_3}_{-1} \\
&=tt'-xx'-yy'-zz'
\end{aligned}

基底の組み合わせごとの内積を計量と呼びます。計量を変えることで様々な空間が表現できます。

基底が直交していれば異なる基底の内積は 0 になります。クリフォード代数では同じ基底同士の幾何積は内積になるため、基底の2乗は計量を表します。


γ_0^2=1,\ γ_1^2=γ_2^2=γ_3^2=-1

マルチベクトルの計量

マルチベクトルの計量は、個々の計量を掛け合わせます。


\begin{aligned}
|γ_0∧γ_1|^2&=γ_0^2γ_1^2=1(-1)=-1 \\
|γ_1∧γ_2|^2&=γ_1^2γ_2^2=(-1)(-1)=1 \\
|γ_0∧γ_1∧γ_2|^2&=γ_0^2γ_1^2γ_2^2=1(-1)(-1)=1 \\
|γ_1∧γ_2∧γ_3|^2&=γ_1^2γ_2^2γ_3^2=(-1)(-1)(-1)=-1 \\
|γ_0∧γ_1∧γ_2∧γ_3|^2&=γ_0^2γ_1^2γ_2^2γ_3^2=1(-1)(-1)(-1)=-1
\end{aligned}

一般に、幾何積の2乗とは符号が一致しないので注意が必要です。


(γ_0γ_1)^2=γ_0γ_1γ_0γ_1=-γ_0^2γ_1^2=-1(-1)=1

内積

マルチベクトルの内積の計算例です。


\begin{aligned}
&(t\,γ_0∧γ_1+a\,γ_1∧γ_2)⋅(t'\,γ_0∧γ_1+a'\,γ_1∧γ_2) \\
&=tt'\,\underbrace{(γ_0∧γ_1)⋅(γ_0∧γ_1)}_{|γ_0|^2|γ_1|^2=-1}+ta'\,\underbrace{(γ_0∧γ_1)⋅(γ_1∧γ_2)}_0 \\
&\quad+at'\,\underbrace{(γ_1∧γ_2)⋅(γ_0∧γ_1)}_0+aa'\,\underbrace{(γ_1∧γ_2)⋅(γ_1∧γ_2)}_{|γ_1|^2|γ_2|^2=1} \\
&=-tt'+aa'
\end{aligned}

幾何積

幾何積で2-ベクトルを計算すると、内積が符号反転します。


\begin{aligned}
&(t\,γ_0γ_1+a\,γ_1γ_2)(t'\,γ_0γ_1+a'\,γ_1γ_2) \\
&=tt'\,\underbrace{γ_0γ_1γ_0γ_1}_1+ta'\,\underbrace{γ_0γ_1γ_1γ_2}_{-γ_0γ_2} \\
&\quad+at'\,\underbrace{γ_1γ_2γ_0γ_1}_{γ_0γ_2}+aa'\,\underbrace{γ_1γ_2γ_1γ_2}_{-1} \\
&=\underbrace{(tt'-aa')}_{\text{内積}}+\underbrace{(-ta'+at')γ_0γ_2}_{\text{外積}}
\end{aligned}

付録

本題とは直接関係ありませんが、参考事項を付記します。

余弦定理

代数的な内積の展開は次のような計算で使います。


|\vec{a}-\vec{b}|^2
=(\vec{a}-\vec{b})⋅(\vec{a}-\vec{b})
=|\vec{a}|^2-2\,\vec{a}⋅\vec{b}+|\vec{b}|^2

同じ計算を次のように表記することがあります。慣れないとき、クロスタームの内積に混乱した経験があります。


(\mathbf{a}-\mathbf{b})^2
=\mathbf{a}^2+\mathbf{b}^2-2\,\mathbf{a}⋅\mathbf{b}

※ 太字はベクトル、ベクトルの2乗は長さ(ノルム)の2乗

\mathbf{c}=\mathbf{a}-\mathbf{b} とします。


\mathbf{c}^2
=\mathbf{a}^2+\mathbf{b}^2-2\,\mathbf{a}⋅\mathbf{b}

ベクトルの長さの関係式にすれば、一般的な余弦定理の形になります。


c^2=a^2+b^2-2ab\cos\theta

積の比較

各種の積を比較します。

内積

最初の方で出て来た計算を再掲します。


\begin{aligned}
&(a\,e_1+b\,e_2)⋅(c\,e_1+d\,e_2) \\
&=ac\,\underbrace{e_1⋅e_1}_1+ad\,\underbrace{e_1⋅e_2}_0+bc\,\underbrace{e_2⋅e_1}_0+bd\,\underbrace{e_2⋅e_2}_1 \\
&=ac+bd
\end{aligned}

ロスタームが消えます。

外積

演算子外積(ウェッジ積)に変えて計算します。


\begin{aligned}
&(a\,e_1+b\,e_2)∧(c\,e_1+d\,e_2) \\
&=ac\,\underbrace{e_1∧e_1}_0+ad\,e_1∧e_2+bc\,\underbrace{e_2∧e_1}_{-e_1∧e_2}+bd\,\underbrace{e_2∧e_2}_0 \\
&=(ad-bc)\,e_1∧e_2
\end{aligned}

ロスタームだけが残ります。反交換性によりマイナスが現れます。

n 次元で 1-ベクトルの n 重の外積行列式に対応します。


\det\left(\begin{matrix}a&b\\c&d\end{matrix}\right)=ad-bc

幾何積

演算子を省略して幾何積で計算します。


\begin{aligned}
&(a\,e_1+b\,e_2)(c\,e_1+d\,e_2) \\
&=ac\,\underbrace{e_1^2}_1+ad\,e_1e_2+bc\,\underbrace{e_2e_1}_{-e_1e_2}+bd\,\underbrace{e_2^2}_1 \\
&=\underbrace{(ac+bd)}_{\text{内積}}+\underbrace{(ad-bc)\,e_1e_2}_{\text{外積}}
\end{aligned}

幾何積は内積外積を同時に計算します。内積外積とで消える項が異なるため、計算を重ねることができます。

複素数

複素共役を使うことで反交換性を模倣して、内積外積が求まります。


\begin{aligned}
&\overline{(a+bi)}(c+di) \\
&=(a-bi)(c+di) \\
&=ac+ad\,i-bc\,i-bd\underbrace{i^2}_{-1} \\
&=\underbrace{(ac+bd)}_{\text{内積}}+\underbrace{(ad-bc)\,i}_{\text{外積}}
\end{aligned}

四元数

複素数のように実部をベクトルの成分としては扱いません。反交換性があるため共役は不要です。内積が符号反転します。


\begin{aligned}
&(ai+bj)(ci+dj) \\
&=ac\underbrace{i^2}_{-1}+ad\underbrace{ij}_k+bc\underbrace{ji}_{-k}+bd\underbrace{j^2}_{-1} \\
&=\underbrace{-(ac+bd)}_{\text{内積}}+\underbrace{(ad-bc)\,k}_{\text{外積}}
\end{aligned}

対応関係 i=e_3e_2,\ j=e_1e_3,\ k=e_2e_1 によれば、四元数の積は2-ベクトルの幾何積に対応します。外積はグレードが変わらないため、ウェッジ積ではなくベクトル積に相当します。

双曲四元数

i ^ 2=j ^ 2=k ^ 2=1 と定義した四元数の変種です。


\begin{aligned}
&(ai+bj)(ci+dj) \\
&=ac\underbrace{i^2}_1+ad\underbrace{ij}_k+bc\underbrace{ji}_{-k}+bd\underbrace{j^2}_1 \\
&=\underbrace{(ac+bd)}_{\text{内積}}+\underbrace{(ad-bc)\,k}_{\text{外積}}
\end{aligned}

内積が符号反転しないので一見きれいですが、結合性が失われるため扱いにくい代数です。