This function is identical to diff, except that contraction is used instead of differentiation. This means for example that x^3 contracted by x^2 is x, not 6 x. For example,
i1 = R = ZZ/101[a..c] o1 = R o1 : PolynomialRing
i2 = diff(transpose matrix {{a,b,c}}, matrix {{(a+b+c)^3, a^2 * b^3 * c^2}}) o2 = | 3a2+6ab+3b2+6ac+6bc+3c2 2ab3c2 | | 3a2+6ab+3b2+6ac+6bc+3c2 3a2b2c2 | | 3a2+6ab+3b2+6ac+6bc+3c2 2a2b3c | 3 2 o2 : Matrix R <--- R
As another example, the Sylvester resultant between homogeneous polynomials f(x,y) and g(x,y) can be found in the following way.
i3 = R = (ZZ/101[a,b])[x,y] o3 = R o3 : PolynomialRing
i4 = f = a * x^3 + b * x^2 * y + y^3 3 2 3 o4 = a x + b x y + y o4 : R
i5 = g = b * x^3 + a * x * y^2 + y^3 3 2 3 o5 = b x + a x y + y o5 : RMultiply each of these by all quadrics, obtaining a set of elements in degree 5:
i6 = n = matrix {{f,g}} ** symmetricPower(2,vars R) o6 = | ax5+bx4y+x2y3 ax4y+bx3y2+xy4 ax3y2+bx2y3+y5 bx5+ax3y2+x2y3 bx4y+ax2y3+xy4 bx3y2+axy4+y5 | 1 6 o6 : Matrix R <--- RNow create the matrix of coefficients by using contract against all monomials of degree 5 in x and y.
i7 = M = contract(transpose symmetricPower(5,vars R), n) o7 = | a 0 0 b 0 0 | | b a 0 0 b 0 | | 0 b a a 0 b | | 1 0 b 1 a 0 | | 0 1 0 0 1 a | | 0 0 1 0 0 1 | 6 6 o7 : Matrix R <--- R
i8 = Resfg = minors(6, M) o8 = ideal | -a5-a2b3-a3b-a2b2+2ab3-b4+a3-3a2b+3ab2-b3 | o8 : Ideal
See also diff.
Go to main index.
Go to concepts index.