複素数と内積外積

アバター
ナムアニクラウド
記事: 16
登録日時: 14年前
住所: 茨城県

複素数と内積外積

投稿記事 by ナムアニクラウド » 14年前

 複素数の話です。数学苦手な人には難しいかも。ご注意ください。
GRAMさんにいろいろ指摘して頂いたので修正しました。

 複素平面を使うことで複素数がベクトルの振る舞いをすることが調べて分かったので、
複素数と内積・擬似外積の関係について調べていました。

複素平面についてはこちら。
► スポイラーを表示
 で、ベクトルの乗算を考えたとき、内積と擬似外積がそれに近いので、計算してみると、
ベクトルの内積:( a, b )・( c, d ) = ac + bd
ベクトルの擬似外積:( a, b )×( c, d ) = ad - bc
となります。
外積なんかは今の高校数学では習いませんが、当たり判定とかが得意な人は知ってるかも。
外積は2次元空間では定義されないので、今回は「擬似外積」というものを使います。

 で、複素数どうしの乗算をすると、以下のようになります。
( a + bi ) × ( c + di ) = ac + adi + bci - bd = ( ac - bd ) + ( ad + bc )i
なんだかよく分からない積になりました。おかしいな、と思って、試行錯誤。
( a + bi ) の方を共役な複素数である ( a - bi ) に変えてみると・・・
( a - bi ) × ( c + di ) = ( ac + bd ) + ( ad - bc )i

この ac + bd + ( ad - bc )i をベクトルの内積・外積と比べてみて分かることは、
ベクトル(a,b)とベクトル(c,d)に対して、
ac + bd は内積、ad - bcは擬似外積じゃないか!ということです。

 つまり、複素数x = (a+bi)に対して(a,b)をxベクトルと呼ぶことにすると、
複素数α,βに対してαの共役複素数をΑとすると、
Α×βは平面上のαベクトルとβベクトルに対して、実数部分が内積、虚数部分が擬似外積

ってわけです。

説明が足りなかったらコメントどうぞ。

 これ、当たり判定とか、何かに使えないかなー。
実際問題、内積と外積が同時に得られて特をするケースって少ないのでは?

・・・さすがにコレだけじゃダメか。
最後に編集したユーザー ナムアニクラウド on 2011年4月22日(金) 21:46 [ 編集 1 回目 ]

アバター
GRAM
記事: 164
登録日時: 14年前

RE: 複素数と内積外積

投稿記事 by GRAM » 14年前

えっと自分数学はそこまで得意ではないですし、正直複素平面とか見ると吐き気がしますが
いろいろと突っ込みたくなってしまったので、突っ込んじゃいます
まず外積についてですが、いくら多少便利だとはいえ、平面上での外積を勝手に定義することなどするべきではないでしょう。
外積とは「ベクトル積」ともいわれ、演算結果がベクトルであるということを期待されています。

擬似外積という言葉も何度か聴いたことがありますが、もっぱらよくわからないプログラミングに限った名称です。
あくまでも外積が定義できるのは「3次元(とあと高次でもいける次数がある)」であるということを抑えておいたほうがいいでしょう。
演算結果のad-bcはスカラーであるため外積にはなり得ません。決してです。用語の混同はものすごい誤解を生みます・・・

ではどう解釈するか。
ad-bcは「ベクトル(a,b)と、ベクトル(c,d)を90度回転させたベクトルとの内積」と解釈するべきです。
実質この考え方はうまくいきます。これは二つのベクトルが同一方向のとき演算結果が0になることも、
一方のベクトルがもう一方のベクトルのどちら側にあるのか判別できることも説明できます。

それから複素数のほうですが、
複素数の積の演算結果というのはそれそのものに「非常に重要な意味があります」(共役をとるまでもなく)
複素平面上の座標をr(cosθ+i*sinθ)で置き換えて積を取ることでその意味はわかるでしょう。
これはこのままでも十分に役に立ちますが、複素平面を4次元(虚数を二つ加える)に拡張することで3次元のプログラミング上非常に有益な結果が得られます。
内積と平行判定用の内積が二つ出てくることは面白い結果ですが、一方で演算回数は減っておらず
それがそのまま役に立つかといわれるとうーんとなります。
当然のことながら同じコストならば一度にいっぺんにしか計算できないのと、
2回に分けて別々のタイミングで必要な演算結果を得られるのでは後者のほうが柔軟性が高いからです。
もしももっと工夫を凝らして、2回に分けて計算するよりも必要な演算回数が減るようなあっと驚く計算方法があるのでしたら
それは役に立つかもしれないですね。

アバター
bitebloq
記事: 2
登録日時: 14年前

Re: 複素数と内積外積

投稿記事 by bitebloq » 14年前

読むだけ読みました。
bitebloq

アバター
ナムアニクラウド
記事: 16
登録日時: 14年前
住所: 茨城県

Re: 複素数と内積外積

投稿記事 by ナムアニクラウド » 14年前

 間違ってたり、つまんなかったりしたみたいですね。

 外積は三次元で定義されるっていうのはよく聞きます。もちろんそのとおりです。
自分は何かよく分からないソースに踊らされていたのかも。
「90度回転させたベクトルとの内積」っていう説明にはスッキリ納得いきました。

 ところでGRAMさんの言う通り、複素数同士を掛けることで座標の回転ができることが知られているそうですね。
e × e = ei(α+β)
を考えれば納得いきます。

 あと、四元数と3Dプログラミングの話・・・は、それこそ複雑そうで思考停止するのでやめときます --;
いろいろありがとうございました。

 しかし、うーん、悔しい!なんでもっと外積を調べなかったんだ自分!

アバター
GRAM
記事: 164
登録日時: 14年前

Re: 複素数と内積外積

投稿記事 by GRAM » 14年前

まぁなんというか、間違いとまでは言いませんけど初めて外積を学ぶような感じを受けたので、
もし誤解されているようなことがあったらそれはもったいないなぁとw
いやいや、高校では習わないようなことですし、そういうことまで学ぼうという姿勢は自分にはない素晴らしさですけども