# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

# poly

Polynomial with specified roots or characteristic polynomial

## Syntax

``p = poly(r)``
``p = poly(A)``

## Description

example

````p = poly(r)`, where `r` is a vector, returns the coefficients of the polynomial whose roots are the elements of `r`.```

example

````p = poly(A)`, where `A` is an `n`-by-`n` matrix, returns the `n+1` coefficients of the characteristic polynomial of the matrix, `det`(λI – A).```

## Examples

collapse all

Calculate the eigenvalues of a matrix, `A`.

`A = [1 8 -10; -4 2 4; -5 2 8]`
`e = eig(A)`

Since the eigenvalues in `e` are the roots of the characteristic polynomial of `A`, use `poly` to determine the characteristic polynomial from the values in `e`.

`p = poly(e)`

Use `poly` to calculate the characteristic polynomial of a matrix, `A`.

`A = [1 2 3; 4 5 6; 7 8 0]`
```A = 1 2 3 4 5 6 7 8 0 ```
`p = poly(A)`
```p = 1.0000 -6.0000 -72.0000 -27.0000 ```

Calculate the roots of `p` using `roots`. The roots of the characteristic polynomial are the eigenvalues of matrix `A`.

`r = roots(p)`
```r = 12.1229 -5.7345 -0.3884 ```

## Input Arguments

collapse all

Polynomial roots, specified as a vector.

Example: `poly([2 -3])`

Example: `poly([2 -2 3 -3])`

Example: `poly(roots(k))`

Example: `poly(eig(A))`

Data Types: `single` | `double`
Complex Number Support: Yes

Input matrix.

Example: `poly([0 -1; 1 0])`

Data Types: `single` | `double`
Complex Number Support: Yes

## Output Arguments

collapse all

Polynomial coefficients, returned as a row vector.

• If the input is a square `n`-by-`n` matrix, `A`, then `p` contains the coefficients for the characteristic polynomial of `A`.

• If the input is a vector of roots, `r`, then `p` contains the coefficients for the polynomial whose roots are in `r`.

In each case, the `n+1` coefficients in `p` describe the polynomial

`${p}_{1}{x}^{n}+{p}_{2}{x}^{n-1}+...+{p}_{n}x+{p}_{n+1}\text{\hspace{0.17em}}.$`

## Tips

• For vectors, `r = roots(p)` and ```p = poly(r)``` are inverse functions of each other, up to roundoff error, ordering, and scaling.

## Algorithms

The algorithms employed for `poly` and `roots` illustrate an interesting aspect of the modern approach to eigenvalue computation. `poly(A)` generates the characteristic polynomial of `A`, and `roots(poly(A))` finds the roots of that polynomial, which are the eigenvalues of `A`. But both `poly` and `roots` use `eig`, which is based on similarity transformations. The classical approach, which characterizes eigenvalues as roots of the characteristic polynomial, is actually reversed.

If `A` is an `n`-by-`n` matrix, `poly(A)` produces the coefficients `p(1)` through `p(n+1)`, with `p(1)` `=` `1`, in

`$\mathrm{det}\left(\lambda I-A\right)={p}_{1}{\lambda }^{n}+\dots +{p}_{n}\lambda +{p}_{n+1}\text{\hspace{0.17em}}.$`

The algorithm is

```z = eig(A); p = zeros(n+1,1); p(1) = 1; for j = 1:n p(2:j+1) = p(2:j+1)-z(j)*p(1:j); end```

This recursion is derived by expanding the product,

`$\left(\lambda -{\lambda }_{1}\right)\left(\lambda -{\lambda }_{2}\right)\dots \left(\lambda -{\lambda }_{n}\right)\text{\hspace{0.17em}}.$`

It is possible to prove that `poly(A)` produces the coefficients in the characteristic polynomial of a matrix within roundoff error of `A`. This is true even if the eigenvalues of `A` are badly conditioned. The traditional algorithms for obtaining the characteristic polynomial do not use the eigenvalues, and do not have such satisfactory numerical properties.