# LinearMultivariateMatrixPencil R¶

Author: Konrad Schrempf <schrempf@math.tugraz.at> Date Created: Mit 2016-02-03 17:20 Date Changed: Sam 2018-09-01 10:37 Basic Functions: Related Constructors: Matrix Also See: FreeDivisionAlgebra AMS Classifications: Keywords: References: Description:

*: (%, Matrix R) -> %

`p * U` column transformation …

*: (Matrix R, %) -> %

`T * P` row transformation …

=: (%, %) -> Boolean

`p = q` entrywise equality.

addColumns!: (%, NonNegativeInteger, NonNegativeInteger, R) -> %

`addColumns!(p, i, j, alpha)` adds alpha*column(`i`) to column(`j`) in all matrices of the linear pencil `p`.

addRows!: (%, NonNegativeInteger, NonNegativeInteger, R) -> %

`addRows!(p, i, j, alpha)` adds alpha*row(`i`) to row(`j`) in all matrices of the linear pencil `p`.

append!: (%, NonNegativeInteger) -> %

`append!(p, l)` appends `l` matrices to the linear pencil.

append: (%, NonNegativeInteger) -> %

`append(p, l)` appends `l` matrices to the linear pencil.

blockElimination: (%, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger) -> List Matrix R if R has Field

`blockElimination(p, rsrc, rdst, rext, csrc, cdst, cext)` r___ rows, c___ columns _src source, _dst destination, _ext extra (zeros) Uses a linear system of equations to determine row and column transformation matrices to eliminate the entries in rdst+rext times cdst+cext and returns an empty list if there is no solution.

coerce: % -> OutputForm

`coerce(p)` prints the linear pencil `p` in list form.

copy: % -> %

`copy(p)` returns a copy of the linear pencil `p`.

diagonal?: (%, NonNegativeInteger) -> Boolean

`diagonal?(p, l)` is the matrix `l` diagonal?

diagonal: (%, NonNegativeInteger) -> List R

`diagonal(p, l)` returns the entries along the diagonal in a list.

eliminationEquations: (%, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger) -> List Matrix Polynomial R if R has Field

`eliminationEquations(p, row_P, col_P, row_Q, col_Q, rdst, cdst)` returns a list of matrices with equations to eliminate the entries in rows/columns rdst/cdst.

eliminationEquations: (%, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger) -> List Matrix Polynomial R if R has Field

`eliminationEquations(p, row_P, col_P, row_Q, col_Q, rdst, cdst, rex1, cex1, rex2, cex2)` returns a list of matrices with equations to eliminate the entries in rows/columns rdst/cdst, `rex1/cex1` and `rex2/cex2`.

eliminationEquations: (%, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger) -> List Polynomial R if R has Field

`eliminationEquations(p, row_P, col_P, row_Q, col_Q, rdst, cdst, rex1, cex1, rex2, cex2)` returns a list of equations with equations to eliminate the entries in rows/columns rdst/cdst, `rex1/cex1` and `rex2/cex2`, including det(`P`)`-1` and det(`Q`)`-1`.

eliminationGroebner: (%, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger) -> List Polynomial R if R has Field

`eliminationGroebner(p, row_P, col_P, row_Q, col_Q, rdst, cdst, rex1, cex1, rex2, cex2)` computes a Groebner–Shirshov basis for the ideal generated by the equations from eliminationEquations(…) using the domain DistributedMultivariatePolynomial.

eliminationSolve: (List Polynomial R, List R, List List Equation Polynomial R) -> List List Equation Polynomial R if R has Field

`eliminationSolve(lst_eqn, lst_val, lst_sub)` computes all solutions of the first equation of `lst_eqn` by trying the values of `lst_val` for undetermined variables with respect to given subsolutions lst_sub and return those which fulfill all other equations in `lst_eqn`.

eliminationSolve: (Polynomial R, List R) -> List List Equation Polynomial R if R has Field

`eliminationSolve(eqn, lst_val)` computes all solutions of equation `eqn` by trying the values of lst_val for undetermined variables.

eliminationSolve: (Polynomial R, List R, List Equation Polynomial R) -> List List Equation Polynomial R if R has Field

`eliminationSolve(eqn, lst_val, sub)` computes all solutions of equation `eqn` by trying the values of `lst_val` for undetermined variables with respect to given subsolution sub.

eliminationSolve: (Polynomial R, List R, List List Equation Polynomial R) -> List List Equation Polynomial R if R has Field

`eliminationSolve(eqn, lst_val, lst_sub)` computes all solutions of equation `eqn` by trying the values of `lst_val` for undetermined variables with respect to given subsolutions lst_sub.

eliminationSolve: List Polynomial R -> List List Equation Polynomial R if R has Field

`eliminationSolve(lst_eqn)` calls eliminationSolve(`lst_eqn`, [0,1], []).

eliminationTransformations: (%, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger) -> List Matrix Polynomial R if R has Field

`eliminationTransformations(p, row_P, col_P, row_Q, col_Q)` returns a pair of transformation matrices with commutative variables ‘a[`i`] in rows/columns row_P/col_P respectively `'b`[`i`] in rows/columns row_Q/col_Q.

eliminationTransformations: (%, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List NonNegativeInteger, List Equation Polynomial R) -> List Matrix R if R has Field

`eliminationTransformations(p, row_P, col_P, row_Q, col_Q, sol)` Uses eval to set the values in sol into the variables in the transformation matrices.

eliminationTransformations: (%, List NonNegativeInteger, List NonNegativeInteger, Symbol, List NonNegativeInteger, List NonNegativeInteger, Symbol) -> List Matrix Polynomial R if R has Field

`eliminationTransformations(p, row_P, col_P, sym_P, row_Q, col_Q, sym_Q)` returns a pair of transformation matrices with commutative variables `sym_P`[`i`] in rows/columns row_P/col_P respectively sym_Q[`i`] in rows/columns row_Q/col_Q.

elt: (%, NonNegativeInteger, NonNegativeInteger) -> List R

`elt(p, i, j)` returns the elements (`i`,`j`) from the linear pencil `p` as a list.

elt: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> R

`elt(p, i, j, l)` returns the element (`i`,`j`) in matrix `l` of the linear pencil `p`.

equal?: (%, List NonNegativeInteger, %, List NonNegativeInteger) -> Boolean

`equal?(p, pos_p, q, pos_q)` checks, if the matrices `pos_p` in `p` are equal to the pos_q in `q`. Not spacified matrices have to be zero.

insertRowsColumns: (%, List NonNegativeInteger, List NonNegativeInteger) -> %

`insertRowsColumns(p, lst_row, lst_col)` returns a new pencil with additional rows and columns after the specified indices. addRowsColumns(`p`, [0,0,1], [0,0,3]) would insert 2 rows and columns at the beginning an one row and column between rows 1 and 2 and columns 3 and 4 respectively.

leftIdentity: % -> Matrix R

`leftIdentity(p)` returns the left identity matrix.

matrix: (%, NonNegativeInteger) -> Matrix R

`matrix(p, l)` returns matrix `l` in the linear pencil `p`.

multiplyColumn!: (%, NonNegativeInteger, R) -> %

`multiplyColumn!(p, j, alphat)` multiplies column(`j`) by alpha.

multiplyRow!: (%, NonNegativeInteger, R) -> %

`multiplyRow!(p, i, alpha)` multiplies row(`i`) by alpha.

ncols: % -> NonNegativeInteger

`ncols(p)` returns the number of columns.

nelem: % -> NonNegativeInteger

`nelem(p)` returns the number of elements.

nrows: % -> NonNegativeInteger

`nrows(p)` returns the number of rows.

qaddColumns!: (%, NonNegativeInteger, NonNegativeInteger, R) -> %

`addColumns!(p, i, j, alpha)` adds alpha*column(`i`) to column(`j`) in all matrices of the linear pencil `p`. (no index check)

qaddRows!: (%, NonNegativeInteger, NonNegativeInteger, R) -> %

`qaddRows!(p, i, j, alpha)` adds alpha*row(`i`) to row(`j`) in all matrices of the linear pencil `p` (no index check). (no index check)

qcolumnIndices: (%, NonNegativeInteger) -> List List NonNegativeInteger

`qcolumnIndices(p, off)` returns a list of column indices for nozero elements for every row starting at the specified offset. (no range check)

qcolumnIndices: (%, NonNegativeInteger, NonNegativeInteger) -> List List NonNegativeInteger

`qcolumnIndices(p, off, l)` returns a list of column indices for nonzero elements in matrix `l` for every row starting at the specified offset. (no range check)

qcolumnIndices: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> List NonNegativeInteger

`qcolumnIndices(p, off, i, l)` returns a list of column indices for nonzero elements in the specified row of matrix `l` for starting at the specified offset. (no range check)

qdiagonal?: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> Boolean

`qdiagonal?(p, k_min, k_max, l)` is the matrix `l` diagonal between `k_min` and k_max? (no range check)

qdiagonal: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> List R

`qdiagonal(p, k_min, k_max, l)` returns the entries along the diagonal between `k_min` and `k_max`. (no range check)

qelt: (%, NonNegativeInteger, NonNegativeInteger) -> List R

`elt(p, i, j)` returns the elements (`i`,`j`) from the linear pencil `p` as a list (no check).

qelt: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> R

`elt(p, i, j, l)` returns the element (`i`,`j`) in matrix `l` of the linear pencil `p` (no index-check).

qequal?: (%, List NonNegativeInteger, %, List NonNegativeInteger, NonNegativeInteger) -> Boolean

`qequal?(p, pos_p, q, pos_q, offset)` checks, if the matrices are equal starting at offset.

qmultiplyColumn!: (%, NonNegativeInteger, R) -> %

`multiplyColumn!(p, j, alphat)` multiplies column(`j`) by alpha.

qmultiplyRow!: (%, NonNegativeInteger, R) -> %

`qmultiplyRow!(p, i, alpha)` multiplies row(`i`) by alpha. (no index check)

qnew: (NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> %

`qnew(m, n, l)` creates an empty linear pencil with `l` matrices with `m` rows and `n` columns.

qnilpotent?: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> Boolean

`qnilpotent?(p, k_min, k_max, l)` ist the matrix `l` nilpotent with respect to the specified block? (no range check)

qrowIndices: (%, NonNegativeInteger) -> List List NonNegativeInteger

`qrowIndices(p, off)` returns a list of row indices for nonzero elements for every column starting at the specified offset. (no range check)

qrowIndices: (%, NonNegativeInteger, NonNegativeInteger) -> List List NonNegativeInteger

`qrowIndices(p, off, l)` returns a list of row indices for nonzero elements in matrix `l` for every column starting at the specified offset. (no range check)

qrowIndices: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> List NonNegativeInteger

`qrowIndices(p, off, j, l)` returns a list of row indices for nozero elements in column `j` in matrix `l` (no range check)

qscaleBlock!: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, R) -> %

`qscalesubMatrix!(p, i_min, i_max, j_min, j_max, l, alpha)` multiplies the entries in the specified block of matrix `l` with alpha.

qsemizero?: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> Boolean

`qsemizero?(p, i_min, i_max, j_min, j_max, l)` checks, if the specified submatrix is zero except for matrix `l` (no index check).

qsetelt!: (%, NonNegativeInteger, NonNegativeInteger, List R) -> List R

`qsetelt!(p, i, j, lst)` sets the element (`i`,`j`) in the matrices of the linear pencil `p` according to the elements in `lst`.

qsetelt!: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, R) -> R

`qselelt!(p, i, j, l, alpha)` sets the element (`i`,`j`) in matrix `l` of the linear pencil `p` to alpha.

qswapColumns!: (%, NonNegativeInteger, NonNegativeInteger) -> %

`qswapColumns!(p, i, j)` exchanges columns `i` and `j` in all matrices of the linear pencil `p` (no index check)

qswapRows!: (%, NonNegativeInteger, NonNegativeInteger) -> %

`qswapRows!(p, i, j)` exchanges rows `i` and `j` in all matrices of the linear pencil `p` (no index check).

quppertriangular?: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> Boolean

`quppertriangular?(p, k_min, k_max, l)` is the matrix `l` upper triangular with respect to the specified block? (no range check)

qzero?: (%, NonNegativeInteger, NonNegativeInteger) -> Boolean

`qzero?(p, i, j)` checks if all the entries (`i`,`j`) of the linear pencil `p` are zero. (no index check)

qzero?: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> Boolean

`qzero?(p, i_min, i_max, j_min, j_max)` checks if the specified block of the linear pencil `p` is zero for all matrices. (no index check)

qzero?: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> Boolean

`qzero?(p, i_min, i_max, j_min, j_max, l)` checks if the specified block of matrix `l` of the linear pencil `p` is zero (no index check)

removeRowsColumns: (%, List NonNegativeInteger, List NonNegativeInteger) -> %

`removeRowsColumns(p, lst_row, lst_col)` returns a new pencil with submatrices specified by the complement of the list of rows and columns.

rightIdentity: % -> Matrix R

`rightIdentity(p)` returns the right identity matrix.

setelt!: (%, NonNegativeInteger, NonNegativeInteger, List R) -> List R

`setelt!(p, i, j, lst)` sets the element (`i`,`j`) in the matrices of the linear pencil `p` according to the elements in `lst`.

setelt!: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, R) -> R

`selelt!(p, i, j, l, alpha)` sets the element (`i`,`j`) in matrix `l` of the linear pencil `p` to alpha.

setsubMatrix!: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, Matrix R) -> Matrix R

`setsubMatrix!(p, i, j, l, a)` sets the matrix a into the matrix `l` of `p` in position (`i`,`j`).

setsubPencil!: (%, NonNegativeInteger, NonNegativeInteger, %) -> %

`setsubPencil!(p, i, j, q)` sets the matrices of pencil `q` into the matrices of `p` in position (`i`,`j`).

subMatrix: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> Matrix R

`subMatrix(p, r_min, r_max, c_min, c_max, l)` returns the specified submatrix `l` of the linear pencil `p`.

subPencil: (%, List NonNegativeInteger, List NonNegativeInteger) -> %

`subPencil(p, lst_row, lst_col)` returns a pencil with submatrices specified by a list of rows and columns.

subPencil: (%, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger, NonNegativeInteger) -> %

`subPencil(p, r_min, r_max, c_min, c_max)` returns a pencil with the specified submatrices.

swapColumns!: (%, NonNegativeInteger, NonNegativeInteger) -> %

`swapColumns!(p, i, j)` exchanges columns `i` and `j` in all matrices of the linear pencil `p`.

swapRows!: (%, NonNegativeInteger, NonNegativeInteger) -> %

`swapRows!(p, i, j)` exchanges rows `i` and `j` in all matrices of the linear pencil `p`.

transformColumns!: (%, Matrix R) -> %

`transformColumns!(p, U)` multiplies the matrices of the linear pencil from the right by `U`.

transformRows!: (%, Matrix R) -> %

`transformRows!(p, T)` multiplies the matrices of the linear pencil from the left by `T`.

uppertriangular?: (%, NonNegativeInteger) -> Boolean

`uppertriangular?(p, l)` is the matrix `l` upper triangular?

zero?: (%, NonNegativeInteger, NonNegativeInteger) -> Boolean

`zero?(p, i, j)` checks if all the entries (`i`,`j`) of the linear pencil `p` are zero.