Function Repository Resource:

BezoutMatrix

Source Notebook

Generate the Bézout matrix of two univariate polynomials

Contributed by: Jan Mangaldan

ResourceFunction["BezoutMatrix"][poly1,poly2,var]

returns the Bézout matrix of the polynomials poly1 and poly2 with respect to the variable var.

Details

The Bézout matrix is symmetric and has dimensions Max[m,n]×Max[m,n], where m and n are respectively the degrees of poly1 and poly2.
The determinant of the Bézout matrix of two polynomials is proportional to their resultant.

Examples

Basic Examples (1) 

The Bézout matrix of two polynomials:

In[1]:=
ResourceFunction[
  "BezoutMatrix"][(x - a) (x - b), (x - c) (x - d) (x - e), x] // MatrixForm
Out[1]=

Scope (2) 

The Bézout matrix of polynomials with numeric coefficients:

In[2]:=
ResourceFunction["BezoutMatrix"][x^2 - 2 x + 7, x^3 - x + 5, x] // MatrixForm
Out[2]=

The Bézout matrix of polynomials with parametric coefficients:

In[3]:=
ResourceFunction["BezoutMatrix"][
  a x^2 + b x + c, (a - b) x^3 + (a - c) x^2 + (b - c) x + 9, x] // MatrixForm
Out[3]=

Applications (2) 

A polynomial is stable if all of its roots have negative real parts. Use BezoutMatrix to check the stability of a polynomial:

In[4]:=
poly = 1 + x/2 + x^2/9 + x^3/72 + x^4/1008 + x^5/30240;
{qp, pp} = ComplexExpand[ReIm[poly /. x -> I x], TargetFunctions -> {Re, Im}];
MatrixForm[ma = ResourceFunction["BezoutMatrix"][pp, qp, x]]
Out[6]=
In[7]:=
PositiveDefiniteMatrixQ[ma]
Out[7]=

Verify stability by computing the roots of the polynomial:

In[8]:=
Re[x] < 0 /. NSolve[poly == 0, x]
Out[8]=

Properties and Relations (2) 

The Bézout matrix is symmetric:

In[9]:=
SymmetricMatrixQ[
 ResourceFunction[
  "BezoutMatrix"][(x - 1) (x - 2) (x - 3), (x - 4) (x - 5) (x - 6), x]]
Out[9]=

The determinant of the Bézout matrix of two polynomials is proportional to their resultant:

In[10]:=
pp = 11 (x - 1) (x - 2) (x - 3) (x - 4);
qp = -9 (x - 5) (x - 6) (x - 7);
m = Exponent[pp, x]; n = Exponent[qp, x];
In[11]:=
(-1)^Binomial[Max[m, n], 2] Coefficient[pp, x, m]^(n - m)
  Det[ResourceFunction["BezoutMatrix"][pp, qp, x]]
Out[11]=
In[12]:=
Resultant[pp, qp, x]
Out[12]=

Neat Examples (1) 

Verify a relationship between the Bézout matrix and the Sylvester matrix:

In[13]:=
n = 7;
{pp, qp} = RandomInteger[{-9, 9}, {2, n + 1}] . (x^Range[0, n]);
In[14]:=
sm = ResourceFunction["SylvesterMatrix"][pp, qp, x];
bm = ResourceFunction["BezoutMatrix"][pp, qp, x];
In[15]:=
jm = ArrayFlatten[( {
     {0, Reverse[IdentityMatrix[n]]},
     {-Reverse[IdentityMatrix[n]], 0}
    } )];
In[16]:=
Transpose[sm] . jm . sm == jm . ArrayFlatten[( {
     {0, bm},
     {-bm, 0}
    } )] . Transpose[jm]
Out[16]=

Version History

  • 1.0.0 – 01 March 2021

Related Resources

License Information