Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-Maxima入門- 対称式を基本対称式で表す方法

 

 

f:id:jurupapa:20141025073411j:plain

対称式(対称多項式)とは幾つかの変数からなる多項式で、それらの変数をどのように入れ替えても元の式に戻る、という性質を持ったものを指します。

\( x^2 + y^2 \)は2変数の対称式の例です。 

高校数学でもよく知られているように任意の対称式は基本対称式で表すことができます。2変数の基本対称式 \( e_{1}=x+y,\ e_{2}=x\,y \)を使えば\( x^2+y^2=e_{1}^2-2\,e_{2} \) とかけるのがその一例です。

Maximaを使うと対称式を基本対称式で表すことが簡単にできます。早速やってみます。

まず例として一つ対称式を考えましょう。

(%i1) spoly:x^2+3*x*y+y^2;

 \tag{%o1} y^2+3\,x\,y+x^2

この対称式を「短縮形」と呼ばれる多項式に変換します。

(%i2) tcontract(spoly,[x,y]);
 \tag{%o2} 3\,x\,y+x^2

この短縮形を第2引数に、また第3引数に変数のリスト、第1変数に第3引数の長さをリストにしたものを与えて関数elem()を呼び出します。
(%i3) elem([2],%,[x,y]);
 \tag{%o3} \mathrm{e2}+\mathrm{e1}^2

簡単に基本対称式で表すことができました。

念のため、検算をしてみましょう。e1, e2に基本対称式を代入して計算を進めます。
(%i4) %,e1:x+y,e2:x*y,expand;

 \tag{%o4} y^2+3\,x\,y+x^2

ちゃんと元の式に戻りました。

もう一つやってみましょう。別の対称式を考えます。今度は因数分解された形で進めてみます。

(%i5) spoly:(x^2+y)*(x+y^2);
 \tag{%o5} \left(y+x^2\right)\,\left(y^2+x\right)

これを短縮形に変換します。
(%i6) tcontract(spoly,[x,y]);
 \tag{%o6} x^2\,y^2+x\,y+x^3

では2変数の基本対称式で表してみましょう。

(%i7) elem([2],%,[x,y]);
 \tag{%o7} \mathrm{e2}\,\left(\mathrm{e2}-2\,\mathrm{e1}+1\right)+\mathrm{e1}\,\left(\mathrm{e1}^2-\mathrm{e2}\right)

ちゃんと表すことができました。再び検算です。e1, e2に基本対称式を代入してから、因数分解してみます。
(%i8) %,e1:x+y,e2:x*y,factor;
 \tag{%o8} \left(y+x^2\right)\,\left(y^2+x\right)

元の式に戻りました!

 

Maximaを使えば対称式を基本対称式で表すことくらい簡単にできそう、と思ってマニュアルを一見してもよくわかりません。「30. Symmetries」に基本対称関数などの言葉は出てきますが、いきなりcomp2pui()とかele2pui()などおかしな名前の関数が並び、例を見てもよく分からないのです。elem()の例題の入力となる対称式は、上記のように短縮系である必要があります。この辺が分かりにくさかなとも思います。

結局、このパッケージを書いた著者が書いた論文:

Symbolic computation with symmetric polynomials, an extension to Macsyma. Annick Valibouze. Computers and Mathematics (MIT, USA, June 13-17, 1989), Springer-Verlag, New York Berlin, 308-320, 1989.

を読んで、ようやく短縮系や分割系などの定義がわかり、関数の使い方がわかりました。この記事はその覚書です。