|
D.4.20.3 facGBIdeal
Procedure from library pointid.lib (see pointid_lib).
- Usage:
- facGBIdeal(id); id = <list of vectors> or <list of lists> or <module>
or <matrix>.
Let A= {a1,...,as} be a set of points in K^n, ai:=(ai1,...,ain), then
A can be given as
- a list of vectors (the ai are vectors) or
- a list of lists (the ai are lists of numbers) or
- a module s.t. the ai are generators or
- a matrix s.t. the ai are columns
- Assume:
- basering must have ordering rp, i.e., be of the form 0,x(1..n),rp;
(the first entry of a point belongs to the lex-smallest variable, etc.)
- Return:
- a list where the first entry contains the Groebner basis G of I(A)
and the second entry contains the linear factors of each element of G
- Note:
- combinatorial algorithm due to the Axis-of-Evil Theorem of M.G.
Marinari, T. Mora
Example:
| LIB "pointid.lib";
ring R = 0,x(1..3),rp;
vector a1 = [4,0,0];
vector a2 = [2,1,4];
vector a3 = [2,4,0];
vector a4 = [3,0,1];
vector a5 = [2,1,3];
vector a6 = [1,3,4];
vector a7 = [2,4,3];
vector a8 = [2,4,2];
vector a9 = [1,0,2];
list A = a1,a2,a3,a4,a5,a6,a7,a8,a9;
facGBIdeal(A);
==> [1]:
==> _[1]=x(1)^4-10*x(1)^3+35*x(1)^2-50*x(1)+24
==> _[2]=x(1)^2*x(2)-3*x(1)*x(2)+2*x(2)
==> _[3]=x(2)^2-1/2*x(1)^2*x(2)-1/2*x(1)*x(2)-2*x(2)+2*x(1)^3-16*x(1)^2+38\
*x(1)-24
==> _[4]=x(1)*x(3)-2*x(3)-2/3*x(1)*x(2)+4/3*x(2)+1/6*x(1)^3-1/2*x(1)^2-5/3\
*x(1)+4
==> _[5]=x(2)*x(3)^2-4*x(3)^2-2/3*x(2)^2*x(3)-5/6*x(1)^3*x(2)*x(3)+41/6*x(\
1)^2*x(2)*x(3)-16*x(1)*x(2)*x(3)+23/3*x(2)*x(3)+10/3*x(1)^3*x(3)-82/3*x(1\
)^2*x(3)+64*x(1)*x(3)-20*x(3)+2*x(2)^2+5/2*x(1)^3*x(2)-41/2*x(1)^2*x(2)+4\
8*x(1)*x(2)-32*x(2)-10*x(1)^3+82*x(1)^2-192*x(1)+96
==> _[6]=x(3)^3+4/3*x(2)*x(3)^2-5/6*x(1)^3*x(3)^2+35/6*x(1)^2*x(3)^2-9*x(1\
)*x(3)^2-9*x(3)^2-20/3*x(2)*x(3)+25/6*x(1)^3*x(3)-175/6*x(1)^2*x(3)+45*x(\
1)*x(3)+26*x(3)+8*x(2)-5*x(1)^3+35*x(1)^2-54*x(1)-24
==> [2]:
==> [1]:
==> _[1]=x(1)-4
==> _[2]=x(1)-2
==> _[3]=x(1)-3
==> _[4]=x(1)-1
==> [2]:
==> _[1]=x(1)-2
==> _[2]=x(1)-1
==> _[3]=x(2)
==> [3]:
==> _[1]=x(2)-4*x(1)+4
==> _[2]=2*x(2)-x(1)^2+7*x(1)-12
==> [4]:
==> _[1]=x(1)-2
==> _[2]=6*x(3)-4*x(2)+x(1)^2-x(1)-12
==> [5]:
==> _[1]=x(2)-4
==> _[2]=x(3)-3
==> _[3]=6*x(3)-4*x(2)-5*x(1)^3+41*x(1)^2-96*x(1)+48
==> [6]:
==> _[1]=x(3)-2
==> _[2]=x(3)-3
==> _[3]=6*x(3)+8*x(2)-5*x(1)^3+35*x(1)^2-54*x(1)-24
matrix MAT[9][3] = 4,0,0,2,1,4,2,4,0,3,0,1,2,1,3,1,3,4,2,4,3,2,4,2,1,0,2;
MAT = transpose(MAT);
print(MAT);
==> 4,2,2,3,2,1,2,2,1,
==> 0,1,4,0,1,3,4,4,0,
==> 0,4,0,1,3,4,3,2,2
facGBIdeal(MAT);
==> [1]:
==> _[1]=x(1)^4-10*x(1)^3+35*x(1)^2-50*x(1)+24
==> _[2]=x(1)^2*x(2)-3*x(1)*x(2)+2*x(2)
==> _[3]=x(2)^2-1/2*x(1)^2*x(2)-1/2*x(1)*x(2)-2*x(2)+2*x(1)^3-16*x(1)^2+38\
*x(1)-24
==> _[4]=x(1)*x(3)-2*x(3)-2/3*x(1)*x(2)+4/3*x(2)+1/6*x(1)^3-1/2*x(1)^2-5/3\
*x(1)+4
==> _[5]=x(2)*x(3)^2-4*x(3)^2-2/3*x(2)^2*x(3)-5/6*x(1)^3*x(2)*x(3)+41/6*x(\
1)^2*x(2)*x(3)-16*x(1)*x(2)*x(3)+23/3*x(2)*x(3)+10/3*x(1)^3*x(3)-82/3*x(1\
)^2*x(3)+64*x(1)*x(3)-20*x(3)+2*x(2)^2+5/2*x(1)^3*x(2)-41/2*x(1)^2*x(2)+4\
8*x(1)*x(2)-32*x(2)-10*x(1)^3+82*x(1)^2-192*x(1)+96
==> _[6]=x(3)^3+4/3*x(2)*x(3)^2-5/6*x(1)^3*x(3)^2+35/6*x(1)^2*x(3)^2-9*x(1\
)*x(3)^2-9*x(3)^2-20/3*x(2)*x(3)+25/6*x(1)^3*x(3)-175/6*x(1)^2*x(3)+45*x(\
1)*x(3)+26*x(3)+8*x(2)-5*x(1)^3+35*x(1)^2-54*x(1)-24
==> [2]:
==> [1]:
==> _[1]=x(1)-4
==> _[2]=x(1)-2
==> _[3]=x(1)-3
==> _[4]=x(1)-1
==> [2]:
==> _[1]=x(1)-2
==> _[2]=x(1)-1
==> _[3]=x(2)
==> [3]:
==> _[1]=x(2)-4*x(1)+4
==> _[2]=2*x(2)-x(1)^2+7*x(1)-12
==> [4]:
==> _[1]=x(1)-2
==> _[2]=6*x(3)-4*x(2)+x(1)^2-x(1)-12
==> [5]:
==> _[1]=x(2)-4
==> _[2]=x(3)-3
==> _[3]=6*x(3)-4*x(2)-5*x(1)^3+41*x(1)^2-96*x(1)+48
==> [6]:
==> _[1]=x(3)-2
==> _[2]=x(3)-3
==> _[3]=6*x(3)+8*x(2)-5*x(1)^3+35*x(1)^2-54*x(1)-24
module MOD = gen(3),gen(2)-2*gen(3),2*gen(1)+2*gen(3),2*gen(2)-2*gen(3),gen(1)+3*gen(3),gen(1)+gen(2)+3*gen(3),gen(1)+gen(2)+gen(3);
print(MOD);
==> 0,0, 2,0, 1,1,1,
==> 0,1, 0,2, 0,1,1,
==> 1,-2,2,-2,3,3,1
facGBIdeal(MOD);
==> [1]:
==> _[1]=x(1)^3-3*x(1)^2+2*x(1)
==> _[2]=x(1)^2*x(2)-x(1)*x(2)
==> _[3]=x(1)*x(2)^2-x(1)*x(2)
==> _[4]=x(2)^3-3*x(2)^2+2*x(2)
==> _[5]=x(1)*x(3)-x(3)-3/2*x(1)*x(2)^2+3/2*x(2)^2+9/2*x(1)*x(2)-9/2*x(2)-\
1/2*x(1)^2-1/2*x(1)+1
==> _[6]=x(2)*x(3)-x(3)+3/2*x(2)^2+3/2*x(1)^2*x(2)-7/2*x(1)*x(2)-5/2*x(2)-\
3/2*x(1)^2+7/2*x(1)+1
==> _[7]=x(3)^2+3*x(1)^2*x(3)-8*x(1)*x(3)+x(3)-3*x(1)^2+8*x(1)-2
==> [2]:
==> [1]:
==> _[1]=x(1)
==> _[2]=x(1)-2
==> _[3]=x(1)-1
==> [2]:
==> _[1]=x(1)
==> _[2]=x(1)-1
==> _[3]=x(2)
==> [3]:
==> _[1]=x(1)
==> _[2]=x(2)-1
==> _[3]=x(2)
==> [4]:
==> _[1]=x(2)-2
==> _[2]=x(2)-1
==> _[3]=x(2)
==> [5]:
==> _[1]=x(1)-1
==> _[2]=2*x(3)-3*x(2)^2+9*x(2)-x(1)-2
==> [6]:
==> _[1]=x(2)-1
==> _[2]=2*x(3)+3*x(2)+3*x(1)^2-7*x(1)-2
==> [7]:
==> _[1]=x(3)-1
==> _[2]=x(3)+3*x(1)^2-8*x(1)+2
list l1 = 0,0,1;
list l2 = 0,1,-2;
list l3 = 2,0,2;
list l4 = 0,2,-2;
list l5 = 1,0,3;
list l6 = 1,1,3;
list L = l1,l2,l3,l4,l5,l6;
facGBIdeal(L);
==> [1]:
==> _[1]=x(1)^3-3*x(1)^2+2*x(1)
==> _[2]=x(1)^2*x(2)-x(1)*x(2)
==> _[3]=x(1)*x(2)^2-x(1)*x(2)
==> _[4]=x(2)^3-3*x(2)^2+2*x(2)
==> _[5]=x(3)-3/2*x(2)^2-3*x(1)*x(2)+9/2*x(2)+3/2*x(1)^2-7/2*x(1)-1
==> [2]:
==> [1]:
==> _[1]=x(1)
==> _[2]=x(1)-2
==> _[3]=x(1)-1
==> [2]:
==> _[1]=x(1)
==> _[2]=x(1)-1
==> _[3]=x(2)
==> [3]:
==> _[1]=x(1)
==> _[2]=x(2)-1
==> _[3]=x(2)
==> [4]:
==> _[1]=x(2)-2
==> _[2]=x(2)-1
==> _[3]=x(2)
==> [5]:
==> _[1]=2*x(3)-3*x(2)^2-6*x(1)*x(2)+9*x(2)+3*x(1)^2-7*x(1)-2
|
|