単位行列、たとえば3行x3列の単位行列を作るときにどうしますか?
3 3$1 0 0 0 1 0 0 0 1 0 0 0 1
と書くのを読んだことがあります。
これは$(ドルマーク、シェイプ)の左で指定したシェイプに右側の数列が入れられていって、不足分は繰り返されるというルールによります。
すこし実験です。
2 3$1 0 0 0 1 0 0 0 1 0 3 3$1 1 1 1 1 1 1 1 1 1 3 3$0 0 0 1 0 0 0 1 0 0 0 1 0 i.3 3 0 1 2 3 4 5 6 7 8
最後の例から単位行列を作れないかと試行錯誤していたら、=(イコール)でできました。
=i.3 3 1 0 0 0 1 0 0 0 1 =3 3$1 2 3 4 5 1 0 0 0 1 0 0 0 1 =3 3$1 2 3 1 1 1 =1 2 3 1 0 0 0 1 0 0 0 1 3 3$1 2 3 1 2 3 1 2 3 1 2 3 =1 2 3 3 2 1 3 2 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 ~.1 2 3 3 2 1 3 2 1 1 2 3
むむ。ことばで説明するのはむずかしいかもしれない。
1 2 3という数列の例を説明します。
1 2 3に単項動詞の=(イコール)を作用させると、数列の要素のリストを縦軸として、数列自体を横軸としたマトリックスが生成されます。マトリックスは縦軸と横軸の値が同じときに1(真)、違うときに0(偽)となり、結果として3 x 3の単位行列になります。
=i.3 3が同様に3 x 3の単位行列になるのは、=(イコール)の右側引数が(0 1 2) (3 4 5) (6 7 8)という3つの要素からなる配列であり、1 2 3という数列の場合と同じになるからです。
ということは、=i.3が正解かな?
=i.3 1 0 0 0 1 0 0 0 1 =i.4 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 =i.5 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1
これで好きなだけ単位行列を作ることができる。
以上