x1,…,xn の多項式は、変数を置換しても変わらないとき対称であるといいます。x12+x22+x32 や x1x2x3−1 は対称ですが、x12x2 は対称ではありません。x1 と x2 を入れ替えると x1x22 になってしまうからです。対称式の基本定理によれば、体 F 上では、すべての対称式はいくつかの基本的な対称式、すなわち基本対称式 e1,…,en の多項式としてただ一通りに表せます。
Sym[Xn]=F[e1,…,en]≅F[y1,…,yn].
ここで Xn は集合 {x1,…,xn}、Sym[Xn] は F に係数をもつ Xn の対称式全体のなす環、F[y1,…,yn] は n 個の新しい変数の多項式環です。等号はすべての対称式が ei の多項式であることを表し、各 yi を ei に送る同型は、その表し方がただ一通りであることを表しています。
通常の証明はアルゴリズムになっており、しかも短いものです。私は2022年に初めてこれをSageMath アーカイブのノートブックで実装しました。ここではブラウザ上で動きます。
変数の個数 n∈N+ を固定します。次数 d≥1 の基本対称式は、相異なる d 個の変数の積すべての和です。
ed=1≤i1<i2<⋯<id≤n∑d 個の因子xi1⋯xid,
また e0=1 とします。たとえば変数が3個のときは
e1e2e3=x1+x2+x3,=x1x2+x1x3+x2x3,=x1x2x3,
であり、d>n ではつねに ed=0 です。選べるだけの変数がないからです。
このアルゴリズムでは、多項式のどの項が先頭に来るかを知る必要があります。単項式 x1α1⋯xnαn を、α=(α1,…,αn)∈Nn として xα と書き、単項式を次数付き辞書式順序(deglex)で並べます。まず全次数 α1+⋯+αn で比較し、次数が同じ単項式どうしでは x1 の指数で、次に x2 の指数で、というように比較していきます。したがって x13>x1x22>x23>x12 であり、一般に x1>x2>⋯>xn です。0でない多項式の先頭項とは最大の単項式をもつ項のことで、その単項式を先頭単項式と呼びます。
deglex は単項式の単なる並べ方ではなく、単項式順序です。つまり単項式全体の上の全順序であって、次の性質を満たすものです。
- 乗法と両立する:xα<xα′ ならば、すべての単項式 xγ について xαxγ<xα′xγ が成り立つ。
- 整列順序である:空でない単項式の集合はつねに最小元をもつ。同値な言い方をすれば、単項式の無限狭義減少列 xα(1)>xα(2)>xα(3)>⋯ は存在しない。
deglex はこの両方の性質をもちます。xγ を掛けると、xα と xα′ の次数には同じ量が加わり、指数にも同じ値が加わるので、どちらの比較も変わりません。また、どの単項式についても、それより小さい単項式は有限個(次数がそれ以下のもの)しかないので、狭義減少列は必ずどこかで止まります。
1つ目の性質のおかげで、先頭項はうまく振る舞います。積の先頭項は先頭項の積です。g の項と h の項のそれ以外の積は、いずれも少なくとも一つはより小さい単項式を含んでおり、掛け算をしてもそれはより小さいままだからです。2つ目の性質は、アルゴリズムが停止することを保証してくれます。
もう一つ、対称式に特有の事実があります。対称式の先頭単項式の指数は非増加、すなわち α1≥α2≥⋯≥αn です。αi<αi+1 となる xα が現れたとすると、xi と xi+1 を入れ替えることで、その多項式の別の単項式、しかもより大きなものが得られます。したがって xα は先頭単項式ではなかったことになります。
f を先頭項が cxα の対称式とします。証明のアイデアは、この項を基本対称式の積で取り除くことです。つまり、指数の有限列 b=(b1,…,bn)∈Nn で、
eb=e1b1e2b2⋯enbn
が同じ先頭単項式 xα をもつものを見つけます。そうすれば f−ceb では2つの先頭項が打ち消し合います。
先頭項は掛け合わさるので、eb の先頭項 lt(eb) は各因子の先頭項の積であり、ek の先頭項は係数 1 の x1x2⋯xk です。変数 xi がそこに現れるのはちょうど k≥i のときなので、
lt(eb)=k=1∏n(x1x2⋯xk)bk=x1b1+b2+⋯+bnx2b2+⋯+bn⋯xnbn.
となります。これが xα になるには指数が一致しなければならず、b は次の三角型の連立方程式の解でなければなりません。
α1α2αn=b1+b2+⋯+bn,=b2+⋯+bn,⋮=bn.
各式を一つ上の式から引くと bi=αi−αi+1 が残り、最後の式からは bn=αn が得られます。したがって候補はちょうど一つであり、これを β(α) と呼ぶことにします。
β(α)i={αi−αi+1αi(1≤i<n のとき),(それ以外のとき).
これが負の成分をもたない有効な指数列になるのはちょうど α1≥α2≥⋯≥αn のときであり、これは対称式の先頭単項式がつねに満たす条件です。たとえば n=3 で先頭単項式が x13x2x3 のとき、α=(3,1,1) から β(α)=(2,0,1) が得られます。実際、e12e3=(x1+x2+x3)2x1x2x3 の先頭単項式は x12⋅x1x2x3=x13x2x3 です。
対称式 f が与えられたとき:
- f が 0 または定数なら、すでに ei の多項式になっているので、何もする必要はありません。
- そうでなければ、deglex での先頭項を cxα とし、b=β(α) とします。このとき f は、ceb と、f−ceb(eb は xi について展開したもの)の ei による表示との和になります。後者はアルゴリズムをもう一度実行して求めます。
多項式 f−ceb は対称式の差なので依然として対称であり、その先頭単項式は xα より小さくなります。2つの先頭項は打ち消し合い、f と ceb のそれ以外の項はすべてより小さい単項式をもつからです。こうしてアルゴリズムを実行すると、先頭単項式が狭義に減少していく対称式の列 f0=f,f1,f2,… が得られます。deglex は整列順序なので、このような列が永遠に続くことはありません。有限回のステップの後に残るのは 0 であり、途中で集めた項 ceb を足し合わせると f になります。
この表示は一意でもあります。2つの多項式 P,Q∈F[y1,…,yn] について f=P(e1,…,en)=Q(e1,…,en) だとしましょう。すると差 R=P−Q は R(e1,…,en)=0 を満たすので、ここから R=0 が従うこと、すなわち変数に ei を代入して0になるような0でない多項式は存在しないこと(ei は代数的に独立である)を示せば十分です。
RR(e1,…,en)=b∈S∑cbyb,=b∈S∑cbeb,
と書きます。ここで S⊂Nn は係数 cb が0でない指数からなる有限集合であり、S は空でないと仮定します。各 eb の先頭項は係数 1 の xα(b) で、α(b)i=bi+bi+1+⋯+bn です。また b は α(b) から β(α(b)) として復元できるので、異なる b は異なる α(b) を与えます。したがって、b∈S に対する有限個の単項式 xα(b) のなかには最大のもの xα(b∗) があり、それを与える b∗∈S はただ一つです。この単項式は cb∗eb∗ に係数 cb∗ で現れます。他の eb は自身の先頭単項式 xα(b) 以下の単項式しかもたず、xα(b) は xα(b∗) より小さいので、xα(b∗) をまったく含みません。よって R(e1,…,en) における xα(b∗) の係数は cb∗=0 となり、R(e1,…,en)=0 に反します。したがって S は空であり、R=0、つまり P=Q です。
下の計算機は各ステップ、すなわち先頭項、α と β(α)、そして残り fi を表示します。長い多項式を読みやすくするため、軌道ごとにまとめています。mλ は、指数が λ の並べ替えになっている相異なる単項式の和です。たとえば n=3 では
m(2,1)=x12x2+x12x3+x1x22+x22x3+x1x32+x2x32.
となります。多項式が対称であるのは、λ1≥⋯≥λn を満たす mλ の一次結合であるときに限ります。計算機はそれらを xλ の大きい順に並べるので、最初のものに先頭項が含まれます。計算機は計算もこの形で行います。積 eb を展開することはせず、軌道の係数に対して直接各 ej を掛けていきます。
試してみる
x_1 または x1 と書き、+ - * / ^ と括弧が使えます。2x1x2 も積になります。e(k)、p(k)、h(k) はそれぞれ k 次の基本対称式、べき和、完全斉次対称式です。
多項式は対称でなければなりません。そうでない場合、アルゴリズムは正常に終了できません。もし終了したとすれば、その多項式は対称式の組み合わせであり、したがってそれ自身も対称であることになって、↯ です。Not symmetric の例を見ると、どこで破綻するかがわかります。遅かれ早かれ先頭項の指数が非増加の順に並ばなくなり、β(α) に負の成分が現れて、そのような先頭項をもつ ei の積は存在しなくなるのです。
べき和 pk=x1k+⋯+xnk については、もっと直接的な方法としてニュートン・ジラールの恒等式 アーカイブがあります。これは k≥1 に対して、pk を ei とそれ以前のべき和で表すものです。
pk=(−1)k+1(kek+i=1∑k−1(−1)ipiek−i),
ここで i>n ではつねに ei=0 とします(また xi0=1 なので p0=n です)。p1、p2 と順に、それぞれをそれ以前のものから pk まで計算していくと一つの表示が得られ、一般のアルゴリズムを x1k+⋯+xnk に適用するともう一つの表示が得られます。一意性からこの2つは同じ多項式でなければならず、実際その差は0になります。
試してみる
今度は
f(x)=xn+an−1xn−1+⋯+a0
が C に根 x1,x2,…,xn をもつとし、各根を重複度の回数だけ並べて f(x)=(x−x1)⋯(x−xn) となるようにします。f の判別式とは積
Δ(f)=1≤i<j≤n∏(xi−xj)2,
のことであり、これによって f が重根をもつかどうかがわかります。
∃i=j:xi=xj⟺Δ(f)=0.
Δ(f) が根の対称式であることは簡単に確かめられます。どの置換も互換の合成なので、2つの根 xi と xj を入れ替えても変わらないことを確かめれば十分です。
- どちらも含まない因子はそのままです。
- 一方だけを含む因子は、(xi−xk)2 と (xj−xk)2 のように2つずつ入れ替わります。底の符号が変わることはあっても、それは2乗によって消えます。
- 両方を含む因子は底の符号が変わり、(xi−xj)2 は (xj−xi)2 になりますが、2乗すれば変わりません。
したがって基本定理により、Δ(f) は根の基本対称式によってただ一通りに書けます。ところがこれらは、符号を除けば f の係数にほかなりません。(x−x1)⋯(x−xn) を展開して f と比較すると、an=1 として 0≤i≤n に対し
ei(x1,…,xn)=(−1)ian−i
が成り立ちます。よって ∏i<j(xi−xj)2 に対してアルゴリズムを実行し、各 ei に (−1)ian−i を代入すれば、次数 n のあらゆるモニック多項式の判別式を、根を知らなくても係数で表せます。n=2 ではおなじみの Δ=a12−4a0 であり、n=3 では
Δ=a12a22−4a0a23−4a13+18a0a1a2−27a02,
となります。これは x3+px+q に対しては −4p3−27q2 に帰着します。
最高次係数 an が 1 でない多項式は、モニック多項式 f/an と同じ根をもちます。その判別式は通常 an2n−2Δ(f/an) と定義されます。この因子によって判別式は a0,…,an の整数係数多項式となり、それが0になるのはちょうど Δ(f/an) が0のときです。
下では、入力した多項式の次数に対応する公式をアルゴリズムで計算し、それをその多項式の係数で評価します。最初の例 (x−1)2(x+2)=x3−3x+2 は二重根をもつので、判別式は0です。2つ目の例 (x−1)(x+1)(x+3)=x3+3x2−x−3 は相異なる3つの根をもち、判別式は0ではありません。
試してみる
係数は有理数です。積とべきは展開されます(例:(x - 1)^2 (x + 3))。