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