miyayou先生の四元数などの数学理論講座

私がクォータニオンに関してつぶやいていたらmiyayou先生が色々と解説してくれたので。
34
三宅陽一郎MiyakeYouichiro @miyayou

四元数の背後にある考え方は体という考え方である。四元数は四元数体で、体というのは加算と乗算について閉じている集合である。閉じているというのは例えば四元数に四元数をかけても四元数、足し合わせても四元数になることである。掛け算(一つの演算)だけについて閉じている集合は群と呼ばれる。

2010-11-16 20:48:34
三宅陽一郎MiyakeYouichiro @miyayou

四元数体は、各要素が数であると同時に演算子である。これは複素数体とよく似ている。複素数は、数であると同時に演算子であり、複素数をかけることは、複素平面において回転と伸張を表す。

2010-11-16 20:50:35
三宅陽一郎MiyakeYouichiro @miyayou

例えば、i をかけることは、90度回転、-i をかけることはー90度回転、1+ i をかけることは、2倍に伸ばして45度回転することである。

2010-11-16 20:50:39
三宅陽一郎MiyakeYouichiro @miyayou

複素数体は、ある2次元行列が為す群と同型である。同型であるというのは、複素数から行列への演算を保存する射が存在すること、簡単に言うと、同じ演算系 F(a*b) = F(a)*F(b) が存在することで、実際、複素数をある歪対称な行列に射影すると全く同型の体が得られる。

2010-11-16 20:52:32
三宅陽一郎MiyakeYouichiro @miyayou

複素数体は可換な体である。即ちA*B = B*A が成りたつ。四元数体も複素数と同じように、ある行列表現を持ち、この体は非可換である。A*B と B*A は等しくない。では、他にもこのような体は存在するだろうか?存在する。しかし勝手に作れるわけではない。例えば三元数は存在するか?

2010-11-16 20:55:34
三宅陽一郎MiyakeYouichiro @miyayou

四元数はもともと、ハミルトンが光学系の問題を解くために発展させた方法と言われている(「数学を作った人々」より)。非可換代数体の典型であるが、その後、代数学の発展によって、このような非可換の系は多数発見された。

2010-11-16 20:57:06
三宅陽一郎MiyakeYouichiro @miyayou

四元数に対しては以上だが、途中出て来た群という考え方は非常に重要なので少し解説しておく。群というのは、一つの演算で閉じた集合である。一番ゲームで用いられているのは、回転群 O(3), O(4) である。回転群は、3次元空間でベクトルの長さを変化させずに回転させる演算である。

2010-11-16 21:00:17
三宅陽一郎MiyakeYouichiro @miyayou

回転行列に回転行列をかけても回転行列であり、回転行列には常に逆元が存在するので回転群である。3次元における回転群をO(3)と書く。回転群の行列表現が回転行列である。回転群が群であるということは、普段ライブラリの中で実装されているので、意識することはないが、背景には群の考え方がある

2010-11-16 21:02:57
三宅陽一郎MiyakeYouichiro @miyayou

任意の零でないベクトルを v として回転行列群の要素 o として o(v)の転置 o(v) をかけると、これは絶対値を保存するので、v と v の内積となる。

2010-11-16 21:13:14
三宅陽一郎MiyakeYouichiro @miyayou

転置(o(v))*o(v) = vの転置 * v 即ち、 転置(v) 転置(o) o v = v*v。即ち、 oと転置行列とoをかけると単位行列になる。O(3) の場合は簡単なので検算してみるとよい。

2010-11-16 21:14:31
三宅陽一郎MiyakeYouichiro @miyayou

このように行列や四元数の背後にある代数的背景を知っておくと、複雑な行列演算に惑わされずに、行列の性質を簡単に導くと同時に見通すことができるようになる。

2010-11-16 21:15:29
三宅陽一郎MiyakeYouichiro @miyayou

四元数も演算を追っていると複雑であるが、その背後にある代数的性質に着目すると見通しがよい場合も多いので、きっちりと四元数や回転群を理解したい方は、代数学を勉強するのもよいかもしれない。もちろん必ずしも必要ではなく、参考になれば幸いです(数学科の大学1~2回生の代数学の内容です)。

2010-11-16 21:18:51
三宅陽一郎MiyakeYouichiro @miyayou

@aizen76 うーん、参考になればいいんだけど、行列が書けないので、わかりにくかも。行列表現は、Wikipedia にも載っているので、そちらを参照すればよいです。

2010-11-16 21:21:07
三宅陽一郎MiyakeYouichiro @miyayou

(補足)例えば3次元回転行列のクラス型を プログラムで O3 と書くとします。 O3 a,b,c;としてa,b を定義して、c = MUL(a,b) と普通に書いてしまいますよね。回転行列同士をかけて回転行列になるというのを自明として使っています。

2010-11-16 21:28:07
三宅陽一郎MiyakeYouichiro @miyayou

(補足)この背後の考え方が群という考え方ですね。普段は、例えば、MUL というぎ行列の掛け算を演算する関数が、例えばDirectX にあるわけなので、返り値の型が決まっていたり、あるいは MUL(a,b,c)みたいに内部の型宣言で型が決めれているので意識しないで使えているわけです

2010-11-16 21:29:42
三宅陽一郎MiyakeYouichiro @miyayou

(補足)この議論はクオータニオンの演算においても全く同様ですね。クオータニオン同士をかけてもクオータニオンになることは、誰も疑わないし、そのようにライブラリの中で実装されているわけです。群や体を意識することは殆どないです。

2010-11-16 21:31:50
三宅陽一郎MiyakeYouichiro @miyayou

(補足)ところが、いざ自分で回転行列やクオータニオンを実装しようとすると、ちょっと待てよ、二つの回転行列をかけて回転行列になるのは自明だよね、と考えて実装するわけだけど、理論的背景は群論が保証していると言えます。

2010-11-16 21:33:15
三宅陽一郎MiyakeYouichiro @miyayou

(補足)ということで、必ずしもこういうことを知っておく必要はないけれど、知っておくと、安心度が増しますね。興味が湧いた人は群論や代数学の勉強をしてみると、面白い数学の世界が開けています。

2010-11-16 21:35:05
三宅陽一郎MiyakeYouichiro @miyayou

(補足)ちなみに群論は、もともと5次の代数方程式の解の公式を探求する過程で、17才のガロワによって発見された理論です。この理論を用いて、5次以上の代数方程式には解の公式が存在しないことが証明できます。

2010-11-16 21:36:57