Macaulay2 » Documentation
Packages » RationalPoints2 > baseChange
next | previous | forward | backward | up | index | toc

baseChange -- Perform base change for field extensions

Synopsis

Description

The base change requires finding an image for the primitive element of the base field, which can be specified using the option PrimitiveElement. The default is FindOne, in which case we solve the minimal polynomial of the base field in the extension field and take the first zero. Beware that it is well-defined only up to the action of the Galois group.

In this example we first obtain an extension F of the rational numbers by adding a cube root of 2, then we compute its image in the splitting field F' of x^3-2.

i1 : F = toField(QQ[c]/(c^3-2));
i2 : QQ[x]; F' = splittingField(x^3-2);
i4 : c' = baseChange_F' c

        2
o4 = - a  + a + 1

o4 : F'
i5 : c'^3 == 2

o5 = true
i6 : F[x,y]; I = ideal(x-c, y-c^2);

o7 : Ideal of F[x..y]
i8 : baseChange_F' I

                 2               4     3    2
o8 = ideal (x + a  - a - 1, y - a  + 2a  + a  - 2a - 1)

o8 : Ideal of F'[x..y]

We get a different embedding by specifying the image of the primitive element.

i9 : F'[x]; c'' = last zeros(x^3-2);
i11 : baseChange(F', I, PrimitiveElement => c'')

                   5     4     3     2                 5     4     3      2
o11 = ideal (x + 2a  - 5a  - 3a  + 9a  + 6a - 4, y - 3a  + 8a  + 3a  - 14a  -
      -----------------------------------------------------------------------
      5a + 6)

o11 : Ideal of F'[x..y]

If a prime number p is input instead of a field, the element will be reduced to characteristic p.

i12 : QQ[x]; baseChange_7 (x^3-2)

       3
o13 = x  - 2

      ZZ
o13 : --[x]
       7
i14 : F[x]; baseChange_7 ideal(x-c)

                 2
o15 = ideal(x - a  - a + 3)

o15 : Ideal of GF 343[x]

We can also base change an element of a number field to the complex numbers. Note that to avoid accumulated errors, it is better to do computations in the field and only make the conversion once in the end.

i16 : baseChange_CC c

o16 = 1.25992104989487-5.51778059824887e-61*ii

o16 : CC (of precision 53)
i17 : oo^3

o17 = 2-2.62767921785699e-60*ii

o17 : CC (of precision 53)
i18 : baseChange_CC (c^3)

o18 = 2

o18 : CC (of precision 53)

For complex numbers we only need to provide an approximate value for PrimitiveElement.

i19 : baseChange(CC, c, PrimitiveElement => -.6+1.1*ii)

o19 = -.629960524947436+1.09112363597172*ii

o19 : CC (of precision 53)

Ways to use baseChange :

For the programmer

The object baseChange is a method function with options.