5
$\begingroup$

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

$\endgroup$
4
  • $\begingroup$ @belisarius, That gives two polynomials! I don't know what that means. $\endgroup$ Commented Oct 28, 2013 at 14:39
  • $\begingroup$ 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. $\endgroup$ Commented Oct 28, 2013 at 15:14
  • $\begingroup$ @DanielLichtblau, How can I use this package? I don't seem to have it in Mathematica 7. $\endgroup$ Commented Oct 28, 2013 at 23:20
  • $\begingroup$ 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. $\endgroup$ Commented Oct 29, 2013 at 15:20

1 Answer 1

6
$\begingroup$

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
 *)
$\endgroup$
4
  • $\begingroup$ I am glad to see you located that function and also got sensible results. Or resultants. Whatever. $\endgroup$ Commented Aug 28, 2015 at 14:18
  • $\begingroup$ @DanielLichtblau Only up to three vars :( $\endgroup$ Commented Aug 28, 2015 at 14:20
  • $\begingroup$ 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. $\endgroup$ Commented Aug 28, 2015 at 14:22
  • 3
    $\begingroup$ @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. $\endgroup$ Commented Aug 28, 2015 at 14:30

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.