=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/parts/builtin/poly.texi,v retrieving revision 1.3 retrieving revision 1.8 diff -u -p -r1.3 -r1.8 --- OpenXM/src/asir-doc/parts/builtin/poly.texi 2002/09/03 01:50:59 1.3 +++ OpenXM/src/asir-doc/parts/builtin/poly.texi 2004/05/15 08:25:12 1.8 @@ -1,4 +1,4 @@ -@comment $OpenXM: OpenXM/src/asir-doc/parts/builtin/poly.texi,v 1.2 1999/12/21 02:47:34 noro Exp $ +@comment $OpenXM: OpenXM/src/asir-doc/parts/builtin/poly.texi,v 1.7 2003/12/23 10:41:10 ohara Exp $ \BJP @node 多項式および有理式の演算,,, 組み込み函数 @section 多項式, 有理式の演算 @@ -21,6 +21,7 @@ * %:: * subst psubst:: * diff:: +* ediff:: * res:: * fctr sqfr:: * modfctr:: @@ -451,15 +452,17 @@ objects which are created under different variable ord @example [0] ord(); -[x,y,z,u,v,w,p,q,r,s,t,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,_x,_y,_z,_u,_v,_w,_p, -_q,_r,_s,_t,_a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o,exp(_x),(_x)^(_y), -log(_x),(_x)^(_y-1),cos(_x),sin(_x),tan(_x),(-_x^2+1)^(-1/2),cosh(_x),sinh(_x), -tanh(_x),(_x^2+1)^(-1/2),(_x^2-1)^(-1/2)] +[x,y,z,u,v,w,p,q,r,s,t,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,_x,_y,_z,_u,_v, +_w,_p,_q,_r,_s,_t,_a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o, +exp(_x),(_x)^(_y),log(_x),(_x)^(_y-1),cos(_x),sin(_x),tan(_x), +(-_x^2+1)^(-1/2),cosh(_x),sinh(_x),tanh(_x), +(_x^2+1)^(-1/2),(_x^2-1)^(-1/2)] [1] ord([dx,dy,dz,a,b,c]); -[dx,dy,dz,a,b,c,x,y,z,u,v,w,p,q,r,s,t,d,e,f,g,h,i,j,k,l,m,n,o,_x,_y,_z,_u,_v, -_w,_p,_q,_r,_s,_t,_a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o,exp(_x), -(_x)^(_y),log(_x),(_x)^(_y-1),cos(_x),sin(_x),tan(_x),(-_x^2+1)^(-1/2), -cosh(_x),sinh(_x),tanh(_x),(_x^2+1)^(-1/2),(_x^2-1)^(-1/2)] +[dx,dy,dz,a,b,c,x,y,z,u,v,w,p,q,r,s,t,d,e,f,g,h,i,j,k,l,m,n,o,_x,_y, +_z,_u,_v,_w,_p,_q,_r,_s,_t,_a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n, +_o,exp(_x),(_x)^(_y),log(_x),(_x)^(_y-1),cos(_x),sin(_x),tan(_x), +(-_x^2+1)^(-1/2),cosh(_x),sinh(_x),tanh(_x), +(_x^2+1)^(-1/2),(_x^2-1)^(-1/2)] @end example \JP @node sdiv sdivm srem sremm sqr sqrm,,, 多項式および有理式の演算 @@ -645,11 +648,13 @@ to the polynomials repeatedly yields the multiplicity. @example [11] Y=(x+y+z)^5*(x-y-z)^3; -x^8+(2*y+2*z)*x^7+(-2*y^2-4*z*y-2*z^2)*x^6+(-6*y^3-18*z*y^2-18*z^2*y-6*z^3)*x^5 -+(6*y^5+30*z*y^4+60*z^2*y^3+60*z^3*y^2+30*z^4*y+6*z^5)*x^3+(2*y^6+12*z*y^5 -+30*z^2*y^4+40*z^3*y^3+30*z^4*y^2+12*z^5*y+2*z^6)*x^2+(-2*y^7-14*z*y^6 --42*z^2*y^5-70*z^3*y^4-70*z^4*y^3-42*z^5*y^2-14*z^6*y-2*z^7)*x-y^8-8*z*y^7 --28*z^2*y^6-56*z^3*y^5-70*z^4*y^4-56*z^5*y^3-28*z^6*y^2-8*z^7*y-z^8 +x^8+(2*y+2*z)*x^7+(-2*y^2-4*z*y-2*z^2)*x^6 ++(-6*y^3-18*z*y^2-18*z^2*y-6*z^3)*x^5 ++(6*y^5+30*z*y^4+60*z^2*y^3+60*z^3*y^2+30*z^4*y+6*z^5)*x^3 ++(2*y^6+12*z*y^5+30*z^2*y^4+40*z^3*y^3+30*z^4*y^2+12*z^5*y+2*z^6)*x^2 ++(-2*y^7-14*z*y^6-42*z^2*y^5-70*z^3*y^4-70*z^4*y^3-42*z^5*y^2 +-14*z^6*y-2*z^7)*x-y^8-8*z*y^7-28*z^2*y^6-56*z^3*y^5-70*z^4*y^4 +-56*z^5*y^3-28*z^6*y^2-8*z^7*y-z^8 [12] for(I=0,F=x+y+z,T=Y; T=tdiv(T,F); I++); [13] I; 5 @@ -740,11 +745,11 @@ x^5+2*x^4+x^3+x^2+2*x+1 @item psubst(@var{rat}[,@var{var},@var{rat}]*) \BJP :: @var{rat} の @var{varn} に @var{ratn} を代入 -(@var{n=1,2},... で左から右に順次代入する). +(@var{n}=1,2,... で左から右に順次代入する). \E \BEG :: Substitute @var{ratn} for @var{varn} in expression @var{rat}. -(@var{n=1,2},@dots{}. +(@var{n}=1,2,@dots{}. Substitution will be done successively from left to right if arguments are repeated.) \E @@ -754,7 +759,7 @@ if arguments are repeated.) @item return \JP 有理式 \EG rational expression -@item rat,ratn +@item rat ratn \JP 有理式 \EG rational expression @item varn @@ -783,15 +788,19 @@ if arguments are repeated.) なるべく分母, 分子が大きくならないように配慮することもしばしば必要となる. @item 分数を代入する場合も同様である. +@item +@code{subst}の引数@var{rat}がリスト,配列,行列,あるいは分散表現多項式で +あった場合には, それぞれの要素または係数に対して再帰的に@code{subst}を +行う. \E \BEG @item Substitutes rational expressions for specified kernels in a rational expression. @item -@t{subst}(@var{rat},@var{var1},@var{rat1},@var{var2},@var{rat2},@dots{}) +@t{subst}(@var{r},@var{v1},@var{r1},@var{v2},@var{r2},@dots{}) has the same effect as -@t{subst}(@t{subst}(@var{rat},@var{var1},@var{rat1}),@var{var2},@var{rat2},@dots{}). +@t{subst}(@t{subst}(@var{r},@var{v1},@var{r1}),@var{v2},@var{r2},@dots{}). @item Note that repeated substitution is done from left to right successively. You may get different result by changing the specification order. @@ -895,6 +904,58 @@ from left to right. sin(x) @end example +\JP @node ediff,,, 多項式および有理式の演算 +\EG @node ediff,,, Polynomials and rational expressions +@subsection @code{ediff} +@findex ediff + +@table @t +@item ediff(@var{poly}[,@var{varn}]*) +@item ediff(@var{poly},@var{varlist}) +\JP :: @var{poly} を @var{varn} あるいは @var{varlist} の中の変数で順次オイラー微分する. +\BEG +:: Differentiate @var{poly} successively by Euler operators of @var{var}'s for the first +form, or by Euler operators of variables in @var{varlist} for the second form. +\E +@end table + +@table @var +@item return +\JP 多項式 +\EG polynomial +@item poly +\JP 多項式 +\EG polynomial +@item varn +\JP 不定元 +\EG indeterminate +@item varlist +\JP 不定元のリスト +\EG list of indeterminates +@end table + +@itemize @bullet +\BJP +@item +左側の不定元より, 順にオイラー微分していく. つまり, @t{ediff}(@var{poly},@t{x,y}) は, +@t{ediff}(@t{ediff}(@var{poly},@t{x}),@t{y}) と同じである. +\E +\BEG +@item +differentiation is performed by the specified indeterminates (variables) +from left to right. +@t{ediff}(@var{poly},@t{x,y}) is the same as +@t{ediff}(@t{ediff}(@var{poly},@t{x}),@t{y}). +\E +@end itemize + +@example +[0] ediff((x+2*y)^2,x); +2*x^2+4*y*x +[1] ediff((x+2*y)^2,x,y); +4*y*x +@end example + \JP @node res,,, 多項式および有理式の演算 \EG @node res,,, Polynomials and rational expressions @subsection @code{res} @@ -913,7 +974,7 @@ sin(x) @item var \JP 不定元 \EG indeterminate -@item poly1,poly2 +@item poly1 poly2 \JP 多項式 \EG polynomial @item mod @@ -1085,9 +1146,10 @@ has a degree that is a multiple of @var{d}. t^9-15*t^6-87*t^3-125 0msec [11] N=res(t,subst(A,t,x-2*t),A); --x^81+1215*x^78-567405*x^75+139519665*x^72-19360343142*x^69+1720634125410*x^66 --88249977024390*x^63-4856095669551930*x^60+1999385245240571421*x^57 --15579689952590251515*x^54+15956967531741971462865*x^51 +-x^81+1215*x^78-567405*x^75+139519665*x^72-19360343142*x^69 ++1720634125410*x^66-88249977024390*x^63-4856095669551930*x^60 ++1999385245240571421*x^57-15579689952590251515*x^54 ++15956967531741971462865*x^51 ... +140395588720353973535526123612661444550659875*x^6 +10122324287343155430042768923500799484375*x^3 @@ -1105,14 +1167,16 @@ t^9-15*t^6-87*t^3-125 [[-1,1],[x^9-405*x^6-63423*x^3-2460375,1], [x^18-486*x^15+98739*x^12-9316620*x^9+945468531*x^6-12368049246*x^3 +296607516309,1],[x^18-8667*x^12+19842651*x^6+19683,1], -[x^18-324*x^15+44469*x^12-1180980*x^9+427455711*x^6+2793253896*x^3+31524548679,1], +[x^18-324*x^15+44469*x^12-1180980*x^9+427455711*x^6+2793253896*x^3 ++31524548679,1], [x^18+10773*x^12+2784051*x^6+307546875,1]] 167.050sec + gc : 1.890sec [14] ufctrhint(N,9); [[-1,1],[x^9-405*x^6-63423*x^3-2460375,1], [x^18-486*x^15+98739*x^12-9316620*x^9+945468531*x^6-12368049246*x^3 +296607516309,1],[x^18-8667*x^12+19842651*x^6+19683,1], -[x^18-324*x^15+44469*x^12-1180980*x^9+427455711*x^6+2793253896*x^3+31524548679,1], +[x^18-324*x^15+44469*x^12-1180980*x^9+427455711*x^6+2793253896*x^3 ++31524548679,1], [x^18+10773*x^12+2784051*x^6+307546875,1]] 119.340sec + gc : 1.300sec @end example @@ -1130,8 +1194,8 @@ t^9-15*t^6-87*t^3-125 @table @t @item modfctr(@var{poly},@var{mod}) -\JP :: 有限体上での 1 変数多項式の因数分解 -\EG :: Univariate factorizer over small finite fields +\JP :: 有限体上での多項式の因数分解 +\EG :: Factorizer over small finite fields @end table @table @var @@ -1139,8 +1203,8 @@ t^9-15*t^6-87*t^3-125 \JP リスト \EG list @item poly -\JP 整数係数の 1 変数多項式 -\EG univariate polynomial with integer coefficients +\JP 整数係数の多項式 +\EG Polynomial with integer coefficients @item mod \JP 自然数 \EG non-negative integer @@ -1149,7 +1213,7 @@ t^9-15*t^6-87*t^3-125 @itemize @bullet \BJP @item -2^31 未満の自然数 @var{mod} を標数とする素体上で一変数多項式 +2^29 未満の自然数 @var{mod} を標数とする素体上で多項式 @var{poly} を既約因子に分解する. @item 結果は [[@b{数係数},1],[@b{因子},@b{重複度}],...] なるリスト. @@ -1161,9 +1225,9 @@ t^9-15*t^6-87*t^3-125 \E \BEG @item -This function factorizes a univarate polynomial @var{poly} over +This function factorizes a polynomial @var{poly} over the finite prime field of characteristic @var{mod}, where -@var{mod} must be smaller than 2^31. +@var{mod} must be smaller than 2^29. @item The result is represented by a list, whose elements are a pair represented as @@ -1183,6 +1247,8 @@ To factorize polynomials over large finite fields, use [[1,1],[x+1513477736,1],[x+2055628767,1],[x+91854880,1], [x+634005911,1],[x+1513477735,1],[x+634005912,1], [x^4+1759639395*x^2+2045307031,1]] +[1] modfctr(2*x^6+(y^2+z*y)*x^4+2*z*y^3*x^2+(2*z^2*y^2+z^3*y)*x+z^4,3); +[[2,1],[2*x^3+z*y*x+z^2,1],[2*x^3+y^2*x+2*z^2,1]] @end example @table @t @@ -1227,6 +1293,9 @@ an integral polynomial such that GCD of all its coeffi 分子多項式の係数は有理数のままであり, 有理式の分子を求める @code{nm()} では, 分数係数多項式は, 分数係数のままの形で出力されるため, 直ちに整数係数多項式を得る事は出来ない. +@item オプション factor が設定された場合の戻り値はリスト [g,c] である. +ここで c は有理数であり, g がオプションのない場合の戻り値であり, + @var{poly} = c*g となる. \E \BEG @item @@ -1244,6 +1313,9 @@ You cannot obtain an integral polynomial by direct use @code{nm()}. The function @code{nm()} returns the numerator of its argument, and a polynomial with rational coefficients is the numerator of itself and will be returned as it is. +@item When the option factor is set, the return value is a list [g,c]. +Here, c is a rational number, g is an integral polynomial +and @var{poly} = c*g holds. \E @end itemize @@ -1329,7 +1401,7 @@ y-z @item return \JP 多項式 \EG polynomial -@item poly1,poly2 +@item poly1 poly2 \JP 多項式 \EG polynomial @item mod