# Multivariate resultants

The resultant is a tool to projection onto a coefficient space. We consider a system of generic polynomials:

where

• are the parameters,
• is a point of the variety of dimension,
• are polynomial functions on .
The problem consists to find conditions on , such that this system has a root in . In the case, we are considering, there exists a polynomial in the parameters {{c}}, such that

iff the previous system has a solution in . This polynomial is called the resultant of on . Different constructions of resultants are presented hereafter.

## Tools for constructing matrices from polynomials

Several tools are available to construct matrices of coefficients of lists of polynomials:

template<class R,class L,class LM>
R matrix_of(const L& l, char t='N');
template<class R,class L,class LM>
R matrix_of(const L& l, const LM & lm, char t='N');

The use of such functions is done by specifying the output of matrices:

MAT m = matrix_of<MAT>(l);
MAT m = matrix_of<MAT>(l,'T');
where l is a list of multivariate polynomials, MAT the type of output matrix that we want to compute, and 'T' specifies if the transposed matrix is computed.

## Projective resultant

Here and is a generic polynomial of degree , . The construction used is the one described by F.S. Macaulay.
MAT m  = macaulay<MAT>(l);
MAT mt = macaulay<MAT>(l,'T');
where l is a list of multivariate polynomials in variables, MAT the type of output matrix that we want to compute, and 'T' specifies if the transposed matrix is computed or not.

## Toric resultant

Here is the toric variety associated to the Minkowsky sum of polytopes and is a generic polynomial of support in , . The construction used is the one described in [CaEm93].

synaps/mpol/Toric.h

## Bezoutian

The bezoutian yields a multiple of any resultants [ElMo99]. It is defined from (affine) polynomials in the variables .

synaps/mpol/bezoutian.h

## Example

#include <synaps/mpol.h>
#include <synaps/mpol/macaulay.h>
#include <synaps/mpol/bezoutian.h>
#include <synaps/mpol/Toric.h>
typedef  MatrDse<double> matr_t;
typedef  MPol<double>  mpol_t;
using std::cout; using std::endl;
int main ()
{
mpol_t p0("t+x+2*y"), p1("x^2+y^2-1"), p2("y^2+x*y-1");
vector<mpol_t> l; l.push_back(p0); l.push_back(p1); l.push_back(p2);

cout<< macaulay<matr_t>(l)<<endl;
[...]
cout<< m_bezout<matr_t>(l)<<endl;
[...]
cout<< toric<matr_t>(l)<<endl;
[...]
}

SYNAPS DOCUMENTATION