2次以上4次以下の1変数多項式の根を求める汎用プログラムをリリースします。このプログラムは4つのファイルから構成されています。
- SolveSolvable2.mac
このファイルを読み込むと、他の3つのファイルも読み込みます。そしてプログラムのエントリーポイントとなる関数SolveSolvable()を定義します。この関数を、1変数多項式を引数として呼び出すと、他のファイルの機能を使いながら、ガロア群を求め、組成列を求め、それに従ってガロア群の縮小=係数体の拡大を繰り返し、解を求めます。またこれらの計算の途中結果を表示し、最後に数値計算で検算します。 - Gal.mac
与えられた多項式のガロア群を計算します。 - FiniteGroup.mac 置換群からその乗算表及び逆元表を作る手続き、与えられた有限群のサイズ最大の正規部分群を作る手続き、与えられた有限群の組成列を求める手続きを定義しています。
- ExtendedField.mac
冪根拡大を複数回繰り返した体における乗算、除算、p乗根を求める手続きを定義します。 - Stages.mac 組成列=正規部分群のリストでループしながら、正規部分群とその一段の縮小した正規部分群の情報からその縮小にガロア対応する体の拡大に使う冪根を求める手続き、拡大体の中でのVの最小多項式を求める手続きを定義しています。
組成列の隣り合う正規部分群の位数の商が2 or 3であるような組成列に対応したケースだけを取り扱っています。
インストールは簡単です。このzipファイルをダウンロードして解凍してください。
そしてmaximaを起動して、load() 関数を使ってSolveSolvable2.macを読み込んでください。全てのファイルの読み込みが終了すれば、SolveSolvable()関数を使うことができます。SolveSolvable2.macのファイルの先頭のコメント部分にいくつかの例題を載せました。
/* gal_phi(xlist):=ev(sum(xlist[i]*cl[i],i,1,length(xlist)),cl:[1,-1,2,3,2]); SolveSolvable(x^2-2)$ SolveSolvable(x^3-2)$ gal_phi(xlist):=ev(sum(xlist[i]*cl[i],i,1,length(xlist)),cl:[-3,-1,5,0,3,2,5]); SolveSolvable(x^4-2)$ SolveSolvable(x^3-3*x-1)$ SolveSolvable(x^4+x^2-1)$ gal_phi(xlist):=ev(sum(xlist[i]*cl[i],i,1,length(xlist)),cl:[1,-1,2,0,3,2,5]); SolveSolvable(x^4+2*x^3+3*x^2+4*x+5)$ SolveSolvable(x^4+x+1)$ */
gal_phi()関数を定義してから、その下にあるSolveSolvable()関数の呼び出しを順に試してみてください。gal_phi()関数で使う係数が異なるとSolveSolvable()の計算に時間がかかったり、メモリを大量に消費することがあります。上記の組み合わせであればiMac 2013でも500MB程度のメモリと数分の時間があれば計算は終了します。