Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Is there any command in Mathematica 7 which can compute the (McCaulay) resultant of a parametric system of multivariate polynomial equations? In fact, it would be great if there is also a way to compute the discriminant of such a system in Mathematica as well. Thanks, - dbm

share|improve this question
    
@belisarius, That gives two polynomials! I don't know what that means. –  dbm Oct 28 '13 at 14:39
    
Could try MultivariateResultant`MacaulayResultant. Just don't get worked up if your Mathematica kernel crashes: this stuff is old and unmaintained. Quite likely also untested. –  Daniel Lichtblau Oct 28 '13 at 15:14
    
@DanielLichtblau, How can I use this package? I don't seem to have it in Mathematica 7. –  dbm Oct 28 '13 at 23:20
    
I thought it was there in the Mathematica kernel. I guess it could be new to version 8 or 9. That would be good insofar as it would indicate that this might be tested, working functionality. –  Daniel Lichtblau Oct 29 '13 at 15:20

1 Answer 1

There is an undocumented command (Mma V9). Use it at your own risk, YMMV. I found it following @Daniel's hint above:

pols = {x - a, x - b y, y - k};
mvr = Internal`MultivariateResultant[pols, {x, y}]
(* -a + b k *)

We can test that that is effectively the condition for common roots:

Solve[And @@ Thread[(pols /. First@Solve[mvr == 0]) == 0], {x, y}]
(* {{x -> b k, y -> k}} *)

It works in much more complicated cases.

eq1 = a6 x y + a5 x z + a4 y z + a3 x + a2 y + a1 z + a0;
eq2 = x y z + b6 x y + b5 x z + b4 y z + b3 x + b2 y + b1 z + b0;
eq3 = c6 x y + c5 x z + c4 y z + c3 x + c2 y + c1 z + c0;
(mvr = Internal`MultivariateResultant[{eq1, eq2, eq3}, {x, y, z}]) // Short
(*
a6^2 b2 b3 c0^2 - a3 a6 b2 b6 c0^2 - a2 a6 b3 b6 c0^2 + <<2978>> +  a1 a4 b4 c5^2 z^6
 *)
share|improve this answer
    
I am glad to see you located that function and also got sensible results. Or resultants. Whatever. –  Daniel Lichtblau Aug 28 at 14:18
    
@DanielLichtblau Only up to three vars :( –  belisarius Aug 28 at 14:20
    
Well, you are using purely symbolic coefficients in your example, so it is going to be a difficult one. Problems with rational coeffs might fare better, maybe allow for more polynomials and variables. Or maybe those crash. It's been a long time since I even looked (briefly) at that code; I didn't write it and was not up to the task of debugging it. –  Daniel Lichtblau Aug 28 at 14:22
3  
@DanielLichtblau The limit of three polys/vars seems hardcoded somewhere (strange). It doesn't matter if the input is symbolic or not: with more than three polys it spits out the input. Anyway, it's too easy to crash, so I think the version I've here is just barely debugged. –  belisarius Aug 28 at 14:30

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.