=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/exp/exp-ja.texi,v retrieving revision 1.49 retrieving revision 1.53 diff -u -p -r1.49 -r1.53 --- OpenXM/src/asir-doc/exp/exp-ja.texi 2014/12/14 01:06:44 1.49 +++ OpenXM/src/asir-doc/exp/exp-ja.texi 2016/06/01 06:33:17 1.53 @@ -1,4 +1,4 @@ -%% $OpenXM: OpenXM/src/asir-doc/exp/exp-ja.texi,v 1.48 2014/05/29 13:18:18 ohara Exp $ +%% $OpenXM$ \input texinfo @iftex @catcode`@#=6 @@ -2729,7 +2729,8 @@ ChangeLog @comment --- 関数の簡単な説明 --- @table @t @item nk_restriction.restriction(@var{Id}, @var{VL}, @var{DVL}, @var{W}) -:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての制限加群を返す。 +:: D 加群 M = D / @var{Id} (ホロノミック D イデアル @var{Id}) に対して, +重みベクトル @var{W} についての制限加群を返す. @end table @comment --- 引数の簡単な説明 --- @@ -2746,28 +2747,29 @@ ChangeLog @itemize @bullet @item -@var{W} の要素は非負整数で、0 番目の要素から連続して正の整数が入らなければならない。 -(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ) +@var{W} の要素は非負整数で, 0 番目の要素から連続して正の整数が入らなければならない. +(すなわち, @code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ) @item -正の重みを持つ変数についての制限を行う。 -例えば、@var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば -x,y について制限を行う。 +正の重みを持つ変数についての制限を行う. +例えば, @var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば, +x,y について制限を行う. @end itemize -以下は、イデアル +以下は, イデアル @iftex @tex $I = D \cdot \{x \partial_x -1, y \partial_y - 1\} $ @end tex -の -@tex -$x$ -@end tex +とおいた時, D 加群 +@tex $M = D / I$ @end tex +の +@tex $x$ @end tex @end iftex @ifinfo -I = D . @{ x dx -1, y dy - 1 @} の x +I = D . @{ x dx -1, y dy - 1 @} とおいた時, +D 加群 M = D / I の x @end ifinfo -についての制限加群を計算した例である。 +についての制限加群を計算した例である. @example [1432] nk_restriction.restriction([x*dx-1,y*dy-1],[x,y],[dx,dy],[1,0]); -- generic_bfct_and_gr :0.001sec(0.001629sec) @@ -2777,8 +2779,22 @@ B_@{S0@} length : 2 -- fctr(BF) + base :0.000999sec(0.0005109sec) [[y*dy-1,(y*dy-1)*dx,-1],[[1],[0]]] @end example +返り値の第 1 番目の要素 @code{[[1],[0]]]} は, +制限加群の基底 +@iftex +@tex $\partial_x^1, \partial_x^0$ @end tex +を意味し, +返り値の第 0 番目の要素から, 制限加群は +@tex $(y \partial_y - 1, 0), (0, y\partial_y-1), (-1,0)$ @end tex +@end iftex +@ifinfo +dx^1, dx^0 +を意味し, +返り値の第 0 番目の要素から, 制限加群は +(y dy - 1, 0), (0, ydy-1), (-1,0) +@end ifinfo +で生成されることがわかる. - @node nk_restriction.restriction_ideal,,, D 加群の制限に関する関数 @subsection @code{nk_restriction.restriction_ideal} @comment --- 索引用キーワード @@ -2787,7 +2803,7 @@ B_@{S0@} length : 2 @comment --- 関数の簡単な説明 --- @table @t @item nk_restriction.restriction_ideal(@var{Id}, @var{VL}, @var{DVL}, @var{W}) -:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての制限イデアルを返す。 +:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての制限イデアルを返す. @end table @comment --- 引数の簡単な説明 --- @@ -2804,23 +2820,19 @@ B_@{S0@} length : 2 @itemize @bullet @item -@var{W} の要素は非負整数で、0 番目の要素から連続して正の整数が入らなければならない。 -(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ) +@var{W} の要素は非負整数で, 0 番目の要素から連続して正の整数が入らなければならない. +(すなわち, @code{[1,1,0,0,0]} は OK だが, @code{[1,0,1,0,0]} はダメ) @item -正の重みを持つ変数についての制限を行う。 -例えば、@var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば -x,y について制限を行う。 +正の重みを持つ変数についての制限を行う. +例えば, @var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば, +x,y について制限を行う. @end itemize -以下は、イデアル +以下は, イデアル @iftex -@tex -$I = D \cdot \{x \partial_x -1, y \partial_y - 1\} $ -@end tex +@tex $I = D \cdot \{x \partial_x -1, y \partial_y - 1\} $ @end tex の -@tex -$x$ -@end tex +@tex $x$ @end tex @end iftex @ifinfo I = D . @{ x dx -1, y dy - 1 @} の x @@ -2845,7 +2857,7 @@ B_@{S0@} length : 2 @comment --- 関数の簡単な説明 --- @table @t @item nk_restriction.integration(@var{Id}, @var{VL}, @var{DVL}, @var{W}) -:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての積分加群を返す。 +:: D 加群 M = D / @var{Id} (ホロノミック D イデアル @var{Id}) に対して, 重みベクトル @var{W} についての積分加群を返す. @end table @comment --- 引数の簡単な説明 --- @@ -2865,28 +2877,27 @@ B_@{S0@} length : 2 @comment --- @bullet は黒点付き --- @itemize @bullet @item -@var{W} の要素は非負整数で、0 番目の要素から連続して正の整数が入らなければならない。 -(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ) +@var{W} の要素は非負整数で, 0 番目の要素から連続して正の整数が入らなければならない. +(すなわち, @code{[1,1,0,0,0]} は OK だが, @code{[1,0,1,0,0]} はダメ) @item -正の重みを持つ変数についての積分を行う。 -例えば、@var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば -x,y について積分を行う。 +正の重みを持つ変数についての積分を行う. +例えば, @var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば, +x,y について積分を行う. @end itemize -以下は、イデアル +以下は, イデアル @iftex -@tex -$I = D \cdot \{2 t \partial_x + \partial_t, t \partial_t + 2 x \partial_x + 2\} $ -@end tex -の -@tex -$t$ -@end tex +@tex $I = D \cdot \{2 t \partial_x + \partial_t, t \partial_t + 2 x \partial_x + 2\}$ @end tex +とおいた時, D 加群 +@tex $M = D / I$ @end tex +の +@tex $t$ @end tex @end iftex @ifinfo -I = D . @{2 t dx + dt, t dt + 2 x dx + 2 @} の t +I = D . @{2 t dx + dt, t dt + 2 x dx + 2 @} +とおいた時, D 加群 M = D / I の t @end ifinfo -についての積分イデアルを計算した例である。([SST, Ex5.5.2, Ex5.5.6]) +についての積分加群を計算した例である. ([SST, Ex5.5.2, Ex5.5.6]) @example [1351] nk_restriction.integration([2*t*dx+dt,2*x*dx+t*dt+2],[t,x], [dt,dx],[1,0]); @@ -2897,6 +2908,25 @@ B_@{S0@} length : 2 -- fctr(BF) + base :0.001sec(0.0006731sec) [[4*x*dx^2+6*dx,-4*t*x*dx^2-6*t*dx,2*x*dx+1,-2*t*x*dx,2*t*dx],[[1],[0]]] @end example +返り値の第 1 番目の要素 @code{[[1],[0]]]} は, +積分加群の基底 +@iftex +@tex $t^1, t^0$ @end tex +@end iftex +@ifinfo +t^1, t^0 +@end ifinfo +を意味し, +返り値の第 0 番目の要素から, 積分加群は +@iftex +@tex $(4 x \partial_x^2 + 6 \partial_x, 0), (0, -4 x \partial_x^2 - 6 \partial_x), +(0, -2 x \partial_x), (0, 2 \partial_x)$ @end tex +@end iftex +@ifinfo +(4 x dx^2 + 6 dx, 0), (0, -4 x dx^2 - 6 dx), +(0, -2 x dx), (0, 2 dx) +@end ifinfo +で生成されることがわかる. @node nk_restriction.integration_ideal,,, D 加群の制限に関する関数 @subsection @code{nk_restriction.integration_ideal} @@ -2906,7 +2936,7 @@ B_@{S0@} length : 2 @comment --- 関数の簡単な説明 --- @table @t @item nk_restriction.integration_ideal(@var{Id}, @var{VL}, @var{DVL}, @var{W}) -:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての積分イデアルを返す。 +:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての積分イデアルを返す. @end table @comment --- 引数の簡単な説明 --- @@ -2926,28 +2956,26 @@ B_@{S0@} length : 2 @comment --- @bullet は黒点付き --- @itemize @bullet @item -@var{W} の要素は非負整数で、0 番目の要素から連続して正の整数が入らなければならない。 -(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ) +@var{W} の要素は非負整数で, 0 番目の要素から連続して正の整数が入らなければならない. +(すなわち, @code{[1,1,0,0,0]} は OK だが, @code{[1,0,1,0,0]} はダメ) @item -正の重みを持つ変数についての積分を行う。 -例えば、@var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば -x,y について積分を行う。 +正の重みを持つ変数についての積分を行う. +例えば, @var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば, +x,y について積分を行う. @end itemize -以下は、イデアル +以下は, イデアル @iftex @tex $I = D \cdot \{2 t \partial_x + \partial_t, t \partial_t + 2 x \partial_x + 2\} $ @end tex の -@tex -$t$ -@end tex +@tex $t$ @end tex @end iftex @ifinfo I = D . @{2 t dx + dt, t dt + 2 x dx + 2 @} の t @end ifinfo -についての積分イデアルを計算した例である。([SST, Ex5.5.2, Ex5.5.6]) +についての積分イデアルを計算した例である. ([SST, Ex5.5.2, Ex5.5.6]) @example [1431] nk_restriction.integration_ideal([2*t*dx+dt,t*dt+2*x*dx+2],[t,x], [dt,dx],[1,0]); @@ -2958,7 +2986,6 @@ B_@{S0@} length : 2 -- fctr(BF) + base :0.001sec(0.001091sec) -- integration_ideal_internal :0.002sec(0.001879sec) [2*x*dx+1] -[1432] @end example @node nk_restriction.ann_mul,,, D 加群の制限に関する関数 @@ -3317,7 +3344,154 @@ B_{S0} length : 1 [[(en-2)*n+en-2],[[[[ek-1,[(-en+1)*n-en+1,1]]],1]]] @end example +@node nk_restriction.module_restriction,,, D 加群の制限に関する関数 +@subsection @code{nk_restriction.module_restriction} +@comment --- 索引用キーワード +@findex nk_restriction.module_restriction +@comment --- 関数の簡単な説明 --- +@table @t +@item nk_restriction.module_restriction(@var{M}, @var{VL}, @var{DVL}, @var{W}) +:: D 加群 D^r/@var{M} (@var{M} は D^r の部分加群) の重みベクトル @var{W} についての制限加群を返す. +@end table + +@comment --- 引数の簡単な説明 --- +@table @var +@item M +D 自由加群 D^r の部分加群 +@item VL +変数のリスト +@item DVL +変数のリスト(@var{VL} に対応する微分作用素の方の変数) +@item W +重みベクトルを表すリスト +@end table + +@itemize @bullet +@item +@var{W} の要素は非負整数で, 0 番目の要素から連続して正の整数が入らなければならない. +@comment{(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ)} +現在のところ, 1 変数についてだけ制限をとるようにしか実装していないため, +@var{W} は 0 番目の要素だけ正の整数が入る. +@item +正の重みを持つ変数についての制限を行う. +例えば, @var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,0,0]} であれば +x について制限を行う. +@end itemize + +以下は, D 自由加群 +@iftex +@tex $D^2$ @end tex +の部分加群 +@tex +$M = D \cdot \{(\partial_x, \partial_y), (\partial_y, \partial_x), (x,y) \}$ +@end tex +をとり, D 加群 +@tex $D^2 / M$ @end tex +の +@tex $x$ @end tex +@end iftex +@ifinfo +D^2 の部分加群 M = D . @{ (dx, dy), (dy, dx), (x, y) @} +をとり, D 加群 D^2 / M の x +@end ifinfo +ついての制限加群を計算した例である. +@example +[2691] nk_restriction.module_restriction([[dx,dy],[dy,dx],[x,y]], [x,y], [dx,dy], [1,0]); +.... +bfunction : +s +[[1,1],[s,1]] +integer roots : +[0,0] +Generators: +[e1,e2] +Relations: +[-8*e2*dy,4*e2*dy^2,-4*e2*dy^3,4*e1*y*dy-4*e1,-4*e1*dy^2,-4*e2,-e2*y*dy^2+2*e2*dy,-e1*y*dy+e1,e1*y*dy-e1] +[[0,-1],[-dy^2,0],[y*dy-1,0]] +@end example +制限加群は +@iftex +@tex $(0, -1), (-\partial_y^2, 0), (y \partial_y -1 , 0)$ @end tex +@end iftex +@ifinfo +(0, -1), (-dy^2, 0), (y, dy-1, 0) +@end ifinfo +で生成されることがわかる. + +@node nk_restriction.module_integration,,, D 加群の制限に関する関数 +@subsection @code{nk_restriction.module_integration} +@comment --- 索引用キーワード +@findex nk_restriction.module_integration + +@comment --- 関数の簡単な説明 --- +@table @t +@item nk_restriction.module_integration(@var{M}, @var{VL}, @var{DVL}, @var{W}) +:: D 加群 D^r/M (@var{M} は D^r の部分加群) の重みベクトル @var{W} についての積分加群を返す. +@end table + +@comment --- 引数の簡単な説明 --- +@table @var +@item M +D 自由加群 D^r の部分加群 +@item VL +変数のリスト +@item DVL +変数のリスト(@var{VL} に対応する微分作用素の方の変数) +@item W +重みベクトルを表すリスト +@end table + +@itemize @bullet +@item +@var{W} の要素は非負整数で, 0 番目の要素から連続して正の整数が入らなければならない. +@comment{(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ)} +現在のところ, 1 変数についてだけ積分をとるようにしか実装していないため, +@var{W} は 0 番目の要素だけ正の整数が入る. +@item +正の重みを持つ変数についての積分を行う. +例えば, @var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,0,0]} であれば +x について積分を行う. +@end itemize + +以下は, D 自由加群 +@iftex +@tex $D^2$ @end tex +の部分加群 +@tex $M = D \cdot \{(x, y), (y, x), (\partial_x, \partial_y) \}$ @end tex +をとり, D 加群 +@tex $D^2/M$ @end tex +の +@tex $x$ @end tex +@end iftex +@ifinfo +D^2 の部分加群 M = D . @{ (x, y), (y, x), (dx, dy) @} をとり, +D 加群 D^2 / M の x +@end ifinfo +についての積分加群を計算した例である. +@example +[2702] nk_restriction.module_integration([[x,y],[y,x],[dx,dy]], [x,y], [dx,dy], [1,0]); +... +bfunction : +s +[[1,1],[s,1]] +integer roots : +[0,0] +Generators: +[e1,e2] +Relations: +[-8*e2*y,-4*e2*y^2,-4*e2*y^3,-4*e1*y*dy-8*e1,-4*e1*y^2,-4*e2,-e2*y^2*dy-4*e2*y,e1*y*dy+2*e1,e1*y*dy+2*e1] +[[0,-1],[y*dy+2,0],[-y^2,0]] +@end example +積分加群は +@iftex +@tex $(0, -1), (y \partial_y + 2, 0), (-y^2, 0)$ @end tex +@end iftex +@ifinfo +(0, -1), (y dy + 2, 0), (-y^2, 0) +@end ifinfo +で生成されることがわかる. + @noindent ChangeLog @itemize @bullet @@ -3326,6 +3500,7 @@ ChangeLog @item 2010-05 から 2010-07 にかけて 2 つの option (@code{ht}, @code{ord}) と 新たな関数 trans_inhomo() が追加された. 1.10--1.13 を見よ. @item 2011-08 に ost_sum() が追加された. 1.20 を見よ. +@item 2016-05 に module_integration(), module_restriction() が追加された. @end itemize @node その他(未分類),,, 実験的仕様の関数 @@ -4053,7 +4228,79 @@ ChangeLog @end itemize -@comment ----------- 以下は見本. 消すな. template +@node pari,,, 実験的仕様の関数 +@subsection @code{pari}, @code{setbprec},@code{setround},@code{todouble},@code{mpfr_gamma},@code{mpfr_floor},@code{mpfr_round}, +@findex pari +@findex setbprec +@findex setround +@findex todouble +@findex mpfr_gamma +@findex mpfr_floor +@findex mpfr_round + +@comment --- 関数の簡単な説明 --- +@comment --- @itemx は複数に対して説明を一つつける場合に使う --- +@table @t +@item pari(@var{arg1},@var{arg2},...) +:: MPFR で pari の関数を emulate するか ox_pari サーバーを呼び出す. +@itemx setbprec(@var{arg1}) +@itemx setround(@var{arg1}) + 丸めの方法の指定. mpfr 準拠. +@itemx todouble(@var{arg1}) +:: bigfloat 型を double に変換する. +@itemx mpfr_gamma(@var{arg1}) +:: gamma 関数の計算. +@itemx mpfr_floor(@var{arg1}) +:: floor の計算. +@itemx mpfr_round(@var{arg1}) +:: 丸めの計算. +@end table + +@table @var +@item return +後述. +@item arg1, arg2 +後述. +@end table + +@itemize @bullet +@item 20150807 以降の asir では, bigfloat が pari ではなく mpfr を用いて計算される. +Todo, pari は ox_pari を呼び出すが, まだ ox_pari に未実装の機能が多くある. +区間演算への対応は行っていない. +@item +pari(floor,@var{arg1}), +pari(round,@var{arg1}), +pari(gamma,@var{arg1}) +は mpfr で pari を emulate しているので, 動作が異なる. +特に gamma は複素数の引数を受け取らない. +pari の floor は桁数が足りなくなるとエラーで終了したが, +この floor では setprec で指定した桁数以内なら正しく floor を戻す. +Todo, ox_pari を指定して呼び出す方法. +@end itemize + +@example +[219] ctrl("bigfloat",1)$ +[220] setprec(100)$ +[221] pari(floor,1111111111111.1+1/10); +1111111111111 +@end example + +@table @t +@item 参照 +@ref{pari} +@end table + +@comment --- ChangeLog を書く. 動機. ソースコードの位置. 変更日時 など CVSサーバを見るため +@comment --- openxm の外部からの寄与も述べる. Credit. +@noindent +ChangeLog +@itemize @bullet +@item これらの大変更は 2015-08-03 より 08-07 の asir 合宿でおこなわれた. +まだ作業中. Todo, asirgui への対応. debug, ... +@item 変更をうけたソースコードは asir2000/builtin/bfaux.c, +asir2000/engine/bf.c, asir2000/builtin/parif.c 等多数. +@end itemize + @comment **************************************************************** @comment --- ◯◯◯◯ 以下他の関数について真似して記述する. ◯◯◯◯ @comment 新しい関数の説明を書くためのテンプレートである. 消すな.