genmatrix ..... 配列を用いて行列を定義する関数

書式

genmatrix(h[i, j], m, n)

で用い、h[i, j] を成分とする m×n 行列を生成する。例えば行列

                             [ 1  2  3 ]
                             [         ]
                             [ 4  5  6 ]
                             [         ]
                             [ 7  8  9 ]
を生成したいとしよう。この行列の 1 列目 1, 4, 7 は「初項 1、公差 3 の等差数列」だから、1 + 3*(i-1) = 3*i - 2 と表され、各行 (1, 2, 3)、(4, 5, 6)、(7, 8, 9) は「初項 3*i - 2、公差 1 の等差数列」である。従って、一般項は 3*i - 2 + 1*(j-1) と表されるから、
(%i1) h[i,j]:=3*i-2+j-1;

(%o1)                 f     := 3 i - 2 + j - 1
                       i, j


(%i2) genmatrix(h,3,3);

                             [ 1  2  3 ]
                             [         ]
(%o2)                        [ 4  5  6 ]
                             [         ]
                             [ 7  8  9 ]
のようにして定義出来る。上記の場合、1 行 1 列からスタートして、3 行 3 列まで i、j を変化させて行列を生成している。

関数 genmatrix は、書式

genmatrix(h[i, j], m, n, m', n')

により、スタート地点(m' 行 n' 列)と終了地点(m 行 n 列)同時に指定することもできる。

(%i3) genmatrix(f,3,3,1,1);

                             [ 1  2  3 ]
                             [         ]
(%o3)                        [ 4  5  6 ]
                             [         ]
                             [ 7  8  9 ]


(%i4) genmatrix(f,3,3,1,2);

                              [ 2  3 ]
                              [      ]
(%o4)                         [ 5  6 ]
                              [      ]
                              [ 8  9 ]


(%i5) genmatrix(f,3,3,2,1);

                             [ 4  5  6 ]
(%o5)                        [         ]
                             [ 7  8  9 ]
なお、m' = n' のときは n' を省略することが出来る。
(%i6) genmatrix(f,3,3,2);

                              [ 5  6 ]
(%o6)                         [      ]
                              [ 8  9 ]