プログラムな日常>ウェブプログラム作品集>
非正方行列の「行列式?」
('determinant?' for non-square matrices)
content of a matrix
dimension
standard point of shift
zero (no shift)
center of vertices
first vertex
standard point
shifted matrix
'absolute determinant' of shifted matrix
candidates of figure
coeff.(select except 'zero' to go further)
=
area or volume
使い方:
三角形(S=1)
平行四辺形(S=2)
四面体(v=10)
三角柱(v=10)
八面体(v=36)
平行六面体(v=30)
平行六面体(隣り合わない4点のみ)(v=30)

解説:

正方行列以外でも、行列式はあるのだろうか?

行列式とは、行でも列でも良い、ベクトルのそれぞれが、どれだけ方向に独自性を持っていて、 かつ値が大きいかという尺度である。 行列式がゼロでない値を取るには、ベクトルは正則、すなわち完全一次独立でないといけない。 空間の次元より多いベクトルを押し込めると、一次独立にはならないから、行列式があったとしても ゼロのはずで、意味がない。

では、空間の次元より少ないベクトルではどうか? 2次元で言うと、2×2行列の2つの行によるベクトルから平行四辺形を作ると、その面積が 行列式の値になる。3次元なら平行六面体の体積だ。 ここで、3次元空間の中でも原点からの位置ベクトルを2本だけ置けば、平行四辺形は一意に作れ、 その面積は決まっている。それなら、正方行列(空間の次元とベクトルの数が同じ)でなくても 行列式はあるのではないかとちょっと思える。

しかし、ここで問題になるのは符合だ。行列式が与えるのはあくまで符合を持った面積や体積 だから、符合のない実体とは相いれない。 例えば、3時を指す時計の短針は、長針に対して「時計回り」の位置関係にある。しかしこれは、 あくまで時計を2次元の世界に留めているから言えることだ。文字盤を取り出し、裏返して嵌め直すなら、 その位置関係は逆になる(それでも文字や針が透けて見えればの話だが)。我々の体だって4次元以上の 世界に一度取り出して戻せば、左右逆になるのかも知れない(ちょっと気持ち悪いが)。

そういうわけで、そもそも符合を前提とする行列式は、非正方行列についてはあり得ないが、 行列式の2乗(それは常に非負だ)に相当するものは考え得る。すでに名前があるかどうかは知らないが、 それを平方根にしておくと、行列式との整合性もあって扱いやすいので、これを「絶対行列式」(「拡張行列式」と最初考えたが、2/17 訂正)と仮に名付けておく。 それは、次のように求められる。縦長の i 行 j 列(i ≧ j)の行列 A に対して、「絶対行列式」 f は

   

左肩の t は転置を表す。A が正方行列だとこれは通常の行列式 の絶対値(2/17 訂正)に等しい。

次に、横長の i 行 j 列(i ≦ j)の行列 B に対して、「絶対行列式」g は

   

と定義できる。これも、B が正方行列であれば、先の f と等しく、通常の行列式の絶対値に等しい。

それで、そんなものにどういう利用価値があるのかだが、空間図形に結びつけられた特定の点、(例えば中心(重心)でも良いし、 頂点の内の一つ、辺の内分点や面の中心など)から見た、各頂点の座標セットを行列として、 「絶対行列式」を算出し、図形の種類(と、前記特定の点の選び方) 毎に決まっている係数を掛けると、それら図形の面積や体積が得られる。 2次元なら、正多角形とそのアフィン変換(一般の三角形、平行四辺形含む)などの面積。 3次元なら、正多面体とそのアフィン変換(一般の四面体、平行六面体含む)、 三角柱や、平行四辺形の錐などの体積が対象になる(軸が傾いていても良い)。 ただし、平行四辺形の錐の場合は、頂点の全てが対等なわけではなく、三角柱では、頂点は対等でも、辺、面に 種類があることは基準点を選ぶ際に意識すべきである。 台形などでは正確ではないものの、歪み(長方形からのずれ)が小さい場合に中心付近の点を規準にすれば、 悪くない近似値が得られる。FEM に活用できるかも。

さて、今回のプログラムですが、1月27日にご紹介したソースコードのテキストそのものを、 今度はプログラムとして参照しています。こういう手法は、今後使えるかも。また、この時の 行列式高速計算の考えですが、古い参考書を見返したら見つけたので、同日の記事に追伸しています。