- ソフトウェアのインストールが済んで、簡単なことができるようになったので、環を扱ってみよう
> ring myring = 32003,(x,y,z),(dp,C);
- のように"myring"という名前の環を定義する
- 以下が定義の3要素 coefficients, names_of_ring_variables,ordering
ring name = ( coefficients ), ( names_of_ring_variables ), ( ordering );
- 3変数 x,yからなって標数0で、変数の並べ方の順序をlpで取り扱うような環r1を作ってみる
- グレブナー基底の計算には斉次逆辞書式をよく使う、とか、連立方程式を解くときには「辞書式順序の斉次逆辞書式順序にはない特殊性を使う」とか、使いまわしのルールもあるようだ(参考こちら)
ring r1 = 0,(x,y),lp;
> ring rr = 3,(x,y,z),dp;
> setring rr;
> poly f = x+2y+3z+4xy+5yz+6zx+7x2y+8y2z+9z2x;
> f;
x2y-y2z+xy-yz+x-y
-
-
- となる。3は0のことなので、3z,6zx,9z2xの項は消え(係数が0)ている。また、3で割って余りが2の項は-1をその係数として取っている
- 変数の並べ方の順序は色々なルールが入れられるが、lpは辞書式順序で、rpというのは逆辞書式順序なので、それをr2として作ってみる
ring r2 = 0,(x,y),rp;
- この二つの体を「環境」に設定した上で、多項式を登録してみる
>setring r1;
>poly f = (x-y)^3;
>f;
x3-3x2y+3xy2-y3
- がに書き換えて登録された
- 環境で使う体をr2に変えてやってみる
>setring r2;
poly f = (x-y)^3;
f;
-y3+3y^2x-3yx2+x3
- x,yの優先順位が入れ替わってとして登録されていることがわかる
- さて、標数0の3変数の環をlpで作って環境の環に指定しよう
>ring r = 0,(x,y,z),lp;
>setring r;
- の球を考えて、さらにというような球とという平面の合わさった面とを考える
>poly f = x2+y2+z2-1;
>poly g = f*(z-2);
>ideal I = f,g;
>I;
I[1]=x2+y2+z2-1
I[2]=x2z-2x2+y2z-2y2+z3-2z2-z+2
>
- このイデアルを操作して点(0,1,0)がfとgの両方の交わり?上にあることを確認するのには次のようにするそうだ
>ideal J = subst(I,var(1),0)
>J;
J[1]=y2+z2-1
J[2]=y2z-2y2+z3-2z2-z+2
- f,gについてx=0を代入したものになっている
- 引き続いて第二変数yの値が1である部分を取り出す
>J = subst(J,var(2),1)
>J;
J[1]=z2
J[2]=z3-2z2
>
- x=0,y=1の部分が取り出されている
- さらにz=0を指定する
>J = subst(J,var(3),0);
>J;
J[1]=0
J[2]=0
>
- どちらも0担っているので、(0,1,0)はf,gで定まる多様体の上、ということ(らしい)
- コマンドをいつも手打ちするのは面倒
> < "test.txt"
- 逆にオブジェクトを描き出すには(output.txtファイルにオブジェクトpを書き出す)
> write("output.txt",p)
exit;