eliminate



[Barton Willis , Wed, 28 Dec 2005 08:26:12 -0600]:
> The function 'eliminate' uses the polynomial resultant. It's known that
> the resultant can enlarge the solution set of a polynomial system. A
> polynomial equation solver that uses the resultant to eliminate variables
> one by one will, in general, generate spurious solutions. I think 'algsys'
> uses this method; presumably, Maxima checks each putative solution.
> You might like to use the Grobner basis instead of using 'eliminate':
...

Thanks for the explanation!  Should the documentation of eliminate be
updated to include a note on this, or is the reader expected to know
about this?

The current version is:

,----
|  -- Function: eliminate ([, ..., ], [, ..., ])
|      Eliminates variables from equations (or expressions assumed equal
|      to zero) by taking successive resultants. This returns a list of
|      ` - ' expressions with the  variables , ..., 
|      eliminated.  First  is eliminated yielding ` - 1'
|      expressions, then `x_2' is eliminated, etc.  If ` = ' then a
|      single expression in a list is returned free of the variables
|      , ..., .  In this case `solve' is called to solve the
|      last resultant for the last variable.
| 
|      Example:
| 
|           (%i1) expr1: 2*x^2 + y*x + z;
|                                                 2
|           (%o1)                    z + x y + 2 x
|           (%i2) expr2: 3*x + 5*y - z - 1;
|           (%o2)                  - z + 5 y + 3 x - 1
|           (%i3) expr3: z^2 + x - y^2 + 5;
|                                     2    2
|           (%o3)                    z  - y  + x + 5
|           (%i4) eliminate ([expr3, expr2, expr1], [y, z]);
|                        8         7         6          5          4
|           (%o4) [7425 x  - 1170 x  + 1299 x  + 12076 x  + 22887 x
| 
|                                               3         2
|                                       - 5154 x  - 1291 x  + 7688 x + 15376]
`----

It might be sufficient to add something like the following before the
example:

    Taking successive resultants may enlarge the solution space so
    that all solutions should be checked.  An alternative is to use
    Grobner bases, cf. contrib/Grobner.

Best regards,

Albert.