行列の積

最近J言語(J Programming Language)というAPLの派生言語をかじっているのですが、ようやく行列の積にたどり着いたので、備忘です。

l×m行列Aとm×n行列Bの積はl×n行列となり、C=ABの(i,j)成分cijは、それぞれの要素の積の合計。
一般に、ABとBAは等しくならない。

wikipediaにある例をJで表すと次のようになります。

   ]a=:2 2$5 6 7 8
5 6
7 8
   ]b=:2 2$1 2 3 4
1 2
3 4
   ]ab=:a +/ . * b
23 34
31 46
   ]ba=:b +/ . * a
19 22
43 50

つまり、(+/ . *)というのが積(matrix product)です。

(+/ . *)は不思議な感じがしますが、J言語のVocabularyの「. Determinant • Dot Product」のところにいろいろ書いてあります。とりあえず理解不能なのでわかったら追記します。


以上