[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.