next up previous contents
Next: Simplification procedures Up: Utilities Previous: Utilities   Contents


Bounds for the real roots

The procedure BoundUP allows one to create a C++ program that will determine bounds for the real roots of an univariate polynomial. Its syntax is

 
BoundUP(Func,Vars,name)
BoundUP(x^3-6*x^2+11*x-6,x,"SIMP");
`ALIAS/ID`:="nd":
BoundUP(y*x^3-6*x^2+11*x*y-6,[x,y],"SIMP");
where The C++ program will take as input an interval vector which will represent the range for all variables in Vars. The program will then possibly update the ranges
 
[AA_low_pos, AA_high_pos]
[AA_low_neg, AA_high_neg]
that will contain respectively the ranges for the positive and negative real roots of the polynomial. If the program has been able to update the range for the positive roots it will set the global flag AA_Flag[0] to 1 and ALIAS_Flag[1] for the negative roots.

Note that several such procedures may be used as soon as a different `ALIAS/ID` are given between the procedure: if `ALIAS/ID` is not an empty string all global variables AA, ALIAS_Flag will have `ALIAS/ID` appended to their names. Hence in the second above example the lower bound for the positive roots will be AA_low_posnd.

An optional 4th argument may be a list of variable name. In that case Vars must be a single variable name. This will allow to create multiple simplification procedures for a parametric polynomial. For example if $P$ is the polynomial

\begin{displaymath}
y^3*x^3-6*x^2+11*x*y-6,x
\end{displaymath}

then
 
`ALIAS/ID`:="1":
BoundUP(y^3*x^3-6*x^2+11*x*y-6,x,"SIMP1",[x,y]);
`ALIAS/ID`:="2":
BoundUP(y^3*x^3-6*x^2+11*x*y-6,y,"SIMP2",[x,y]);
will create the simplification SIMP1 that consider $P$ as a polynomial in x while SIMP2 consider $P$ as a polynomial in y. This allows to have a single list of variable names, as required by the solving procedure, but still to generate multiple simplification procedures.


next up previous contents
Next: Simplification procedures Up: Utilities Previous: Utilities   Contents
Jean-Pierre Merlet 2012-12-20