previous  next
1.2.24. Finite Point Sets: Buchberger-Moeller
CoCoA includes an implementation of the Buchberger-Moeller algorithm
for efficient computations dealing with finite sets of points.  These
functions include:

  * GBM, HGBM -- intersection of ideals for zero-dimensional schemes 
  * IdealAndSeparatorsOfPoints -- ideal & separators for affine points
  * IdealAndSeparatorsOfProjectivePoints -- ideal & separators for points
  * IdealOfPoints -- ideal of a set of affine points
  * IdealOfProjectivePoints -- ideal of a set of projective points
  * Interpolate -- interpolating polynomial
  * SeparatorsOfPoints -- separators for affine points
  * SeparatorsOfProjectivePoints -- separators for projective points

Details about these functions may be found individually in the online
manual.  Briefly, the functions above may be used to find the ideal of
a set of points in affine or projective space along with a reduced
Groebner basis and separators.  Separators are polynomials that take
the value 1 on one of the points and 0 on the remainder.  The
Buchberger-Moeller algorithm works *much* faster than the
straightforward technique involving intersecting ideals for the
individual points.

Example

Use R ::= Q[t,x,y,z];
Pts := GenericPoints(20);  -- 20 random points in projective 3-space
X := IdealAndSeparatorsOfProjectivePoints(Pts);
Len(Gens(X.Ideal));  -- number of generators in the ideal
17
-------------------------------
Hilbert(R/X.Ideal);
H(0) = 1
H(1) = 4
H(2) = 10
H(t) = 20   for t >= 3
-------------------------------
F := X.Separators[1];
[Eval(F,P)| P In Pts];
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
-------------------------------
Res(R/X.Ideal);  -- the resolution of the ideal
0 --> R^10(-6) --> R^24(-5) --> R^15(-4) --> R
-------------------------------