DOSEIの日記

技術メモ+日常ログ

Geometric Algebra for Computer Science の 2章あたりまでのまとめ

要するに、 GA (geometric algebra) っていうのは、非退化のクリフォード代数、つまりグレード付きベクトル空間の幾何学的解釈といえる。らしい。まぁ、難しいことはいいんだけど、普通の GA の本は、難しいところからスタートするので難しいんだな (トートロジー)。一応書いておくと、この代数での積、 geometric product (= Clifford product) が本質的で、普通の幾何で使われるドット積(内積)やクロス積 (いわゆる外積) はこの積で表せちゃうぜへへん、というところまで見通せるのが、第一部 (〜8章) の目的である。

この本の最初の対象は、部分空間の幾何学である。つまり、ベクトル空間の部分空間を幾何学的対象ととらえる、そんな制限された幾何学だけを考える。というのはつまり、原点を通過する線とか面とかしか出てこない (ほかにないだろうと思う人もいるだろうが、一般に n 次元線形空間を考えている)。しかも、2章ではまず、メトリック (要するに内積の計算方法。つまりは距離の測り方) が定義されない空間で、何ができるか考える。もちろん何ができるかといえば、重なってる空間同士の、大きさの比が測れる、ということがわかる。
部分空間を表す方法として、複数のベクトルをウェッジ ∧ でつないであらわし、外積 (outer product) という。3次元で、直交方向を求める外積 (クロス積) とは違うものだけど、関係なくはない。というか、クロス積よりも使い勝手がある。で、この外積によってつながれたベクトルが張る部分空間には、もともとのベクトルによって与えられる大きさがあるものと考える。このとき、向きが符号で区別できるようにという考えのもと、 a∧b = −b∧a と定義する。
さて、全く重なっている者同士なら比が計算できる。ただ、計量がないので、ベクトルの長さは幾つとは言えないけどね。これらは、外積の数によって、 bivector やら trivector と呼ぶが、一般に n-vector と書く。
そうそう、注意しないといけないのは、 "n vectors" と "n-vectors" は意味が違う。前者は n 本の 1-vector だ。
さて、外積の表す意味と、二つのベクトルの張る部分空間は、同じでない。たとえば、 a, b の張る部分空間は、 a = b の時、 1 次元部分空間だが、 a∧a は 0 次元部分空間である。
メトリックなしでほかにできることは、ベクトルを共有していて、姿勢の違う2つの bivector の足し算など。
k 個の vector外積は (英語で書くと "outer product of k vectors" で、 k-vector と空目するから気を付けて!)、 k-blade と呼ぶ (ハイフン注意)。この k は grade という (紛らわしいね)。 step という人 (文脈) もある。次元って言ってもいいはずなんだけど、次元は今考えてるベクトル空間の次元を指すことにすると混乱しない。 n 次元ベクトル空間では、高々 n 次元部分空間しか考えられないので、最大の grade が次元だ。
さて、数学的には、 k-vector線形空間 kRn の元であると言える。当然、 k-blade はこの空間の元である。この空間、たとえば grade 2 で考えると、 2-blade を適当な基底 e1, e2, e3 で展開すると、 αe1∧e2 + βe2∧e3 + γe3∧e1 みたいに展開できることがわかる。つまり、各項は基底の k-blade の線形和。
さて、実は一般にはすべての元が k-blade ではないのである。え?そうなの?って、10分考えても反例が思いつかないと思うが、実は、 3 次元空間では 0,1,2,3-vector はすべて 0,1,2,3-blade なのである。つまり、適当に作っても、定義を逆にたどって、必ず k 個のベクトルの外積で書き直せるのである。が、実は、4次元以上だとできない。たとえば、 e1∧e2 + e3∧e4 は、 2-blade の線形和だが、 2-blade に変形できない。したがって、 k-vector と k-blade の区別は大事である。この因数分解可能な性質をとらえて、 k-blade は simple k-vector と呼ぶこともある。なお、 k-vector が k-blade である必要十分条件は簡単には説明できないほど難しいらしいが、とりあえず既にとかれているらしい。一般に、0, 1, n−1, n-vector は blade である。なお、 k-blade でない k-vector がいらないわけではなく、幾何的な解釈を今後与えられる。同じ grade 同士の足し算を自由に行えるのがグレード付き代数と呼ばれているものである。
ついでに、 grade の混ざった和を考えた空間は Grassmann 代数 (外積代数) を構成する。この grade が混ざったものを multivector とよぶ (なんか混乱してきたね)。
というわけで、メトリックも使えない、全部の幾何対象が原点を通過しているという限られた世界だけど、かなりたくさん話が会った。最後に実際のプログラム例で、意外とこれだけでも使えるというのを見せてくれる。