next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
Points :: projectivePoints

projectivePoints -- produces the ideal and initial ideal from the coordinates of a finite set of projective points

Synopsis

Description

This function uses a modified Buchberger-Moeller algorithm to compute a grobner basis for the ideal of a finite number of points in projective space.

i1 : R = QQ[x_0..x_2]

o1 = R

o1 : PolynomialRing
i2 : M = random(ZZ^3,ZZ^5)

o2 = | 8 7 3 8 8 |
     | 1 8 7 5 5 |
     | 3 3 8 7 2 |

              3        5
o2 : Matrix ZZ  <--- ZZ
i3 : (inG,G) = projectivePoints(M,R)

              2   3     2     2   79285       204632 2   152667      
o3 = (ideal (x , x , x x ), {x  - -----x x  - ------x  + ------x x  +
              0   1   0 1     0    481  0 1     481  1     481  0 2  
     ------------------------------------------------------------------------
     817272       589744 2   3   318467         187373 2     77360   2  
     ------x x  - ------x , x  + ------x x x  + ------x x  - -----x x  -
       481  1 2     481  2   1    18648 0 1 2    4662  1 2    2331 0 2  
     ------------------------------------------------------------------------
     804017   2   294415 3     2   881693         273316 2     410665   2  
     ------x x  + ------x , x x  - ------x x x  - ------x x  + ------x x  +
      4662  1 2    2331  2   0 1    18648 0 1 2    2331  1 2    4662  0 2  
     ------------------------------------------------------------------------
     2169827   2   1563095 3
     -------x x  - -------x })
       4662  1 2     4662  2

o3 : Sequence
i4 : monomialIdeal G == inG

o4 = true

This algorithm may be faster than computing the intersection of the ideals of each projective point.

i5 : K = ZZ/32003

o5 = K

o5 : QuotientRing
i6 : R = K[z_0..z_5]

o6 = R

o6 : PolynomialRing
i7 : M = random(ZZ^6,ZZ^150)

o7 = | 3 9 2 3 7 3 9 0 0 1 5 2 4 8 9 9 8 2 0 4 2 7 0 5 6 5 6 8 1 1 2 2 9 3 5
     | 6 3 6 5 9 1 6 9 5 7 4 6 9 4 3 3 4 6 4 8 8 9 1 8 9 0 2 1 0 7 1 9 7 8 2
     | 3 7 0 6 4 8 6 8 1 5 0 1 7 2 2 6 8 6 3 3 7 2 7 9 9 4 7 3 5 4 5 8 2 4 5
     | 6 6 2 3 5 9 2 3 8 6 1 1 4 7 2 9 5 5 1 1 1 5 0 4 6 9 5 9 5 9 9 1 2 2 3
     | 8 9 6 5 0 1 6 7 2 7 4 4 6 9 6 3 6 8 8 8 3 7 2 3 4 1 1 3 7 0 3 5 3 4 0
     | 6 6 9 7 4 2 4 9 2 4 4 5 4 0 8 4 5 5 7 8 0 3 7 0 8 4 8 4 7 5 8 4 9 5 6
     ------------------------------------------------------------------------
     4 9 4 7 8 5 5 2 0 2 0 4 4 5 6 4 0 6 4 3 4 0 5 5 7 9 4 9 7 2 9 6 3 4 0 1
     4 3 2 6 5 4 0 9 2 7 1 6 2 4 6 3 9 7 8 2 4 6 5 8 1 4 9 8 9 9 9 5 0 2 6 7
     0 8 1 7 6 5 7 8 2 0 3 2 2 4 2 0 6 1 6 0 6 0 3 3 2 6 5 9 5 9 4 6 7 7 0 4
     8 8 3 5 6 6 7 3 9 1 1 1 8 9 1 7 4 1 3 9 3 6 3 2 3 7 9 7 1 2 2 6 3 9 7 0
     8 9 2 5 5 9 6 1 8 0 7 6 5 9 0 2 7 6 6 4 8 1 0 0 5 2 6 6 4 5 5 5 2 6 1 7
     6 4 0 9 4 3 6 7 8 2 6 0 5 4 4 1 4 8 2 4 9 1 6 8 6 6 6 7 7 7 2 4 5 4 3 6
     ------------------------------------------------------------------------
     1 2 6 0 2 6 5 6 0 8 3 7 0 1 5 5 1 9 2 8 0 0 1 4 0 9 3 5 2 9 6 4 4 0 0 9
     3 1 0 0 0 7 5 2 1 3 7 3 6 3 4 9 0 3 9 9 8 4 6 7 6 6 1 2 0 9 8 7 2 8 9 1
     2 2 6 0 6 3 0 9 0 0 2 9 6 8 2 6 4 6 5 0 3 4 6 5 6 2 3 5 6 8 4 0 9 3 6 6
     1 9 4 7 0 2 8 1 7 2 5 1 9 9 4 8 8 1 0 8 9 3 5 9 8 1 2 8 0 0 3 8 0 3 9 1
     8 2 8 4 7 9 5 1 8 4 8 1 3 6 5 2 3 2 2 7 2 3 7 7 1 3 1 4 8 1 6 5 6 3 1 8
     0 5 9 4 3 0 3 1 7 2 4 8 7 3 5 1 9 2 5 6 2 6 9 3 7 4 1 7 1 0 7 2 3 1 0 3
     ------------------------------------------------------------------------
     9 2 2 7 8 7 6 4 2 9 0 8 3 4 1 6 3 6 7 8 8 1 0 4 8 7 4 0 0 5 6 2 3 5 3 9
     1 6 5 4 0 8 3 3 4 5 0 0 6 3 6 7 9 3 4 6 3 9 3 8 8 7 8 1 2 8 1 3 1 0 7 5
     8 1 8 5 2 0 3 8 3 2 2 3 9 3 9 3 4 7 1 7 6 2 4 2 8 7 2 8 3 5 9 8 5 5 7 2
     3 9 5 3 3 0 4 3 2 3 0 3 2 2 4 1 3 8 3 0 4 7 6 4 6 7 8 4 7 6 6 0 2 8 8 5
     1 6 0 5 6 2 9 7 2 3 7 6 6 0 9 5 6 4 4 6 8 5 3 9 6 0 8 3 4 7 6 1 7 6 4 6
     7 9 7 8 2 9 7 9 1 8 4 6 2 8 4 5 3 2 7 3 9 0 4 8 4 1 1 6 8 4 4 5 5 0 1 8
     ------------------------------------------------------------------------
     8 8 5 8 6 6 4 |
     4 0 5 0 5 0 7 |
     6 7 3 9 4 9 0 |
     1 3 2 8 2 0 5 |
     1 5 0 2 0 7 1 |
     8 4 9 6 8 0 9 |

              6        150
o7 : Matrix ZZ  <--- ZZ
i8 : elapsedTime (inG,G) = projectivePoints(M,R);
     -- 8.49057 seconds elapsed
i9 : elapsedTime H = projectivePointsByIntersection(M,R);
     -- 9.28597 seconds elapsed
i10 : G == H

o10 = true

Caveat

This function removes zero columns of M and duplicate columns giving rise to the same projective point (which prevent the algorithm from terminating). The user can bypass this step with the option VerifyPoints.

See also

Ways to use projectivePoints :