This function uses a modified Buchberger-Moeller algorithm to compute a grobner basis for the ideal of a finite number of fat points in affine space.
i1 : R = QQ[x,y] o1 = R o1 : PolynomialRing |
i2 : M = transpose matrix{{0,0},{1,1}}
o2 = | 0 1 |
| 0 1 |
2 2
o2 : Matrix ZZ <--- ZZ
|
i3 : mults = {3,2}
o3 = {3, 2}
o3 : List
|
i4 : (Q,inG,G) = affineFatPoints(M,mults,R)
2 2 3 2 4 2 3 3 5 2 2 3 3 2 3 3 4 2
o4 = ({1, y, x, y , x*y, x , y , x*y , y }, ideal (x y, x , x*y , y ), {x y - 2x*y + y , x - 3x*y + 2y , x*y - y - x*y +
----------------------------------------------------------------------------------------------------------------------------
3 5 4 3
y , y - 2y + y })
o4 : Sequence
|
i5 : monomialIdeal G == inG o5 = true |
This algorithm may be faster than computing the intersection of the ideals of each fat point.
i6 : K = ZZ/32003 o6 = K o6 : QuotientRing |
i7 : R = K[z_1..z_5] o7 = R o7 : PolynomialRing |
i8 : M = random(K^5,K^12)
o8 = | 107 -5307 10359 -6203 8231 9534 6230 13177 10866 -5326 1031 -5080 |
| 4376 8570 -7464 12365 5864 -7216 9033 13990 5398 2998 -2036 1236 |
| -5570 -15344 -8251 -13508 5026 -10125 5107 -11521 5549 5679 -6325 8922 |
| 3187 8444 2653 -9480 10259 7256 -3996 -1309 -7061 -7152 -11740 -5006 |
| 3783 -10480 5071 -11950 -7501 -5321 9398 -1779 2627 15317 -6922 8880 |
5 12
o8 : Matrix K <--- K
|
i9 : mults = {1,2,3,1,2,3,1,2,3,1,2,3}
o9 = {1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}
o9 : List
|
i10 : elapsedTime (Q,inG,G) = affineFatPoints(M,mults,R); -- 1.66898 seconds elapsed |
i11 : elapsedTime H = affineFatPointsByIntersection(M,mults,R); -- 4.27083 seconds elapsed |
i12 : G==H o12 = true |
For reduced points, this function may be a bit slower than affinePoints.
The object affineFatPoints is a method function.