[next][previous][up][top][index]
search for:

extracting generators of an ideal

Sections:

  • obtain a single generator as an element
  • the generators as a matrix or list of elements
  • number of generators
  • minimal generating set
  • obtaining the input form of an ideal
  • obtain a single generator as an element

    Once an ideal has been constructed it is possible to obtain individual elements using _. As always in Macaulay 2, indexing starts at 0.

    i1 : R = ZZ[w,x,y,z];
    i2 : I = ideal(z*w-2*x*y, 3*w^3-z^3,w*x^2-4*y*z^2,x);

    o2 : Ideal of R
    i3 : I_0

    o3 = - 2x*y + w*z

    o3 : R
    i4 : I_3

    o4 = x

    o4 : R

    the generators as a matrix or list of elements

    Use generators or its abbreviation gens to get the generators of an ideal I as a matrix. Applying first entries to this matrix converts it to a list.

    i5 : gens I

    o5 = | -2xy+wz 3w3-z3 wx2-4yz2 x |

                 1       4
    o5 : Matrix R  <--- R
    i6 : first entries gens I

                          3    3     2       2
    o6 = {- 2x*y + w*z, 3w  - z , w*x  - 4y*z , x}

    o6 : List

    number of generators

    The command numgens gives the number of generators of an ideal I.

    i7 : numgens I

    o7 = 4

    minimal generating set

    To obtain a minimal generating set of a homogeneous ideal use mingens to get the minimal generators as a matrix and use trim to get the minimal generators as an ideal.

    i8 : mingens I

    o8 = | x wz -4yz2 3w3-z3 |

                 1       4
    o8 : Matrix R  <--- R
    i9 : trim I

                             2    3    3
    o9 = ideal (x, w*z, -4y*z , 3w  - z )

    o9 : Ideal of R

    The function mingens is only well-defined for a homogeneous ideal or in a local ring. However, one can still try to get as small a generating set as possible and when it is implemented this function will be done by trim.

    obtaining the input form of an ideal

    If the ideal was defined using a function like monomialCurveIdeal and the generators are desired in the usual format for input of an ideal, the function toString is very useful. (Note: We are changing rings because monomialCurveIdeal is not implemented for rings over ZZ.)

    i10 : R = QQ[a..d];
    i11 : I = monomialCurveIdeal(R,{1,2,3});

    o11 : Ideal of R
    i12 : toString I

    o12 = ideal(b*c-a*d,c^2-b*d,b^2-a*c)


    [next][previous][up][top][index]
    search for: