ダイアゴナル

ダイアゴナルというのは斜め、という意味らしいですが、APL/J言語に/.(スラッシュドット、ダイアゴナル)という副詞があります。直前の動詞に作用して、動詞をマトリックスの斜めに作用させます。
Math for the Layman by Kenneth Iversonに次のような例が載っていました。

   diag=: /.
   c=: 1 2 1
   d=: 1 3 3 1
   t=: c */d
   t
1 3 3 1
2 6 6 2
1 3 3 1
   sum diag t
1 5 10 10 5 1

(1 2 1)とか(1 3 3 1)とか(1 5 10 10 5 1)とかどこかで見たことある数列だと思ったら、パスカルの三角形に出てきますね。(1 2 1)は2乗、(1 3 3 1)は3乗、(1 5 10 10 5 1)は5乗の係数です。(1 2 1)と(1 3 3 1)の掛け算マトリックスを斜めに足した結果が(1 5 10 10 5 1)でこれが2+3の合計の5乗の係数になっている。

   (1 2 1)&p. i.4
1 4 9 16
   ^&2 >:i.4
1 4 9 16
   (1 3 3 1)&p. i.4
1 8 27 64
   ^&3 >:i.4
1 8 27 64
   (1 5 10 10 5 1)&p.i.4
1 32 243 1024
   ^&5 >:i.4
1 32 243 1024

ということは(1 2 1)と(1 2 1)の掛け算マトリックスの結果は4乗の係数、(1 3 3 1)と(1 3 3 1)の掛け算マトリックスの結果は6乗の係数になるはずだ。やってみよう。

   (1 2 1)*/(1 2 1)
1 2 1
2 4 2
1 2 1
   sum diag (1 2 1)*/(1 2 1)
1 4 6 4 1
   (1 4 6 4 1)&p.i.4
1 16 81 256
   ^&4 >:i.4
1 16 81 256
   (1 3 3 1)*/(1 3 3 1)
1 3 3 1
3 9 9 3
3 9 9 3
1 3 3 1
   sum diag (1 3 3 1)*/(1 3 3 1)
1 6 15 20 15 6 1
   (1 6 15 20 15 6 1)&p.i.4
1 64 729 4096
   ^&6 >:i.4
1 64 729 4096

なりましたね。成功。

以上