(yacc/debug/toric0.k, 1997, 4/8) << 以下で yacc/debug/toric0.k の使い方を説明します. >> Q. 行列 A で定義される affine toric variety の生成元を計算したい. A. [1] A = \matrix{1&1&1&1\cr 0&1&0&1\cr 0&0&1&1\cr} の時の例を示します. 次のような内容のファイルを作ります. 名前を, a24.k としましょう. load("debug/toric0.k"); A = [[1,1,1,1],[0,1,0,1],[0,0,1,1]]; ans = toric(A); [2] k0 を起動します. k0 [3] いくつかメッセージが表示されて, k0 のプロンプト In[??]= 省略 Overloaded on pushVariables and popVariables. ctrl-C signal is caught in KSexecuteString() and <> is regarded as an error. In[3]=debug/asir0.k you need to start k0 with -f option. In[4]=In[5]= がこのようにでたら, load("a24.k"); とします. a24.k がロードされ, 関数 toric が実行されて 結果が表示されます. [4] 画面に, いくつかメッセージが表示された後に, ---------- generators of the toric ideal are ----- [ -z[2]*z[1]+z[3]*z[0] ] と表示されたら計算が終了です. 上の元が, affine toric variety の (イデアルの)生成元です. この場合には一つしかありません. [5] 計算結果は変数 ans にもはいっています. (ans = toric(A) と代入しているから.) ans : と入力すれば次のように ans の内容を表示してくれます. In[7]=ans : [ -z[2]*z[1]+z[3]*z[0] ] In[8]= [6] ans の中身を ファイルにセーブしたい場合は, Save(ans); と入力して下さい. sm1out.txt にセーブされます. すでに, sm1out.txt が存在する場合は, ans が追加してかきこまれます. [7] quit(); と入力すると k0 を終了します. [注意事項] 行列 A の要素は, 負のものを含んではいけません. [注意事項] 環を定義したときの変数の最大個数は, 100 です. 作業用の変数もありますので, 行列 A の縦と横のサイズの和が 100 に近付いたらもう計算できません. Q. A-超幾何方程式の Fourier 変換の計算法. A. [1] A = \matrix{1&1&1&1\cr 0&1&0&1\cr 0&0&1&1\cr} の時の例を示します. 次のような内容のファイルを作ります. 名前を, i24.k としましょう. load("debug/toric0.k"); fff = ["z[0]*Dz[0]+z[1]*Dz[1]+z[2]*Dz[2]+z[3]*Dz[3]-z[5]", " z[1]*Dz[1] +z[3]*Dz[3]-z[6]", " z[2]*Dz[2]+z[3]*Dz[3]+z[7]", "z[0]*z[3]-z[1]*z[2]"]; ans = zindicial(fff,4,3); A-超幾何方程式 の toric part "z[0]*z[3]-z[1]*z[2]" は, 関数 toric で計算しておいたものを使います. 方程式の変数は必ず, z[i], Dz[i] (i は 0 から) を使います. z[i] が空間変数, Dz[i] が, 微分変数です. 式を " でかこむことを忘れないで下さい. ans = zindicial(fff,4,3); 4 は Dz[i] の現れる最大 index +1 です. 今の場合, Dz[3] が最後の 微分変数ですから, 4 な訳です. n = Dz[i] の現れる最大 index +1 とおくとパラメータはかならず, z[n+1], ..., z[n+m] で与えます. ここで, m はパラメータの個数です. 今の場合, z[5],z[6],z[7] がパラメータです. この m,n を用いると, zindicial は ans = zindicial(fff,n,m); とよぶことになります. [2] k0 を起動します. k0 [3] いくつかメッセージが表示されて, k0 のプロンプト In[??]= 省略 Overloaded on pushVariables and popVariables. ctrl-C signal is caught in KSexecuteString() and <> is regarded as an error. In[3]=debug/asir0.k you need to start k0 with -f option. In[4]=In[5]= がこのようにでたら, load("i24.k"); とします. a24.k がロードされ, 関数 zindicial が実行されて 結果が表示されます. Q. 結果を因数分解したい. A. save してから, 他の数式処理システムで因数分解して下さい. もし, asir がインストールしてあれば, k0 -f と -f オプションをつけて k0 を起動しておくことにより, 関数 Factor で因数分解ができます.