Changeset 3754ca in git for Singular/LIB/bfun.lib
- Timestamp:
- Apr 15, 2009, 1:28:08 PM (15 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- a6606e6cba9689ecbcc4e27ac00fb8c1deabd128
- Parents:
- 40c648539a84cb2dc36e46b6b6c84deeb21e393b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/bfun.lib
r40c648 r3754ca 1 1 ////////////////////////////////////////////////////////////////////////////// 2 version="$Id: bfun.lib,v 1. 8 2009-04-14 12:00:13 SingularExp $";2 version="$Id: bfun.lib,v 1.9 2009-04-15 11:09:27 seelisch Exp $"; 3 3 category="Noncommutative"; 4 4 info=" … … 10 10 @* one is interested in the global b-function (also known as Bernstein-Sato 11 11 @* polynomial) b(s) in K[s], defined to be the non-zero monic polynomial of minimal 12 @* degree, satisfying a functional identity L * F^{s+1} = b(s) F^s, 12 @* degree, satisfying a functional identity L * F^{s+1} = b(s) F^s, 13 13 @* for some operator L in D[s] (* stands for the action of differential operator) 14 14 @* By D one denotes the n-th Weyl algebra … … 21 21 @* There is a constructive definition of a b-function of a holonomic ideal I in D 22 22 @* (that is, an ideal I in a Weyl algebra D, such that D/I is holonomic module) 23 @* with respect to the given weight vector w: For a poly p in D, its initial24 @* form w.r.t. (-w,w) is defined as the sum of all terms of p which have 23 @* with respect to the given weight vector w: For a polynomial p in D, its initial 24 @* form w.r.t. (-w,w) is defined as the sum of all terms of p which have 25 25 @* maximal weighted total degree where the weight of x_i is -w_i and the weight 26 @* of d_i is w_i. Let J be the initial ideal of I w.r.t. (-w,w), i.e. the 26 @* of d_i is w_i. Let J be the initial ideal of I w.r.t. (-w,w), i.e. the 27 27 @* K-vector space generated by all initial forms w.r.t (-w,w) of elements of I. 28 28 @* Put s = w_1 x_1 d_1 + ... + w_n x_n d_n. Then the monic generator b_w(s) of 29 @* the intersection of J with the PID K[s] is called the b-function of I w.r.t. w. 29 @* the intersection of J with the PID K[s] is called the b-function of I w.r.t. w. 30 30 @* Unlike Bernstein-Sato polynomial, general b-function with respect to 31 31 @* arbitrary weights need not have rational roots at all. However, b-function 32 32 @* of a holonomic ideal is known to be non-zero as well. 33 @* 34 @* References: [SST] Saito, Sturmfels, Takayama: Groebner Deformations of 33 @* 34 @* References: [SST] Saito, Sturmfels, Takayama: Groebner Deformations of 35 35 @* Hypergeometric Differential Equations (2000), 36 36 @* Noro: An Efficient Modular Algorithm for Computing the Global b-function, … … 44 44 bfctAnn(f[,s]); compute the BS polynomial of f via Ann f^s + f 45 45 bfctOneGB(f[,s,t]); compute the BS polynomial of f by just one GB computation 46 bfctIdeal(I,w[,s,t]); compute the b-function of ideal w rtweight47 pIntersect(f,I[,s]); intersection of ideal with subalgebra K[f] for a poly f46 bfctIdeal(I,w[,s,t]); compute the b-function of ideal w.r.t. weight 47 pIntersect(f,I[,s]); intersection of ideal with subalgebra K[f] for a polynomial f 48 48 pIntersectSyz(f,I[,p,s,t]); intersection of ideal with subalgebra K[f] with syz-solver 49 linReduce(f,I[,s]); reduce a poly by linear reductions wrtideal49 linReduce(f,I[,s]); reduce a polynomial by linear reductions w.r.t. ideal 50 50 linReduceIdeal(I,[s,t]); interreduce generators of ideal by linear reductions 51 51 linSyzSolve(I[,s]); compute a linear dependency of elements of ideal I … … 53 53 AUXILIARY PROCEDURES: 54 54 55 allPositive(v); checks whether all entries of an intvec are positive 55 allPositive(v); checks whether all entries of an intvec are positive 56 56 scalarProd(v,w); computes the standard scalar product of two intvecs 57 vec2poly(v[,i]); constructs an univariate poly with given coefficients57 vec2poly(v[,i]); constructs an univariate polynomial with given coefficients 58 58 59 59 SEE ALSO: dmod_lib, dmodapp_lib, gmssing_lib … … 358 358 for (i=1; i<=ncols(I); i++) { M[i] = gen(i); } 359 359 } 360 } 360 } 361 361 dbprint(ppl-1,"// initially sorted ideal:", I); 362 362 if (remembercoeffs <> 0) { dbprint(ppl-1,"// used permutations:", M); } … … 468 468 "USAGE: linReduce(f, I [,s,t,u]); f a poly, I an ideal, s,t,u optional ints 469 469 RETURN: poly or list, linear reductum (over field) of f by elements from I 470 PURPOSE: reduce a poly only by linear reductions (no monomial multiplications)471 NOTE: If s<>0, a list consisting of the reduced poly and the coefficient470 PURPOSE: reduce a polynomial only by linear reductions (no monomial multiplications) 471 NOTE: If s<>0, a list consisting of the reduced polynomial and the coefficient 472 472 @* vector of the used reductions is returned, otherwise (and by default) 473 @* only reduced poly is returned.473 @* only reduced polynomial is returned. 474 474 @* If t<>0 (and by default) all monomials are reduced (if possible), 475 475 @* otherwise, only leading monomials are reduced. 476 @* If u<>0 (and by default), the ideal is linearly pre-reduced, i.e. 476 @* If u<>0 (and by default), the ideal is linearly pre-reduced, i.e. 477 477 @* instead of the given ideal, the output of @code{linReduceIdeal} is used. 478 478 @* If u is set to 0 and the given ideal does not equal the output of … … 918 918 NOTE: If the intersection is zero, this procedure might not terminate. 919 919 @* If p>0 is given, this proc computes the generator of the intersection in 920 @* char p first and then only searches for a generator of the obtained 921 @* degree in the basering. Otherwise, it searches for all degrees by 920 @* char p first and then only searches for a generator of the obtained 921 @* degree in the basering. Otherwise, it searches for all degrees by 922 922 @* computing syzygies. 923 923 @* If s<>0, @code{std} is used for Groebner basis computations in char 0, 924 924 @* otherwise, and by default, @code{slimgb} is used. 925 @* If t<>0 and by default, @code{std} is used for Groebner basis 925 @* If t<>0 and by default, @code{std} is used for Groebner basis 926 926 @* computations in char >0, otherwise, @code{slimgb} is used. 927 927 DISPLAY: If printlevel=1, progress debug messages will be printed, … … 1131 1131 } 1132 1132 dbprint(ppl,"// pIntersectSyz finished"); 1133 if (solveincharp) { short = shortSave; } 1133 if (solveincharp) { short = shortSave; } 1134 1134 return(v); 1135 1135 } … … 1150 1150 proc vec2poly (list #) 1151 1151 "USAGE: vec2poly(v [,i]); v a vector or an intvec, i an optional int 1152 RETURN: poly, an univariate poly in i-th variable with coefficients given by v1153 PURPOSE: constructs an univariate poly in K[var(i)] with given coefficients,1152 RETURN: poly, an univariate polynomial in i-th variable with coefficients given by v 1153 PURPOSE: constructs an univariate polynomial in K[var(i)] with given coefficients, 1154 1154 @* such that the coefficient at var(i)^{j-1} is v[j]. 1155 1155 NOTE: The optional argument i must be positive, by default i is 1. … … 1235 1235 // the rest of this proc is nicked from bernsteinBM from dmod.lib 1236 1236 list P = factorize(p);//with constants and multiplicities 1237 ideal bs; intvec m; //the BS poly is monic, so we are not interested in constants1237 ideal bs; intvec m; //the BS polynomial is monic, so we are not interested in constants 1238 1238 for (i=2; i<= size(P[1]); i++) //we delete P[1][1] and P[2][1] 1239 1239 { … … 1272 1272 { 1273 1273 return(list(ideal(0),intvec(0))); 1274 } 1274 } 1275 1275 if (inorann == 0) // bfct using initial ideal 1276 1276 { … … 1364 1364 RETURN: list of ideal and intvec 1365 1365 PURPOSE: computes the roots of the Bernstein-Sato polynomial b(s) 1366 @* for the hypersurface defined by f. 1366 @* for the hypersurface defined by f. 1367 1367 ASSUME: The basering is commutative and of characteristic 0. 1368 1368 BACKGROUND: In this proc, the initial Malgrange ideal is computed according to 1369 1369 @* the algorithm by Masayuki Noro and then a system of linear equations is 1370 1370 @* solved by linear reductions. 1371 NOTE: In the output list, the ideal contains all the roots 1371 NOTE: In the output list, the ideal contains all the roots 1372 1372 @* and the intvec their multiplicities. 1373 1373 @* If s<>0, @code{std} is used for GB computations, 1374 @* otherwise, and by default, @code{slimgb} is used. 1374 @* otherwise, and by default, @code{slimgb} is used. 1375 1375 @* If t<>0, a matrix ordering is used for Groebner basis computations, 1376 1376 @* otherwise, and by default, a block ordering is used. … … 1435 1435 @* the algorithm by Masayuki Noro and then a system of linear equations is 1436 1436 @* solved by computing syzygies. 1437 NOTE: In the output list, the ideal contains all the roots and the intvec 1437 NOTE: In the output list, the ideal contains all the roots and the intvec 1438 1438 @* their multiplicities. 1439 1439 @* If r<>0, @code{std} is used for GB computations in characteristic 0, … … 1517 1517 "USAGE: bfctIdeal(I,w[,s,t]); I an ideal, w an intvec, s,t optional ints 1518 1518 RETURN: list of ideal and intvec 1519 PURPOSE: computes the roots of the global b-function of I w rtthe weight (-w,w).1519 PURPOSE: computes the roots of the global b-function of I w.r.t. the weight (-w,w). 1520 1520 ASSUME: The basering is the n-th Weyl algebra in characteristic 0 and for all 1521 1521 @* 1<=i<=n the identity var(i+n)*var(i)=var(i)*var(i+1)+1 holds, i.e. the 1522 @* sequence of variables is given by x(1),...,x(n),D(1),...,D(n), 1522 @* sequence of variables is given by x(1),...,x(n),D(1),...,D(n), 1523 1523 @* where D(i) is the differential operator belonging to x(i). 1524 1524 @* Further we assume that I is holonomic. … … 1533 1533 @* L[3] is 1 (for nonzero constant) or 0 (for zero b-function). 1534 1534 @* If s<>0, @code{std} is used for GB computations in characteristic 0, 1535 @* otherwise, and by default, @code{slimgb} is used. 1535 @* otherwise, and by default, @code{slimgb} is used. 1536 1536 @* If t<>0, a matrix ordering is used for GB computations, otherwise, 1537 1537 @* and by default, a block ordering is used. … … 1622 1622 @* their multiplicities. 1623 1623 @* If s<>0, @code{std} is used for the GB computation, otherwise, 1624 @* and by default, @code{slimgb} is used. 1624 @* and by default, @code{slimgb} is used. 1625 1625 @* If t<>0, a matrix ordering is used for GB computations, 1626 1626 @* otherwise, and by default, a block ordering is used. … … 1634 1634 def save = basering; 1635 1635 int n = nvars(save); 1636 if (char(save) <> 0) 1636 if (char(save) <> 0) 1637 1637 { 1638 1638 ERROR("characteristic of basering has to be 0"); … … 1671 1671 // create names for vars 1672 1672 list Lvar; 1673 Lvar[1] = safeVarName("t"); 1673 Lvar[1] = safeVarName("t"); 1674 1674 Lvar[2] = safeVarName("s"); 1675 1675 Lvar[n+3] = safeVarName("D"+Lvar[1]); … … 1684 1684 intvec @a = 1:N; @a[2] = 2; 1685 1685 intvec @a2 = @a; @a2[2] = 0; @a2[2*n+4] = 0; 1686 list Lord; 1686 list Lord; 1687 1687 Lord[1] = list("a",@a); Lord[2] = list("a",@a2); 1688 1688 if (methodord == 0) // default: block ordering … … 1782 1782 @* their multiplicities. 1783 1783 @* If r<>0, @code{std} is used for GB computations, 1784 @* otherwise, and by default, @code{slimgb} is used. 1784 @* otherwise, and by default, @code{slimgb} is used. 1785 1785 DISPLAY: If printlevel=1, progress debug messages will be printed, 1786 1786 @* if printlevel>=2, all the debug messages will be printed.
Note: See TracChangeset
for help on using the changeset viewer.