Difference between revisions of "ApCoCoA-1:Slinalg.SEF"

From ApCoCoAWiki
(New page: <command> <title>Bertini.BCMSolve</title> <short_description>Solves zero dimensional non-homogeneous polynomial system using multi-homogenization with User Configurations.</short_descripti...)
 
m (insert version info)
 
(19 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
{{Version|1}}
 
<command>
 
<command>
<title>Bertini.BCMSolve</title>
+
<title>Slinalg.SEF</title>
<short_description>Solves zero dimensional non-homogeneous polynomial system using multi-homogenization with User Configurations.</short_description>
+
<short_description>Computes the row echelon form of a sparse matrix over F2.</short_description>
 
<syntax>
 
<syntax>
Bertini.BCMSolve(M:LIST, ConfigSet:LIST)
+
Slinalg.SEF(NRow:INT, NCol:INT, M:LIST): LIST
 +
Slinalg.SEF_v2(NRow:INT, NCol:INT, M:LIST): LIST
 
</syntax>
 
</syntax>
 
<description>
 
<description>
 
<em>Please note:</em> The function(s) explained on this page is/are using the <em>ApCoCoAServer</em>. You will have to start the ApCoCoAServer in order to use it/them.
 
<em>Please note:</em> The function(s) explained on this page is/are using the <em>ApCoCoAServer</em>. You will have to start the ApCoCoAServer in order to use it/them.
 +
<par/>
 +
Both functions compute the row echelon form of a sparse matrix. The first one performs usual gaussian elimination. The second one collects all the rows which contain the pivot element and then select the row with fewer number of non zero elements to perform elimination. Therefore, the second one is more efficient than the first one.
  
 
<itemize>
 
<itemize>
<item>@param <em>M</em>: List of polynomials in the system.</item>
+
<item>@param <em>NRow</em>: Number of rows of the matrix.</item>
  
<item>@param <em>ConfigSet</em>: List of strings representing Configurations to be used by Bertini. For details about configuration settings see Bertini mannual <tt>http://www.nd.edu/~sommese/bertini/BertiniUsersManual.pdf</tt>.</item>
+
<item>@param <em>NCol</em>: Number of Columns of the matrix.</item>
<item>@return A list of lists containing the finite solutions of the polynomial system.</item>
+
<item>@param <em>M</em>: List of lists containing positions of non zero elements.</item>
 +
<item>@return A list of lists containing the row echelon form of the matrix M.</item>
 
</itemize>
 
</itemize>
 
   
 
   
 
<example>
 
<example>
-- We want to solve the system x^2+y^2-5=0,xy-2=0, using multi-homogenization, for adaptive precision.
+
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]];
  
Use S ::= QQ[x,y];            -- Define appropriate ring
+
Slinalg.SEF(NRow, NCol, M);
M := [x^2+y^2-5,xy-2];
+
[[1,2,6,7],
ConfigSet := [<quotes>MPTYPE: 2</quotes>];
+
[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]]
 +
 +
-------------------------------
 +
</example>
  
-- Then we compute the solution with
+
<example>
Bertini.BCMSolve(M,ConfigSet);
+
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]];
  
-- And we achieve a list of lists containing finite solutions:
+
Slinalg.SEF_v2(NRow, NCol, M);
----------------------------------------
+
[[1, 2, 6, 7],
[[Vector(1000000000000017/1000000000000000, 145132717332349/15625000000000000000000000000),
+
[2, 3],
  Vector(49999999999999/25000000000000, -3537662353156057/100000000000000000000000000000)],
+
  [3, 10, 11, 13],
  [Vector(-62500000000003/62500000000000, 4415730565392687/100000000000000000000000000000),
+
  [4, 5, 7],
  Vector(-499999999999983/250000000000000, -66866973306543/400000000000000000000000000)],
+
  [5, 6, 8],
  [Vector(999999999999983/500000000000000, -1787591178181031/50000000000000000000000000000),
+
  [6, 10, 12],
  Vector(1000000000000013/1000000000000000, 281412486737749/25000000000000000000000000000)],
+
  [8, 9],
  [Vector(-499999999999999/250000000000000, -3956938527452181/1000000000000000000000000000000),
+
  [10, 11],
  Vector(-9999999999999989/10000000000000000, -596634837824491/1250000000000000000000000000000)]]
+
  [11, 13]]
  
--For other Bertini output files please refer to Bertini directory (.../ApCoCoA-1.2/Bertini/).
+
-------------------------------
 
</example>
 
</example>
 
 
</description>
 
</description>
 
<types>
 
<types>
 
   <type>apcocoaserver</type>
 
   <type>apcocoaserver</type>
   <type>poly_system</type>
+
   <type>matrix</type>
 
</types>
 
</types>
  
 
<seealso>
 
<seealso>
  <see>Introduction to CoCoAServer</see>
+
  <see>ApCoCoA-1:Introduction to CoCoAServer|Introduction to CoCoAServer</see>
  <see>Bertini.BSolve</see>
+
  <see>ApCoCoA-1:IML.REF|IML.REF</see>
<see>Bertini.BMSolve</see>
+
  <see>ApCoCoA-1:LinAlg.REF|LinAlg.REF</see>
<see>Bertini.BUHSolve</see>
 
 
</seealso>
 
</seealso>
  
<key>bcmsolve</key>
+
<key>slinalg.sef</key>
<key>bertini.bcmsolve</key>
+
<key>sef</key>
<key>solve zero dimensional polynomial system</key>
+
<key>sparse matrix</key>
<wiki-category>Package_bertini</wiki-category>
+
<wiki-category>ApCoCoA-1:Package_slinalg</wiki-category>
 
</command>
 
</command>

Latest revision as of 10:34, 7 October 2020

This article is about a function from ApCoCoA-1.

Slinalg.SEF

Computes the row echelon form of a sparse matrix over F2.

Syntax

Slinalg.SEF(NRow:INT, NCol:INT, M:LIST): LIST 
Slinalg.SEF_v2(NRow:INT, NCol:INT, M:LIST): LIST 

Description

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.

Both functions compute the row echelon form of a sparse matrix. The first one performs usual gaussian elimination. The second one collects all the rows which contain the pivot element and then select the row with fewer number of non zero elements to perform elimination. Therefore, the second one is more efficient than the first one.

  • @param NRow: Number of rows of the matrix.

  • @param NCol: Number of Columns of the matrix.

  • @param M: List of lists containing positions of non zero elements.

  • @return A list of lists containing the row echelon form of the matrix M.

Example

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]]
	
-------------------------------

Example

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_v2(NRow, NCol, M);
[[1, 2, 6, 7],
 [2, 3],
 [3, 10, 11, 13],
 [4, 5, 7],
 [5, 6, 8],
 [6, 10, 12],
 [8, 9],
 [10, 11],
 [11, 13]]

-------------------------------


See also

Introduction to CoCoAServer

IML.REF

LinAlg.REF