/* em.mac ver 0.1 * (C) Kenrou Adachi 2004/3 * 基本行列パッケージ */ /* P_{i,j} : 第i行(列)と第j(列)を入れ換える。 */ P(i, j, n) := block([I, A], I : ident(n), A : zeromatrix(n, n), A[i][i] : -1, A[j][j] : -1, A[i][j] : 1, A[j][i] : 1, I + A )$ /* P_i(a) : 第i行(列)を a倍する。 */ Q(a, i, n) := block([A], A : ident(n), A[i][i] : a, A )$ /* P_{i,j}(a) : 第i行(j列)に第j行(i列)の a倍を加える。 */ R(a, i, j, n) := block([I,A], I : ident(n), A : zeromatrix(n,n), A[i][j] : a, I + A )$ /* examples (C1) load("em.mac"); (D1) em.mac (C2) P(2,3,5); [ 1 0 0 0 0 ] [ ] [ 0 0 1 0 0 ] [ ] (D2) [ 0 1 0 0 0 ] [ ] [ 0 0 0 1 0 ] [ ] [ 0 0 0 0 1 ] (C3) Q(c, 3, 5); [ 1 0 0 0 0 ] [ ] [ 0 1 0 0 0 ] [ ] (D3) [ 0 0 c 0 0 ] [ ] [ 0 0 0 1 0 ] [ ] [ 0 0 0 0 1 ] (C4) R(-2, 2, 3, 5); [ 1 0 0 0 0 ] [ ] [ 0 1 - 2 0 0 ] [ ] (D4) [ 0 0 1 0 0 ] [ ] [ 0 0 0 1 0 ] [ ] [ 0 0 0 0 1 ] */