next | previous | forward | backward | up | top | index | toc | Macaulay2 website
RandomRationalPoints :: randomCoordinateChange

randomCoordinateChange -- produce linear automorphism of the ring

Synopsis

Description

Given a polynomial ring, this will produce a linear automorphism of the ring.

i1 : R=ZZ/5[x,y,z]

o1 = R

o1 : PolynomialRing
i2 : randomCoordinateChange(R)

             ZZ
o2 = map (R, --[x..z], {- 2x - 2y, 2x - 2y - z, x - 2y})
              5

                    ZZ
o2 : RingMap R <--- --[x..z]
                     5

In some applications, a full change of coordinates is not desired, as it might cause code to run slowly, and so a Binomialr change of coordinates might be preferred. These Binomial changes of coordinates can be accomplished with the options Replacement and MaxCoordinatesToReplace. Replacement can take either Binomial or Full. If Binomial is specified, then only binomial changes of coordinates will be produced.

i3 : S = ZZ/11[a..e]

o3 = S

o3 : PolynomialRing
i4 : randomCoordinateChange(S, Replacement=>Binomial)

             ZZ
o4 = map (S, --[a..e], {a + 3b, 5c + e, - b + d, - 5a + b, c + 3d})
             11

                    ZZ
o4 : RingMap S <--- --[a..e]
                    11

Finally, if Homogeneous is set to false, then our change of coordinates is not homogeneous (although it is still linear).

i5 : randomCoordinateChange(R, Homogeneous=>false)

             ZZ
o5 = map (R, --[x..z], {x + 2y + 2z + 1, - 2y - 2z + 1, 2x - y + 1})
              5

                    ZZ
o5 : RingMap R <--- --[x..z]
                     5

Note, this function already checks whether the function is an isomorphism by computing the Jacobian.

Ways to use randomCoordinateChange :

For the programmer

The object randomCoordinateChange is a method function with options.