代数的数体

Wolfram言語では代数的数をRootオブジェクトとして表現することができる.Rootオブジェクトは代数的数の最小多項式と根番号(Rootオブジェクトが最小多項式のどの根を表しているのかを示す整数)を含んでいる.これにより,任意の複素代数的数の表現が一意的となる.一方で,この表現での演算操作はコストが高いという問題もある.そのため,Wolfram言語では演算式の簡約化のために追加の関数RootReduceを使用することが必要となる.計算を固定された有理数の有限次代数拡大 内に限定することで,その要素を の多項式としてより簡単に表現することができる.

AlgebraicNumber[θ,{c0,c1,,cn}]

で代数的数 を表す

有理数の有限拡大体の要素としての代数的数の表現

が次数 の最小多項式を持つ代数的整数であり, が有理数ならば,AlgebraicNumber[θ,{c0,,cl}]は不活性数値オブジェクトである:
In[1]:=
Click for copyable input
Out[1]=
Nを使うと,AlgebraicNumberオブジェクトの数値的近似が求められる:
In[2]:=
Click for copyable input
Out[2]=

任意の代数的数 および任意の実数のリスト に対して,AlgebraicNumber[θ,{c0,,cl}]を評価すると,AlgebraicNumber[ξ,{d0,,dm}]になる.ここで は, の最小多項式の主係数の任意の因子 について となるような代数的整数 の最小多項式の次数,そして以下が成り立つ.

AlgebraicNumberは代数的整数の拡大体の生成元と,その拡大体の次数の長さに等しい係数リストを自動的に作成する:
In[2]:=
Click for copyable input
Out[2]=
有理数を表すAlgebraicNumberオブジェクトは自動的に数値に還元される:
In[3]:=
Click for copyable input
Out[3]=
明らかに同じ体に存在する(つまり第1,第3要素が等しい)AlgebraicNumberオブジェクトの加算または乗算,有理数とAlgebraicNumberオブジェクトの加算または乗算,あるいはAlgebraicNumberオブジェクトの整数乗を行うと,AlgebraicNumberオブジェクトが得られる:
In[33]:=
Click for copyable input
Out[35]=
RootReduceAlgebraicNumberオブジェクトをRootオブジェクトに変換する:
In[36]:=
Click for copyable input
Out[36]=
ToNumberField[a,θ]

θ により生成された数体上で代数的数 a を表す

ToNumberField[{a1,a2,},θ]

θ により生成された体上で ai を表す

ToNumberField[{a1,a2,}]

単独の代数的数により生成された共通の拡大体上で ai を表す

任意の代数的数を代数体の要素として表す

ToNumberFieldを使うと,指定の代数的数を含む有理数の共通の有限拡大体を求めることができる:
In[7]:=
Click for copyable input
Out[7]=
次の式はRoot[1-10 #12+#14&,4]により生成された体の要素として表す:
In[8]:=
Click for copyable input
Out[8]=

有理数の固定の有限拡大体内での計算は,複素代数的数すべての体の中での計算より格段に速い.

{x,y,z}が代数的数{a,b,c}で置き換えられた有理関数fの値を求めるとする:
In[9]:=
Click for copyable input
{a,b,c}におけるfの値をRootReduceを使って直接計算すると,多少時間がかかる:
In[11]:=
Click for copyable input
Out[11]=
これをより速く行う別の方法として,{a,b,c}を含む共通の代数体で計算を行うというものがある:
In[12]:=
Click for copyable input
Out[12]=
共通の数体の中での計算は格段に速い:
In[13]:=
Click for copyable input
Out[13]=
結果のAlgebraicNumberオブジェクトをRootオブジェクトに変換するのも速い:
In[14]:=
Click for copyable input
Out[14]=

ToNumberField[{a1,a2,}]ToNumberField[{a1,a2,},Automatic]と等価であり,必ずしも最小共通拡大体は使わない.ToNumberField[{a1,a2,},All]は常に最小共通拡大体を使う.

1つ目のAlgebraicNumberオブジェクトはに等しいため,これが示す第四次体 (Root[1-10 #12+#14&,4])を生成しない.しかし,ToNumberFieldが求めた共通体には体すべて (Root[1-10 #12+#14&,4])が含まれる:
In[15]:=
Click for copyable input
Out[15]=
第2引数をAllと指定すると,ToNumberFieldは可能な限り最小の体を探す:
In[16]:=
Click for copyable input
Out[16]=
MinimalPolynomial[a]

代数的数 a の整数の最小多項式の純関数表現を返す

MinimalPolynomial[a,x]

x の多項式として表された代数的数 a の最小多項式を返す

AlgebraicIntegerQ[a]

代数的数 a が代数的整数ならTrueを,さもなければFalseを返す

AlgebraicNumberDenominator[a]

na が代数的整数となるような最小の正の整数 n を返す

AlgebraicNumberTrace[a]

代数的数 a のトレースを返す

AlgebraicNumberNorm[a]

代数的数 a のノルムを返す

AlgebraicUnitQ[a]

代数的数 a が代数的単数ならばTrueを,それ以外ならFalseを返す

RootOfUnityQ[a]

代数的数 a が1のベキ根ならばTrueを,それ以外ならFalseを返す

代数的数の特性を計算するめる関数

代数的数 の最小多項式は,整数係数を持ち,となる最小の正の主係数を持つ最低次の多項式 である.

次の式は純関数として表されたの最小多項式を返す:
In[17]:=
Click for copyable input
Out[17]=
次はxの多項式として表されたRoot[#15-2 #1+7&,1]2+1の最小多項式を返す:
In[18]:=
Click for copyable input
Out[18]=

代数的数はそのMinimalPolynomialがモニックのとき,かつそのときに限り,代数的整数である.

が代数的整数であることを示す:
In[21]:=
Click for copyable input
Out[21]=
が代数的整数ではないことを示す:
In[22]:=
Click for copyable input
Out[22]=
が代数的整数となる最小の正の整数 を求める:
In[23]:=
Click for copyable input
Out[23]=

代数的数 Null のトレースはMinimalPolynomial[a]のすべての根の和である.

のトレース:
In[24]:=
Click for copyable input
Out[24]=

代数的数Null のノルムはMinimalPolynomial[a]のすべての根の積である.

のノルム:
In[25]:=
Click for copyable input
Out[25]=

の両方が代数的整数の場合,言い換えるとAlgebraicNumberNorm[a]またはの場合かつその場合に限り,代数的数 は代数的単位元となる.

GoldenRatioが代数的単位元であることを示す:
In[26]:=
Click for copyable input
Out[26]=
AlgebraicNumber[Root[#13-4#1+17&,1],{1,2,3}]は代数的単位数ではない:
In[19]:=
Click for copyable input
Out[19]=

整数 について である場合,かつその場合に限り,代数的数 は1のベキ根である.

は1のベキ根である:
In[28]:=
Click for copyable input
Out[28]=
MinimalPolynomial[s,x,Extension->a]

上の代数的数 Null の特性多項式を返す

MinimalPolynomial[s,x,Extension->Automatic]

第1引数により生成された数体上のAlgebraicNumberオブジェクト Null の特性多項式を返す

AlgebraicNumberTrace[a,Extension->θ]

上の代数的数 Null のトレースを返す

AlgebraicNumberTrace[a,Extension->Automatic]

第1引数により生成された数体上のAlgebraicNumberオブジェクト Null のトレースを返す

AlgebraicNumberNorm[a,Extension->θ]

上の代数的数 Null のノルムを返す

AlgebraicNumberNorm[a,Extension->Automatic]

第1引数により生成された数体上のAlgebraicNumberオブジェクト Null のノルムを返す

代数適す謡の要素の特性を計算する関数

aAlgebraicNumber[θ,coeffs]であるとすると,MinimalPolynomial[a,x,Extension->Automatic]MinimalPolynomial[a,x]d に等しい.ここで,dの拡大次数である.

の特性多項式は次数4の有理拡大体の要素として表されるが,これはMinimalPolynomialの二乗である:
In[20]:=
Click for copyable input
Out[21]=
Out[22]=

代数的数のトレースは,特性多項式の根の総和である.aAlgebraicNumber[θ,coeffs]ならば,AlgebraicNumberTrace[a,Extension->Automatic]d AlgebraicNumberTrace[a]と等しい.ここで dの拡大次数である.

のトレースは次数4の有理拡大体の要素として表されるが,これはAlgebraicNumberTraceの2倍である:
In[32]:=
Click for copyable input
Out[33]=
Out[34]=

代数的数のノルムは,特性多項式の根の総積である.aAlgebraicNumber[θ,coeffs]なら,AlgebraicNumberNorm[a,Extension->Automatic]AlgebraicNumberNorm[a]dに等しい.ここで dの拡大次数である.

のノルムは,次数4の有理拡大体の要素として表されるが,これはAlgebraicNumberNormの二乗に等しい:
In[35]:=
Click for copyable input
Out[36]=
Out[37]=
NumberFieldIntegralBasis[a]

代数的数 a により生成された体の整数底を返す

NumberFieldRootsOfUnity[a]

代数的数 a により生成された体の1のベキ根を返す

NumberFieldFundamentalUnits[a]

代数的数 a により生成された体の基本単位元のリストを返す

NumberFieldNormRepresentatives[a,m]

代数的数 a により生成された体におけるノルム±m の代数的整数のクラスの代表値を返す

NumberFieldSignature[a]

代数的数 a により生成された体のシグネチャを返す

NumberFieldDiscriminant[a]

代数的数 a により生成された体の判別式を返す

NumberFieldRegulator[a]

代数的数 a により生成された体の基準を返す

NumberFieldClassNumber[a]

代数的数 aにより生成された数体のクラス数

代数体の特性を計算する関数

代数体 の整数底は, の代数的整数の加群の底を形成する代数的数のリストである. が代数的整数であり,すべての代数的整数 が次のように一意的に表せるとき,かつその場合に限り,集合は代数体 の整数底である.

ここで は整数係数である.

の整数底:
In[23]:=
Click for copyable input
Out[23]=
533+429 #1+18 #12+#13& の最初の根により生成された体の整数底を返す:
In[24]:=
Click for copyable input
Out[24]=
NumberFieldIntegralBasisを使うと,対抗式と根の数を与えることにより数体を指定することができる:
In[25]:=
Click for copyable input
Out[25]=
Root[9-2 #2+#4&,4]により生成された体における1のベキ根を返す:
In[26]:=
Click for copyable input
Out[26]=
における1のベキ根すべてである:
In[27]:=
Click for copyable input
Out[27]=

が代数的単位元であり,すべての代数的単位元 が次のように一意的に表される場合,かつその場合に限り,は代数体 の基本単位元である.

ここで, は1のベキ根, は整数の指数である.

#14-10 #12+1& の三次の根により生成された体の基本単位元の集合:
In[28]:=
Click for copyable input
Out[28]=
二次体の基本単位元:
In[44]:=
Click for copyable input
Out[44]=
#12-7& の一次の根により生成された体のノルム9の要素の類の代表値一式:
In[45]:=
Click for copyable input
Out[45]=
のノルム2の要素の類の代表値一式:
In[29]:=
Click for copyable input
Out[29]=
多項式#5+#4+#3+#2+1& が実根1つと,2対の複素共役根を持つことを示す:
In[30]:=
Click for copyable input
Out[30]=
には12個の実根と6対の複素共役根が埋め込まれている:
In[48]:=
Click for copyable input
Out[49]=

数体 の判別式は の整数底の判別式,つまり要素がAlgebraicNumberTrace[ai aj,Extension->Automatic]である行列の判別式である.判別式の値は,整数底の値に依存しない.

の判別式:
In[50]:=
Click for copyable input
Out[50]=
多項式#5+#4+#3+#2+1&の根により生成された体の判別式を求める.判別式の値はどの根を用いるかに因らないため,NumberFieldDiscriminantで多項式だけを指定することができる:
In[51]:=
Click for copyable input
Out[51]=

数体 の基準は,次の対数埋込みにおいて の単位元のグループの写像の格子体積である.

ここで , , への実数埋込みであり,, , への複素共役埋込みのなかの1つである.

の基準:
In[52]:=
Click for copyable input
Out[52]=
多項式#13-3 #12+1& の根により生成された体の基準を求める.単数基準の値は根の選択に因らないため,NumberFieldRegulatorで多項式だけを指定することができる:
In[31]:=
Click for copyable input
Out[31]=
のクラス数を与える:
In[27]:=
Click for copyable input
Out[27]=