diff options
Diffstat (limited to 'src/algebra/matcat.spad.pamphlet')
-rw-r--r-- | src/algebra/matcat.spad.pamphlet | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/src/algebra/matcat.spad.pamphlet b/src/algebra/matcat.spad.pamphlet index 0a74157c..c895e038 100644 --- a/src/algebra/matcat.spad.pamphlet +++ b/src/algebra/matcat.spad.pamphlet @@ -569,8 +569,90 @@ RectangularMatrixCategory(m,n,R,Row,Col): Category == Definition where Row : DirectProductCategory(n,R) Col : DirectProductCategory(m,R) - Definition == Join(MatrixCategory(R,Row,Col),BiModule(R,R)) with + Definition ==> Join(BiModule(R,R),HomogeneousAggregate(R)) with + + finiteAggregate + ++ matrices are finite + if R has CommutativeRing then Module(R) + +--% Matrix creation + + matrix: List List R -> % + ++ \spad{matrix(l)} converts the list of lists l to a matrix, where the + ++ list of lists is viewed as a list of the rows of the matrix. + +--% Predicates + + square? : % -> Boolean + ++ \spad{square?(m)} returns true if m is a square matrix (i.e. if m + ++ has the same number of rows as columns) and false otherwise. + diagonal?: % -> Boolean + ++ \spad{diagonal?(m)} returns true if the matrix m is square and diagonal + ++ (i.e. all entries of m not on the diagonal are zero) and false + ++ otherwise. + symmetric?: % -> Boolean + ++ \spad{symmetric?(m)} returns true if the matrix m is square and + ++ symmetric (i.e. \spad{m[i,j] = m[j,i]} for all \spad{i} and j) and + ++ false otherwise. + antisymmetric?: % -> Boolean + ++ \spad{antisymmetric?(m)} returns true if the matrix m is square and + ++ antisymmetric (i.e. \spad{m[i,j] = -m[j,i]} for all \spad{i} and j) + ++ and false otherwise. + +--% Size inquiries + + minRowIndex : % -> Integer + ++ \spad{minRowIndex(m)} returns the index of the 'first' row of the + ++ matrix m. + maxRowIndex : % -> Integer + ++ \spad{maxRowIndex(m)} returns the index of the 'last' row of the + ++ matrix m. + minColIndex : % -> Integer + ++ \spad{minColIndex(m)} returns the index of the 'first' column of the + ++ matrix m. + maxColIndex : % -> Integer + ++ \spad{maxColIndex(m)} returns the index of the 'last' column of the + ++ matrix m. + nrows : % -> NonNegativeInteger + ++ \spad{nrows(m)} returns the number of rows in the matrix m. + ncols : % -> NonNegativeInteger + ++ \spad{ncols(m)} returns the number of columns in the matrix m. + +--% Part extractions + + listOfLists: % -> List List R + ++ \spad{listOfLists(m)} returns the rows of the matrix m as a list + ++ of lists. + elt: (%,Integer,Integer) -> R + ++ \spad{elt(m,i,j)} returns the element in the \spad{i}th row and + ++ \spad{j}th column of the matrix m. + ++ Error: if indices are outside the proper + ++ ranges. + qelt: (%,Integer,Integer) -> R + ++ \spad{qelt(m,i,j)} returns the element in the \spad{i}th row and + ++ \spad{j}th column of + ++ the matrix m. Note: there is NO error check to determine if indices are + ++ in the proper ranges. + elt: (%,Integer,Integer,R) -> R + ++ \spad{elt(m,i,j,r)} returns the element in the \spad{i}th row and + ++ \spad{j}th column of the matrix m, if m has an \spad{i}th row and a + ++ \spad{j}th column, and returns r otherwise. + row: (%,Integer) -> Row + ++ \spad{row(m,i)} returns the \spad{i}th row of the matrix m. + ++ Error: if the index is outside the proper range. + column: (%,Integer) -> Col + ++ \spad{column(m,j)} returns the \spad{j}th column of the matrix m. + ++ Error: if the index outside the proper range. + +--% Map and Zip + + map: (R -> R,%) -> % + ++ \spad{map(f,a)} returns b, where \spad{b(i,j) = a(i,j)} for all i, j. + map:((R,R) -> R,%,%) -> % + ++ \spad{map(f,a,b)} returns c, where c is such that + ++ \spad{c(i,j) = f(a(i,j),b(i,j))} for all \spad{i}, j. + --% Arithmetic if R has IntegralDomain then |