1 | initial version |
Let me first create a number field L
, and use the Python variable a
as a generator:
sage: L = NumberField(x^3+x+1,'a')
sage: L.inject_variables()
Defining a
Then, you can get the list of embeddings of L
into the complex (floating-point) numbers as follows:
sage: L.embeddings(CC)
[
Ring morphism:
From: Number Field in a with defining polynomial x^3 + x + 1
To: Complex Field with 53 bits of precision
Defn: a |--> -0.682327803828019,
Ring morphism:
From: Number Field in a with defining polynomial x^3 + x + 1
To: Complex Field with 53 bits of precision
Defn: a |--> 0.341163901914010 - 1.16154139999725*I,
Ring morphism:
From: Number Field in a with defining polynomial x^3 + x + 1
To: Complex Field with 53 bits of precision
Defn: a |--> 0.341163901914010 + 1.16154139999725*I
]
So, to get the images of (say) 1+a
for all those embeddings, you can do:
sage: [e(1+a) for e in L.embeddings(CC)]
[0.317672196171981,
1.34116390191401 - 1.16154139999725*I,
1.34116390191401 + 1.16154139999725*I]
If you want to have algebraic numbers instead of floating point appxoximations, you can replace CC
by QQbar
:
sage: [e(1+a) for e in L.embeddings(QQbar)]
[0.3176721961719807?,
1.341163901914010? - 1.161541399997252?*I,
1.341163901914010? + 1.161541399997252?*I]
If you want the images for the real embeddings (there is only one), you can do:
sage: [e(1+a) for e in L.embeddings(RR)]
[0.317672196171981]
sage: [e(1+a) for e in L.embeddings(AA)]
[0.3176721961719807?]
Now, if you pick an element of the unit element as follows:
sage: u = L.unit_group().random_element() ; u
u0*u1^6
You can get the images you wanted as follows:
sage: [log(abs(e(u))) for e in L.embeddings(QQbar)]
[-2.29347051504021, 1.14673525752011, 1.14673525752011]