Ask Your Question
2

Extension field adjoining two roots

asked 2017-12-31 02:49:21 +0200

Rodrigo Raya gravatar image

updated 2017-12-31 18:04:57 +0200

I'm trying to construct given an irreducible polynomial $f \in \mathbb{Q}[X]$ an extension field that adjoins two of its roots $\alpha_1,\alpha_2$. I'm trying to follow the approach suggested in this question . However, with the following code:

P.<x> = QQ[]
f = x^3+2*x+5 # f = P([5,2,0,0,1]) if you want
f_roots = f.roots(QQbar, multiplicities=False)
print f_roots
alpha = f_roots[0]
beta = f_roots[1]
K = QQ[alpha,beta]
K['x'](f).is_irreducible()

But this gives the error:

ValueError: defining polynomial (x^3 + 2*x + 5) must be irreducible

Although, the polynomial is clearly irreducible over $\mathbb{Q}$. Doing it as:

P.<x> = QQ[]
f = x^3+2*x+5
f_roots = f.roots(QQbar, multiplicities=False)
alpha = f_roots[0]
K.<a> = QQ[alpha]
beta = f_roots[1]
K1.<b> = K[beta]

Gives error:

ValueError: base field and extension cannot have the same name 'a'

What is going wrong? Is this the right way to construct the extension field with two roots?

Edit

Let me emphasize that I'm looking for a method that works for an arbitrary degree not just for degree 3. My actual problem goes on a degree four polynomial. So take as an example:

f = x^4+2*x+5

instead of the previous one.

edit retag flag offensive close merge delete

Comments

1

May I suggest leaving the original example, and adding the new example in the "Edit" part?

slelievre gravatar imageslelievre ( 2017-12-31 16:54:23 +0200 )edit

2 Answers

Sort by ยป oldest newest most voted
3

answered 2018-01-01 12:06:40 +0200

vdelecroix gravatar image

updated 2018-01-01 12:06:55 +0200

There is a simple approach that consists in using number_field_elements_from_algebraics

sage: from sage.rings.qqbar import number_field_elements_from_algebraics
sage: number_field_elements_from_algebraics([alpha, beta])
sage: K, (a,b), phi = number_field_elements_from_algebraics([alpha, beta])
sage: K   # the field
Number Field in a with defining polynomial y^6 + 12*y^4 + 36*y^2 + 707
sage: a   # alpha in K
1/90*a^4 + 1/9*a^2 + 1/2*a + 8/45
sage: b   # beta in K
1/90*a^4 + 1/9*a^2 - 1/2*a + 8/45
sage: phi(a) == alpha  and phi(b) == beta # phi is the embedding K -> QQbar
True
edit flag offensive delete link more
2

answered 2017-12-31 12:43:46 +0200

updated 2017-12-31 15:50:32 +0200

This works for this particular case:

sage: P.<x> = QQ[]
sage: f = x^3+2*x+5 # f = P([5,2,0,1]) if you want
sage: f_roots = f.roots(QQbar, multiplicities=False)
sage: f_roots
[-1.328268855668609?,
 0.664134427834305? - 1.822971095411114?*I,
 0.664134427834305? + 1.822971095411114?*I]
sage: alpha = f_roots[0]
sage: K = QQ[alpha]
sage: K['x'](f).is_irreducible()
False
sage: factors = K['x'](f).factor()
sage: factors
(x - a) * (x^2 + a*x + a^2 + 2)
sage: g = factors[1][0]
sage: g
x^2 + a*x + a^2 + 2
sage: L.<b> = K.extension(g)
sage: L
Number Field in b with defining polynomial x^2 + a*x + a^2 + 2 over its base field
sage: L['x'](g).factor()
(x - b) * (x + b + a)
sage: L['x'](f).factor()
(x - b) * (x - a) * (x + b + a)
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

3 followers

Stats

Asked: 2017-12-31 02:49:21 +0200

Seen: 713 times

Last updated: Jan 01 '18