This is an option that determines which algorithm will be used to compute the resultant. There are currently four algorithms implemented:
"Poisson" (default) the resultant is computed, recursively, through the Poisson Formula (see [1, Theorem 3.4]);
"Macaulay" the resultant is computed as a Macaulay resultant, i.e. as a ratio of two determinants (see [1, Theorem 4.9]);
"Poisson2" and "Macaulay2" these are variants of the above ones using interpolation of multivariate polynomials.
[1] David A. Cox, John Little, Donal O'shea - Using Algebraic Geometry, Graduate Texts in Mathematics, Volume 185 (2005).
i1 : R = QQ[a,b][x,y,z,w] o1 = R o1 : PolynomialRing |
i2 : F = {(7/3)*x+(7/2)*y+z+2*w, ((10/7)*a+b)*x^2+(a+(5/4)*b)*x*y+(2*a+(1/2)*b)*y^2+((7/8)*a+(7/5)*b)*x*z+((3/4)*a+b)*y*z+((7/8)*a+(1/7)*b)*z^2+((5/7)*a+(4/3)*b)*x*w+(9*a+10*b)*y*w+((7/5)*a+(3/4)*b)*z*w+((4/3)*a+5*b)*w^2, ((1/2)*a+(7/5)*b)*x^3+((1/2)*a+10*b)*x^2*y+((8/9)*a+(3/5)*b)*x*y^2+(a+(7/6)*b)*y^3+((3/7)*a+(3/4)*b)*x^2*z+((1/3)*a+(9/10)*b)*x*y*z+((9/4)*a+b)*y^2*z+((1/6)*a+(1/5)*b)*x*z^2+(3*a+(5/2)*b)*y*z^2+((5/3)*a+(3/7)*b)*z^3+(a+b)*x^2*w+((4/5)*a+(5/4)*b)*x*y*w+((5/3)*a+(5/8)*b)*y^2*w+((3/2)*a+(1/6)*b)*x*z*w+((1/3)*a+(4/5)*b)*y*z*w+(9*a+(1/3)*b)*z^2*w+((7/3)*a+(5/4)*b)*x*w^2+(a+(3/4)*b)*y*w^2+((9/8)*a+(7/8)*b)*z*w^2+((9/7)*a+2*b)*w^3, 2*x+(1/4)*y+(8/3)*z+(4/5)*w} 7 7 10 2 5 1 2 7 o2 = {-x + -y + z + 2w, (--a + b)x + (a + -b)x*y + (2a + -b)y + (-a + 3 2 7 4 2 8 ------------------------------------------------------------------------ 7 3 7 1 2 5 4 7 -b)x*z + (-a + b)y*z + (-a + -b)z + (-a + -b)x*w + (9a + 10b)y*w + (-a 5 4 8 7 7 3 5 ------------------------------------------------------------------------ 3 4 2 1 7 3 1 2 8 3 2 + -b)z*w + (-a + 5b)w , (-a + -b)x + (-a + 10b)x y + (-a + -b)x*y + (a 4 3 2 5 2 9 5 ------------------------------------------------------------------------ 7 3 3 3 2 1 9 9 2 1 1 2 + -b)y + (-a + -b)x z + (-a + --b)x*y*z + (-a + b)y z + (-a + -b)x*z + 6 7 4 3 10 4 6 5 ------------------------------------------------------------------------ 5 2 5 3 3 2 4 5 5 5 2 (3a + -b)y*z + (-a + -b)z + (a + b)x w + (-a + -b)x*y*w + (-a + -b)y w 2 3 7 5 4 3 8 ------------------------------------------------------------------------ 3 1 1 4 1 2 7 5 2 + (-a + -b)x*z*w + (-a + -b)y*z*w + (9a + -b)z w + (-a + -b)x*w + (a + 2 6 3 5 3 3 4 ------------------------------------------------------------------------ 3 2 9 7 2 9 3 1 8 4 -b)y*w + (-a + -b)z*w + (-a + 2b)w , 2x + -y + -z + -w} 4 8 8 7 4 3 5 o2 : List |
i3 : time resultant(F,Algorithm=>"Poisson2") -- used 0.311621 seconds 21002161660529014459938925799 5 2085933800619238998825958079203 4 o3 = - -----------------------------a - -------------------------------a b - 2222549728809984000000 12700284164628480000000 ------------------------------------------------------------------------ 348237304382147063838108483692249 3 2 ---------------------------------a b - 889019891523993600000000 ------------------------------------------------------------------------ 38379949248928909714532254698073 2 3 --------------------------------a b - 35278567123968000000000 ------------------------------------------------------------------------ 1146977327343523453866040839029 4 194441910898734675845094443 5 -------------------------------a*b - ---------------------------b 1119954511872000000000 895963609497600000 o3 : QQ[a..b] |
i4 : time resultant(F,Algorithm=>"Macaulay2") -- used 0.10683 seconds 21002161660529014459938925799 5 2085933800619238998825958079203 4 o4 = - -----------------------------a - -------------------------------a b - 2222549728809984000000 12700284164628480000000 ------------------------------------------------------------------------ 348237304382147063838108483692249 3 2 ---------------------------------a b - 889019891523993600000000 ------------------------------------------------------------------------ 38379949248928909714532254698073 2 3 --------------------------------a b - 35278567123968000000000 ------------------------------------------------------------------------ 1146977327343523453866040839029 4 194441910898734675845094443 5 -------------------------------a*b - ---------------------------b 1119954511872000000000 895963609497600000 o4 : QQ[a..b] |
i5 : time resultant(F,Algorithm=>"Poisson") -- used 0.736637 seconds 21002161660529014459938925799 5 2085933800619238998825958079203 4 o5 = - -----------------------------a - -------------------------------a b - 2222549728809984000000 12700284164628480000000 ------------------------------------------------------------------------ 348237304382147063838108483692249 3 2 ---------------------------------a b - 889019891523993600000000 ------------------------------------------------------------------------ 38379949248928909714532254698073 2 3 --------------------------------a b - 35278567123968000000000 ------------------------------------------------------------------------ 1146977327343523453866040839029 4 194441910898734675845094443 5 -------------------------------a*b - ---------------------------b 1119954511872000000000 895963609497600000 o5 : QQ[a..b] |
i6 : time resultant(F,Algorithm=>"Macaulay") -- used 1.55391 seconds 21002161660529014459938925799 5 2085933800619238998825958079203 4 o6 = - -----------------------------a - -------------------------------a b - 2222549728809984000000 12700284164628480000000 ------------------------------------------------------------------------ 348237304382147063838108483692249 3 2 ---------------------------------a b - 889019891523993600000000 ------------------------------------------------------------------------ 38379949248928909714532254698073 2 3 --------------------------------a b - 35278567123968000000000 ------------------------------------------------------------------------ 1146977327343523453866040839029 4 194441910898734675845094443 5 -------------------------------a*b - ---------------------------b 1119954511872000000000 895963609497600000 o6 : QQ[a..b] |
i7 : assert(o3 == o4 and o4 == o5 and o5 == o6) |