Building Block Matrices
Block matrices can be constructed either by listing the blocks, or by joining together smaller matrices horizontally, vertically, or diagonally.
- BlockMatrix(m, n, blocks): RngIntElt, RngIntElt, [ Mtrx ] -> Mtrx
The matrix constructed from the given block matrices, which should all have the same dimensions, and should be given as a sequence of \(m\cdot n\) block matrices (given in row major order, in other words listed across rows).
- BlockMatrix(m, n, rows): RngIntElt, RngIntElt, [ [ Mtrx ] ] -> Mtrx
- BlockMatrix(rows): [ [ Mtrx ] ] -> Mtrx
The matrix constructed from the given block matrices, which should all have the same dimensions, and should be given as a sequence of \(m\) rows, each containing \(n\) block matrices.
- HorizontalJoin(X, Y): Mtrx, Mtrx -> Mtrx
Given a matrix \(X\) with \(r\) rows and \(c\) columns, and a matrix \(Y\) with \(r\) rows and \(d\) columns, both over the same coefficient ring \(R\), return the matrix over \(R\) with \(r\) rows and \((c+d)\) columns obtained by joining \(X\) and \(Y\) horizontally (placing \(Y\) to the right of \(X\)).
- HorizontalJoin(Q): [ Mtrx ] -> Mtrx
- HorizontalJoin(T): < Mtrx > -> Mtrx
Given a sequence \(Q\) or tuple \(T\) of matrices, each having the same number of rows and being over the same coefficient ring \(R\), return the matrix over \(R\) obtained by joining the elements of \(Q\) or \(T\) horizontally in order.
- VerticalJoin(X, Y): Mtrx, Mtrx -> Mtrx
Given a matrix \(X\) with \(r\) rows and \(c\) columns, and a matrix \(Y\) with \(s\) rows and \(c\) columns, both over the same coefficient ring \(R\), return the matrix with \((r+s)\) rows and \(c\) columns over \(R\) obtained by joining \(X\) and \(Y\) vertically (placing \(Y\) underneath \(X\)).
- VerticalJoin(Q): [ Mtrx ] -> Mtrx
- VerticalJoin(T): < Mtrx > -> Mtrx
Given a sequence \(Q\) or tuple \(T\) of matrices, each having the same number of columns and being over the same coefficient ring \(R\), return the matrix over \(R\) obtained by joining the elements of \(Q\) or \(T\) vertically in order.
- DiagonalJoin(X, Y): Mtrx, Mtrx -> Mtrx
Given matrices \(X\) with \(a\) rows and \(b\) columns and \(Y\) with \(c\) rows and \(d\) columns, both over the same coefficient ring \(R\), return the matrix with \((a+c)\) rows and \((b+d)\) columns over \(R\) obtained by joining \(X\) and \(Y\) diagonally (placing \(Y\) diagonally to the right of and underneath \(X\), with zero blocks above and below the diagonal).
- DiagonalJoin(Q): [ Mtrx ] -> Mtrx
- DiagonalJoin(T): < Mtrx > -> Mtrx
Given a sequence \(Q\) or tuple \(T\) of matrices, each being over the same coefficient ring \(R\), return the matrix over \(R\) obtained by joining the elements of \(Q\) or \(T\) diagonally in order.
- KroneckerProduct(A, B): Mtrx, Mtrx -> Mtrx
Given an \(m \times n\) matrix \(A\) and a \(p \times q\) matrix \(B\), both over a ring \(R\), return the Kronecker product of \(A\) and \(B\), which is the \(mp\times nq\) matrix \(C\) over \(R\) such that the \(((i-1)p+r, (j-1)q+s)\)-th entry of \(C\) is the \((i,j)\)-th entry of \(A\) times the \((r,s)\)-th entry of \(B\), for \(1\leq i\le m\), \(1\leq j\leq n\), \(1\leq r\leq p\), and \(1\leq s\leq q\).