|
D.12.7.9 randcharpoly
Procedure from library rootsmr.lib (see rootsmr_lib).
- Usage:
- randcharpoly(b,i); randcharpoly(b,i,n); b,i ideal; n int
- Return:
- poly: the characteristic polynomial of a pseudorandom
rational univariate projection having one zero per zero of i.
If n<10 is given, it is the number of digits being used for the
pseudorandom coefficients (default: n=5)
- Assume:
- i is a Groebner basis and b is an ordered monomial basis of r/i,
r = basering
- Note:
- shows a warning if printlevel>0 (default: printlevel=0)
Example:
| LIB "rootsmr.lib";
ring r = 0,(x,y,z),dp;
ideal i = (x-1)*(x-2),(y-1),(z-1)*(z-2)*(z-3)^2;
i = std(i);
ideal b = qbase(i);
poly p = randcharpoly(b,i);
p;
==> z8-1989306z7+1720335326522z6-844575738768293508z5+25739857498506957597394\
5z4-49855396253842786126599566442z3+5991506449298102407845582886576172z2-\
408335865183407651473343362162998177144z+12078261759575784323866334900781\
464660123776
nrroots(p); // See nrroots in urrcount.lib
==> 6
int pr = printlevel;
printlevel = pr+2;
p = randcharpoly(b,i,5);
==> // poly, 9 monomial(s)
==> z8-2923964*z7+3712323518934*z6-2671920147197312780*z5+1191863249059288760\
005489*z4-337242235263204293461543939056*z3+59079952041382728808956425746\
100736*z2-5855367303472484622963975143953858560000*z+25120629313761950033\
6395930918610534400000000
==> *********************************************************************
==> * WARNING: This polynomial was obtained using pseudorandom numbers.*
==> * If you want to verify the result, please use the command *
==> * *
==> * verify(p,b,i) *
==> * *
==> * where p is the polynomial I returned, b is the monomial basis *
==> * used, and i the Groebner basis of the ideal *
==> *********************************************************************
nrroots(p);
==> 6
printlevel = pr;
|
|