Computes the row echelon form of a sparse matrix over F2 using structured Gaussian Elimination.
Slinalg.SSEF(NRow : INT ,NCol : INT, Mat : LIST, CSteps: STRING): LIST of LIST
Please note: The function(s) explained on this page is/are using the ApCoCoAServer. You will have to start the ApCoCoAServer in order to use it/them.
Structured Gaussian Elimination has the following four steps:
(1) Delete all columns that have a single non-zero coefficient and the rows in which those columns have non-zero coefficients. (2) Declare some additional light columns to be heavy, chossing the heaviest ones. (3) Delete some of the rows, selecting those which have the largest number of non-zero elements in the light columns. (4) For any row which has only a single non-zero coefficient equal to 1 in the light column, subtract appropriate multiples of that row from all other rows that have non-zero coefficients on that column so as to make those coefficients 0.
After performing above four steps we apply usuall Gaussian Elimination, specially on heavy part of the matrix.
Structured Gaussian Elimination: Structured Gaussian Elimination has the following four steps:
(1) Finds isolated solutions using total-degree start systems, multihomogeneous-degree start systems, and also user defined homotopies.
- Implements parameter continuation for families of systems, such as the inverse kinematics of six-revolute serial-link arms, or the forward kinematics of Stewart-Gough parallel-link robots.
- Adaptive multiprecision implemented for finding isolated solutions and for the numerical irreducible decomposition.
- Treats positive-dimensional solutions by computing witness sets.
- Has automatic differentiation which preserves the straightline quality of an input system.
- Uses homogenization to accurately compute solutions at infinity.
- Provides a fractional power-series endgame to accurately compute singular roots.
- Allows for subfunctions.
- Allows for witness set manipulation via both sampling and membership testing.
- Accepts square or nonsquare systems.
@param NRow: Number of rows of the matrix.
@param NCol: Number of Columns of the matrix.
@param Mat: List of lists containing positions of non zero elements.
@return A list of lists containing the row echelon form of the matrix.
Use ZZ/(2)[x]; NRow:=10; NCol:=13; M := [[1, 2, 6, 7], [1, 2, 4, 5, 6], [2, 3], [2, 3, 10, 11], [2, 4, 6, 7, 9, 10], [2, 10, 11, 13], [5, 6, 8], [ 6, 8, 9,10,12], [6, 10, 12], [10, 13]]; Slinalg.SEF(NRow, NCol, M); [[1,2,6,7], [2,3], [3,4,6,7,9,10], [4,5,7], [5,6,8], [6,8,9,10,12], [8,9,11,13], [10,11], [11,13]] -------------------------------