ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Mon, 04 Jan 2021 14:38:36 +0100restricting a NumberField to the reals for the calculation of a Galois grouphttps://ask.sagemath.org/question/55072/restricting-a-numberfield-to-the-reals-for-the-calculation-of-a-galois-group/I am trying to calculate a Galois Group. I have the following code
x=QQbar(7**(1/8))
L.<x>=NumberField(x.minpoly())
G=L.galois_group(names='x')
print(G)
The output is
Galois group of Galois closure in x of Number Field in x with defining polynomial x^8 - 7
I would like to restrict the number field L to the reals. My number field should be non-complex and contain the real root of the minimum polynomial only. How do I acchieve that in my code?
ThanksSat, 02 Jan 2021 14:18:14 +0100https://ask.sagemath.org/question/55072/restricting-a-numberfield-to-the-reals-for-the-calculation-of-a-galois-group/Answer by Tintin1 for <p>I am trying to calculate a Galois Group. I have the following code</p>
<pre><code>x=QQbar(7**(1/8))
L.<x>=NumberField(x.minpoly())
G=L.galois_group(names='x')
print(G)
</code></pre>
<p>The output is</p>
<pre><code>Galois group of Galois closure in x of Number Field in x with defining polynomial x^8 - 7
</code></pre>
<p>I would like to restrict the number field L to the reals. My number field should be non-complex and contain the real root of the minimum polynomial only. How do I acchieve that in my code?</p>
<p>Thanks</p>
https://ask.sagemath.org/question/55072/restricting-a-numberfield-to-the-reals-for-the-calculation-of-a-galois-group/?answer=55074#post-id-55074The question might be addressed by considering a specific subfield:
x=QQbar(7**(1/8))
L.<x>=NumberField(x.minpoly())
Ls=L.subfields(degree=2)
print(Ls)
G=Ls[0][0].galois_group(names='x')
print(G.list())
In this case, the subfield which is real is of degree 2, seen as a vector space. The number field can be restricted to the reals by considering the appropriate subfield which is a proper subset of the reals. The output of the above code is
[
(Number Field in x0 with defining polynomial x^2 - 7, Ring morphism:
From: Number Field in x0 with defining polynomial x^2 - 7
To: Number Field in x with defining polynomial x^8 - 7
Defn: x0 |--> -x^4, None)
]
[(), (1,2)]
Sat, 02 Jan 2021 17:25:16 +0100https://ask.sagemath.org/question/55072/restricting-a-numberfield-to-the-reals-for-the-calculation-of-a-galois-group/?answer=55074#post-id-55074Answer by dan_fulea for <p>I am trying to calculate a Galois Group. I have the following code</p>
<pre><code>x=QQbar(7**(1/8))
L.<x>=NumberField(x.minpoly())
G=L.galois_group(names='x')
print(G)
</code></pre>
<p>The output is</p>
<pre><code>Galois group of Galois closure in x of Number Field in x with defining polynomial x^8 - 7
</code></pre>
<p>I would like to restrict the number field L to the reals. My number field should be non-complex and contain the real root of the minimum polynomial only. How do I acchieve that in my code?</p>
<p>Thanks</p>
https://ask.sagemath.org/question/55072/restricting-a-numberfield-to-the-reals-for-the-calculation-of-a-galois-group/?answer=55097#post-id-55097We can ask sage for all subfields, take then those that are totally real among them.
This first try gives:
sage: var('x');
sage: L.<a> = NumberField(x^8-7)
sage: [F_data for F_data in L.subfields() if F_data[0].is_totally_real()]
[(Number Field in a0 with defining polynomial x,
Ring morphism:
From: Number Field in a0 with defining polynomial x
To: Number Field in a with defining polynomial x^8 - 7
Defn: 0 |--> 0,
None),
(Number Field in a1 with defining polynomial x^2 - 7,
Ring morphism:
From: Number Field in a1 with defining polynomial x^2 - 7
To: Number Field in a with defining polynomial x^8 - 7
Defn: a1 |--> -a^4,
None)]
So the totally real subfields in the list come with their embeddings. I.e. the `F_data` is a tuple with three components, the pythonically 0.th component is the field.
The first field listed above is $\Bbb Q=\Bbb Q(0)$, where $0$ is the root of $x$, the second field is the field $\Bbb Q(\sqrt 7)$, where $\sqrt 7$ (considered algebraically) is the root of $x^2-7$. We want the maximal degree, so an idea is to sort w.r.t. the degrees and take the maximal degree. The code doing this is:
sage: var('x');
sage: L.<a> = NumberField(x^8-7)
sage: L_totally_real_subfields = [(F, emb) for (F, emb, _) in L.subfields() if F.is_totally_real()]
sage: L_totally_real_subfields.sort(key=lambda data: data[0].degree())
sage: L_totally_real_subfields[-1]
(Number Field in a1 with defining polynomial x^2 - 7,
Ring morphism:
From: Number Field in a1 with defining polynomial x^2 - 7
To: Number Field in a with defining polynomial x^8 - 7
Defn: a1 |--> -a^4)
Let's "do the same" with some nice cyclotomic field...
sage: K.<z> = CyclotomicField(17)
sage: K_totally_real_subfields = [F for (F, emb, _) in K.subfields() if F.is_totally_real()]
sage: len(K_totally_real_subfields)
4
sage: K_totally_real_subfields.sort(key=lambda F: F.degree())
sage: K_totally_real_subfields[-1]
Number Field in z3 with defining polynomial x^8 + x^7 - 7*x^6 - 6*x^5 + 15*x^4 + 10*x^3 - 10*x^2 - 4*x + 1 with z3 = 1.864944458808712?
sage: _.defining_polynomial().roots(ring=QQbar, multiplicities=False)
[-1.965946199367804?,
-1.700434271459229?,
-1.205269272758513?,
-0.5473259801441657?,
0.1845367189266040?,
0.8914767115530766?,
1.478017834441319?,
1.864944458808712?]
Mon, 04 Jan 2021 14:38:36 +0100https://ask.sagemath.org/question/55072/restricting-a-numberfield-to-the-reals-for-the-calculation-of-a-galois-group/?answer=55097#post-id-55097