aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/matcat.spad.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2013-05-15 19:57:40 +0000
committerdos-reis <gdr@axiomatics.org>2013-05-15 19:57:40 +0000
commita1c959a763a3a555be2e581b39440a1a6b8f2a2f (patch)
tree32e86624fa794b97f731df72a0db6a642fb08e35 /src/algebra/matcat.spad.pamphlet
parent32bebda8ae3e2b11cb198796f9e0b35711dbffa4 (diff)
downloadopen-axiom-a1c959a763a3a555be2e581b39440a1a6b8f2a2f.tar.gz
Revert accidental commit rev 2862 from experimental tree
Diffstat (limited to 'src/algebra/matcat.spad.pamphlet')
-rw-r--r--src/algebra/matcat.spad.pamphlet84
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