Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: A question about algebraic numbers using Mathematica

  • To: mathgroup at smc.vnet.net
  • Subject: [mg62795] Re: [mg62762] A question about algebraic numbers using Mathematica
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Mon, 5 Dec 2005 13:40:58 -0500 (EST)
  • References: <200512050837.DAA08323@smc.vnet.net> <DA57D525-3C39-4D6F-95B4-D74C1973B5FF@mimuw.edu.pl>
  • Sender: owner-wri-mathgroup at wolfram.com

On 5 Dec 2005, at 23:24, Andrzej Kozlowski wrote:

>
> On 5 Dec 2005, at 17:37, Kent Holing wrote:
>
>> I want to find the inverse of 2 - r in Q[r] where r is a root of  
>> the equation
>> x^4 - 2c x^3 + (c^2 - 2a^2) x^2 + 2a^2 c x - a^2 c^2 = 0 for a, b  
>> and c integers.
>>
>> Can this be done for general a, b and c? (I know how to do it for  
>> specific given numerical values of a, b and c.)
>>
>> Kent Holing
>>
>
>
> I think this can be done using Groebner basis. Suppose r satisfies  
> the above equation and let v be 2-r. Let us first find the  
> algebraic equation satisfied by v.
>
> In[1]:=
> poly1 = First[GroebnerBasis[{r^4 - 2*c*r^3 + (c^2 - 2*a^2)*r^2 +  
> 2*a^2*c*r - a^2*c^2, v - (2 - r)}, {a, b, c, v},
>     {r}]]
>
> Out[1]=
> v^4 + 2*c*v^3 - 8*v^3 - 2*a^2*v^2 + c^2*v^2 - 12*c*v^2 + 24*v^2 +  
> 8*a^2*v - 4*c^2*v - 2*a^2*c*v + 24*c*v - 32*v -
>   8*a^2 - a^2*c^2 + 4*c^2 + 4*a^2*c - 16*c + 16
>
> From this we can easily see what the inverse of v is as a  
> polynomial in v with rational coefficients, and by substituting 2-r  
> for v we can also get a polynomial in r. We proceed as follows.  
> First we find the free term (not involving v) in poly1:
>
> In[2]:=
> free = poly1 /. v -> 0
>
> Out[2]=
> (-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16
>
> Next we subtract the free term from poly1 and divide by v:
>
> In[3]:=
> poly2 = Cancel[(poly1 - free)/v]
>
> Out[3]=
> v^3 + 2*c*v^2 - 8*v^2 - 2*a^2*v + c^2*v - 12*c*v + 24*v + 8*a^2 -  
> 4*c^2 - 2*a^2*c + 24*c - 32
>
> Now substitute 2-r for v:
>
> In[4]:=
> q = Expand[poly2 /. v -> 2 - r]
>
> Out[4]=
> -r^3 + 2*c*r^2 - 2*r^2 + 2*a^2*r - c^2*r + 4*c*r - 4*r + 4*a^2 -  
> 2*c^2 - 2*a^2*c + 8*c - 8
>
> The inverse ought to be the polynomial poly3 given by:
>
> In[5]:=
> poly3 = Expand[(q/free)*(r - 2)]
>
> Out[5]=
> -(r^4/((-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16)) +
>   (2*c*r^3)/((-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16) +
>   (2*a^2*r^2)/((-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16) -
>   (c^2*r^2)/((-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16) -
>   (2*a^2*c*r)/((-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16) -
>   (8*a^2)/((-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16) +
>   (4*c^2)/((-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16) +
>   (4*a^2*c)/((-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16) -
>   (16*c)/((-c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16) + 16/((- 
> c^2)*a^2 + 4*c*a^2 - 8*a^2 + 4*c^2 - 16*c + 16)
>
> Finally we check that this is indeed the inverse of r-2 modulo the  
> original polynomial p:
>
> In[6]:=
> FullSimplify[PolynomialReduce[poly3, r^4 - 2*c*r^3 + (c^2 - 2*a^2) 
> *r^2 + 2*a^2*c*r - a^2*c^2, r]]
>
> Out[6]=
> {{1/(a^2*((c - 4)*c + 8) - 4*(c - 2)^2)}, 1}
>
> We get the remainder 1, as we should.
>
> Andrzej Kozlowski

Sorry, I got confused near the end. The inverse of (r-2) is of course  
the polynomial inv=q/free above. The last part of the argument shows  
that this polynomial ( inv)  is the inverse of (r-2) modulo the  
original polynomial in r.



  • Prev by Date: Re: A question about algebraic numbers using Mathematica
  • Next by Date: Re: Rendering goes into infinite loop
  • Previous by thread: Re: A question about algebraic numbers using Mathematica
  • Next by thread: Re: A question about algebraic numbers using Mathematica