Macaulay2 » Documentation
Packages » DeterminantalRepresentations :: companionMatrix
next | previous | forward | backward | up | index | toc

# companionMatrix -- companion matrix of a univariate polynomial

- Usage:
    `companionMatrix f`
- Inputs:
  - f, a ring element, a univariate polynomial
- Outputs:
  - a matrix,

## Description

For a monic univariate polynomial $f$ of degree $d$, this method returns the companion matrix $C(f)$, which is a $d\times d$ matrix whose characteristic polynomial is $f$. Explicitly, $C(f)$ has entries $1$ on the first subdiagonal (the diagonal below the main diagonal), negative coefficients of $f$ in the last column (other than the leading coefficient of $1$), and $0$ elsewhere.

If $f$ is not monic, then this method returns the companion matrix of the normalized monic polynomial $(1/a_n)f$, where $a_n$ is the leading coefficient of $f$.

    i1 : R = CC[x]

    o1 = R

    o1 : PolynomialRing

    i2 : eigenvalues companionMatrix(9*x^2 - 1)

    o2 = {.333333 }
         {-.333333}

    o2 : VerticalList

    i3 : f = x^10 + sum(10, i -> random(i, R))

          10                          9                          8
    o3 = x   + (.741046 + .108386*ii)x  + (.127435 + .254482*ii)x  + (.362835 +
         ------------------------------------------------------------------------
                     7                           6                          5
         .706096*ii)x  + (.0741835 + .808694*ii)x  + (.909047 + .314897*ii)x  +
         ------------------------------------------------------------------------
                                4                         3
         (.461944 + .775187*ii)x  + (.89189 + .231053*ii)x  + (.0258884 +
         ------------------------------------------------------------------------
                     2
         .714827*ii)x  + (.29398 + .632944*ii)x + .892712 + .673395*ii

    o3 : R

    i4 : C = companionMatrix f

    o4 = | 0 0 0 0 0 0 0 0 0 -.892712-.673395ii  |
         | 1 0 0 0 0 0 0 0 0 -.29398-.632944ii   |
         | 0 1 0 0 0 0 0 0 0 -.0258884-.714827ii |
         | 0 0 1 0 0 0 0 0 0 -.89189-.231053ii   |
         | 0 0 0 1 0 0 0 0 0 -.461944-.775187ii  |
         | 0 0 0 0 1 0 0 0 0 -.909047-.314897ii  |
         | 0 0 0 0 0 1 0 0 0 -.0741835-.808694ii |
         | 0 0 0 0 0 0 1 0 0 -.362835-.706096ii  |
         | 0 0 0 0 0 0 0 1 0 -.127435-.254482ii  |
         | 0 0 0 0 0 0 0 0 1 -.741046-.108386ii  |

                    10         10
    o4 : Matrix CC     <-- CC
                  53         53

    i5 : clean(1e-10, f - det(x*id_(R^10) - C))

    o5 = 0

    o5 : R

    i6 : all(eigenvalues C, z -> clean(1e-10, sub(f, R_0 => z)) == 0)

    o6 = true

## Ways to use companionMatrix:

- `companionMatrix(RingElement)`

## For the programmer

The object companionMatrix is a method function.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/DeterminantalRepresentations.m2:1220:0.