eliminate



-----Albert Reiner wrote: -----

>| (%i1) eliminate([c*x^2=a, c*x = b], [c]);
>|
>| (%o1)                           [- x (b x - a)]
>
>OK, as expected.
>
>| (%i2) eliminate([c*x^2=a, c*x = b], [x]);
>|
>    2
>| (%o2)                          [- c (a c - b )]
>
>Unexpected: This seems to suggest that c=0 solves
>both equations.  I would have expected [ a*c - b^2 ] instead.

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':

(%i1) file_search_lisp :
cons("C:/maximacvs/maxima/share/contrib/Grobner/###.{lisp}",
file_search_lisp)$
(%i2) poly_reduced_grobner([c*x^2-a,c*x-b],[x,a,b,c]);
(%o2) [c*x-b,b*x-a,a*c-b^2]

Barton