Before Macaulay2 can concatenate matrices, the matrices in question
must have entries in the same ring.
concatenate horizontally
Use
| to concatenate two matrices horizontally.
i1 : R = ZZ/32003[a..f];
|
i2 : M = genericMatrix(R,a,3,2)
o2 = | a d |
| b e |
| c f |
3 2
o2 : Matrix R <-- R
|
i3 : N = matrix{{d^2,a*d},{b*c,b*d},{a,c}}
o3 = | d2 ad |
| bc bd |
| a c |
3 2
o3 : Matrix R <-- R
|
i4 : M|N
o4 = | a d d2 ad |
| b e bc bd |
| c f a c |
3 4
o4 : Matrix R <-- R
|
concatenate vertically
Use
|| to concatenate two matrices vertically.
i5 : P = matrix{{d^2,a*d,e*f},{b*c,b*d,b*e},{a,c,d}}
o5 = | d2 ad ef |
| bc bd be |
| a c d |
3 3
o5 : Matrix R <-- R
|
i6 : transpose(M)||P
o6 = {-1} | a b c |
{-1} | d e f |
{0} | d2 ad ef |
{0} | bc bd be |
{0} | a c d |
5 3
o6 : Matrix R <-- R
|
making block matrices
The matrix function can take matrices as input as long as the sizes match up.
i7 : matrix{{id_(R^3),M,P},{random(R^1,R^3),random(R^1,R^3),random(R^1,R^2)}}
o7 = | 1 0 0 a d d2 ad ef |
| 0 1 0 b e bc bd be |
| 0 0 1 c f a c d |
| 107 4376 -5570 3187 3783 -5307 8570 -15344 |
4 8
o7 : Matrix R <-- R
|
Also, the number input entries in each row must be equal. It might seem like we could form the same matrix with the input
matrix{{id_(R^3),M,P},{random(R^1,R^8)}} since
random(R^1,R^8) will construct a 1 by 8 matrix that has the same number of columns as matrix
matrix{{id_(R^3),M,P}} but as input into the matrix function that row entry must have 3 entries.
direct sum of matrices as maps between modules
++