Re: Algebraic Integers
- To: mathgroup at smc.vnet.net
- Subject: [mg28519] Re: [mg28504] Algebraic Integers
- From: Ken Levasseur <Kenneth_Levasseur at uml.edu>
- Date: Tue, 24 Apr 2001 01:48:53 -0400 (EDT)
- References: <200104230103.VAA03947@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Konstantin:
Do you want to base your ordering on the norm of the algebraic integers? If so, the following
code is something I recently wrote up for a colleague. It's a bit rough, but you might want to
try something like this:
We will base all norms on this function. Assume f is an algebraic integer, p is the minimal
polynomial and cRule is the conjugation rule. The indeterminate variable can by anything you
choose as long as you're consistant. I use x for Z[i], \[Omega] for the Eisenstein extension, and
r for Z[Sqrt[K]]. I'm sure the programming could be improved, and extensions with more
complicated conjugates would need a different structure.
GNorm[f_, p_, cRule_] := PolynomialMod[Expand[f * (f /. cRule)], p]
\!\(TraditionalForm\`\[DoubleStruckCapitalC]\)
\!\(GaussianNorm[f_] := GNorm[f, x\^2 + 1, x -> \(-x\)]\)
GaussianNorm[a + b x]
\!\(TraditionalForm\`a\^2 + b\^2\)
\!\(GaussianNorm[\((a + b\ x)\)\^2]\)
\!\(TraditionalForm\`a\^4 + 2\ b\^2\ a\^2 + b\^4\)
\!\(Factor[GaussianNorm[\((a + b\ x)\)\^2]]\)
\!\(TraditionalForm\`\((a\^2 + b\^2)\)\^2\)
Eisenstein Norm
In[11]:=
\!\(EisensteinNorm[f_] :=
GNorm[f, \ \[Omega]\^2 + \[Omega] + 1, \ \[Omega] -> \[Omega]\^2]\)
In[21]:=
EisensteinNorm[a + \[Omega] b]
Out[21]=
\!\(TraditionalForm\`a\^2 - b\ a + b\^2\)
\!\(TraditionalForm\`Q[\@K]\)
In[19]:=
RootKNorm[f_, K_:2] := GNorm[f, r^2 - K, r -> -r]
In[20]:=
RootKNorm[a + b r, K]
Out[20]=
\!\(TraditionalForm\`a\^2 - b\^2\ K\)
Ken Levasseur
Math Sciences
UMass Lowell
Konstantin L Kouptsov wrote:
> I am doing the algebraic manipulations with the numbers a+b*p, where a,b are integers
> and p is essentially the irrational number (say Sqrt[2]). There is a number of rules allowing
> manipulation of the numbers without referring to the value of p (for example: p/: 1/p=p/2;)
> I want function Min[] to calculate the minimum of the set of algebraic integers (a+b*p) the way
> it works for ordinary numbers, but giving the answer in algebraic form:
>
> In:= Min[3 p - 2, 5 p - 4]
> Out:= 3 p -2
>
> Is there any _elegant_ solution for this problem?
- References:
- Algebraic Integers
- From: Konstantin L Kouptsov <klk206@nyu.edu>
- Algebraic Integers