RootFinding[BivariatePolynomial]  find the solutions of two or more bivariate polynomials

Calling Sequence


BivariatePolynomial(fg, varlist, options)


Parameters


fg



set or list of two or more polynomials in two variables

varlist



list or set of two names; a list defines the order in the solutions pairs returned, a set requests output in the form {x=..,y=..}

options



(optional) equations of the form option=value where option is one of exact, verify, or verifyTol.





Description


•

The BivariatePolynomial(fg, varlist, options) command solves the bivariate polynomials fg, in the case when there is only a finite number of solutions. If there are an infinite number of solutions, this routine may fail.


If the option verify=true is given (the default), or if there are more than two input polynomials, each putative root is tested on the original polynomials to see if the residual is acceptably small. A residual is judged to be small enough if it is smaller than ilog[10](n+1)*verifyTol times the maxnorm of the polynomial, where n is the number of roots. By default, verifyTol=Float(1,1Digits). This default tolerance may be overridden by setting the option verifyTol=... in the call.

•

The routine assumes that has only isolated simple roots. Multiple roots are, numerically, perturbed into clusters of simple roots by rounding errors in the process. In practice, if the multiplicity of the root is not too high (say not more than three) then the results may be acceptable. If, however, there are an infinite number of roots (i.e. the dimensionality of the variety is higher than zero), then this routine will fail. Through rounding errors, a higherdimensional system MAY be perturbed to a zerodimensional system, and in this case pseudozeros are calculated and some information may be deduced about the true solutions by repeated solving; the differing random combinations will produce different pseudozeros that can be put together to get a partial picture of the higher dimensional zero set.

•

Exact solutions are sometimes possible, and may be attempted by specifying the option exact=true. In this case, the random combinations are done over the integers to avoid introducing rounding errors. In the case where the input coefficients are exact and the polynomials are not of too high a degree, this may give exact (though not necessarily useful) answers.

•

Solutions obtained by BivariatePolynomial may be refined by use of fsolve. See the examples.



Options


•

The options argument can contain the following equation.


If exact=true, the command performs the computation exactly (depending on Eigenvectors succeeding with an exact computation).


If verify=true (the default), the command tests that the values of each input polynomial at each computed root is smaller than 10 ulps, where an ulp is a Unit in the Last Place, measured relative to the user's setting of Digits and a vector norm of the polynomial coefficients. If verify=false, this residual test is not performed and infinite and spurious roots are returned along with any genuine roots.


verifyTol = positive floatingpoint number for residual tolerance


If verifyTol is overridden, the residual test is passed if the residual is less than or equal to ilog[10](n+1)*verifyTol times a vector norm of the polynomial coefficients.


Note: The resultType = data_type option has been superseded by the exact option.



Examples


>


 (1) 
Exact answers (not usually useful)
>


 (2) 
>


 (3) 
>


 (4) 
Set output, and a large residual tolerance
>


 (5) 
A higherdegree example
>


 (6) 
>


 (7) 
>


>


 (8) 
Refining the solutions by passing them as initial approximations to fsolve.
>


 (9) 
>


 (10) 
>


 (11) 
>


 (12) 
A onedimensional variety, which causes BivariatePolynomial to fail: Note that many roots are found of the form x=1, y=anything (but not an infinite number), and the isolated roots are lost.
>


 (13) 
>


 (14) 
>


 (15) 
>


 (16) 
Another example, worse in that the multiplicity is higher.
>


 (17) 
>


 (18) 
>


 (19) 
Correct solutions are not always returned. Doing it again may produce different output (because of the randomness)
>


 (20) 
>


 (21) 
>


 (22) 
>


 (23) 
>


 (24) 
>


 (25) 


References



Barnett, Stephen. Polynomials and Linear Control Systems. Deffer, 1983.


Manocha, Dinesh. "Numerical methods for solving polynomial equations, in Applications of Computational Geometry." AMS proceedings of applied mathematics, Vol. 53. 1998.


