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
1 Answer
$\begingroup$
$\endgroup$
4
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
*)
-
$\begingroup$ I am glad to see you located that function and also got sensible results. Or resultants. Whatever. $\endgroup$Daniel Lichtblau– Daniel Lichtblau2015-08-28 14:18:52 +00:00Commented Aug 28, 2015 at 14:18
-
$\begingroup$ @DanielLichtblau Only up to three vars :( $\endgroup$Dr. belisarius– Dr. belisarius2015-08-28 14:20:11 +00:00Commented 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$Daniel Lichtblau– Daniel Lichtblau2015-08-28 14:22:54 +00:00Commented 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$Dr. belisarius– Dr. belisarius2015-08-28 14:30:25 +00:00Commented Aug 28, 2015 at 14:30
MultivariateResultant`MacaulayResultant. Just don't get worked up if your Mathematica kernel crashes: this stuff is old and unmaintained. Quite likely also untested. $\endgroup$