APL/J言語:行列式(determinant)
このサイトを「行列式」で検索するとJ言語では-/ . *(マイナススラッシュスペースドットスペースアスタリスク)というフレーズで算出される話がなんどか出てきます。
行列式とは何かというと正方行列において定義された数値です。
n掛けるnの正方行列として、nが2ならば
ad - bcで定義されて、座標上の平行四辺形の面積です。
nが2だとaei - afh - bdi + bfg + cdh - cegで定義されて、座標上の平行6面体の体積のようです。
数字を入れてみないと腑に落ちないのでやってみました。
]a =: 2 2$ 1 3 3 1 1 3 3 1 (-/ . *) a _8 ]a =: 3 3$ _2 2 _3 _1 1 3 2 0 _1 _2 2 _3 _1 1 3 2 0 _1 (-/ . *) a 18
ちなみに+/ . *(プラススラッシュスペースドットスペースアスタリスク)は二項動詞として行列の積を算出します。+/ . *を単項動詞として使うと上記の行列式の定義のところのマイナスがプラスになった計算をします。この値は行列のpermanentと呼ばれるそうで名前までついているのですが、あまり用途がないようです。
これらの式の真ん中にあるドットは通常の動詞や副詞とは違う働きなので、単純に行列式と行列の積を作る記号、と覚えてしまった方がいいと思います。
いずれにしても行列を学ぶ際、行列式と行列の積の算出はめんどうな部分ですので、役に立つと思います。
という理解でよいか。