Accelerating the pace of engineering and science

# Documentation Center

• Trial Software

# linalg::companion

Companion matrix of a univariate polynomial

### Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

## Syntax

```linalg::companion(p, <x>)
```

## Description

linalg::companion(p) returns the companion matrix associated with the polynomial p.

p must be monic and of degree one at least.

If p is a polynomial, i.e., an object of type DOM_POLY, then specifying x has no effect.

If p is a polynomial, then the component ring of the returned matrix is the coefficient ring of p, except in two cases for built-in coefficient rings: if the coefficient ring of p is Expr then the domain Dom::ExpressionField() is the component ring of the companion matrix. If it is IntMod(m) then the companion matrix is defined over the ring Dom::IntegerMod(m) (see Example 2).

If p is a polynomial expression, then the companion matrix is defined over Dom::ExpressionField().

If p is a polynomial expression containing several symbolic indeterminates then x must be specified and distinguishes the indeterminate x from the other symbolic parameters.

## Examples

### Example 1

```delete a_0, a_1, a_2, a_3:
p := x^4 + a_3*x^3 + a_2*x^2 + a_1*x + a_0```

To compute the companion matrix of p with respect to x we must specify the second parameter x, because the expression p contains the indeterminates a0, a1, a2, a3 and x:

`linalg::companion(p)`
```Error: The polynomial expression is multivariate. Specify the indeterminate as second argument. [linalg::companion]
```
`linalg::companion(p, x)`

Of course, we can compute the companion matrix of p with respect to a0 as well:

`linalg::companion(p, a_0)`

The following fails with an error message, because the polynomial p is not monic with respect to a1:

`linalg::companion(p, a_1)`
```Error: Polynomial is not monic. [linalg::companion]
```

### Example 2

If we enter a polynomial over the built-in coefficient domain Expr, then the companion matrix is defined over the standard component ring for matrices (the domain Dom::ExpressionField()):

`C := linalg::companion(poly(x^2 + 10*x + PI, [x]))`

`domtype(C)`

If we define a polynomial over the build-in coefficient domain IntMod(m), then the companion matrix is defined over the corresponding component ring Dom::IntegerMod(m), as shown in the next example:

`p := poly(x^2 + 10*x + 7, [x], IntMod(3))`

`C := linalg::companion(p)`

`domtype(C)`

## Parameters

 p An univariate polynomial, or a polynomial expression x

## Return Values

Matrix of the domain Dom::Matrix(R).

## Algorithms

The companion matrix of the polynomial xn + an1xn - 1 + … + a1x + a0 is the matrix:

.

The companion matrix of a univariate polynomial p of degree n is an n×n matrix C with pC = p, where pC is the characteristic polynomial of C.