Octave can find the roots of a given polynomial. This is done by computing
the companion matrix of the polynomial (see the `compan`

function
for a definition), and then finding its eigenvalues.

- :
`r`=**roots**`(`

¶`c`) -
Compute the roots of the polynomial

`c`.For a vector

`c`with*N*components, return the roots of the polynomialc(1) * x^(N-1) + ... + c(N-1) * x + c(N)

As an example, the following code finds the roots of the quadratic polynomial

p(x) = x^2 - 5.

c = [1, 0, -5]; roots (c) ⇒ 2.2361 ⇒ -2.2361

Note that the true result is

*+/- sqrt(5)*which is roughly*+/- 2.2361*.

- :
`z`=**polyeig**`(`

¶`C0`,`C1`, …,`Cl`) - :
`[`

`v`,`z`] =**polyeig**`(`

¶`C0`,`C1`, …,`Cl`) -
Solve the polynomial eigenvalue problem of degree

`l`.Given an

`n`x`n`matrix polynomial`C`(`s`) =`C0`+`C1``s`+ … +`Cl``s`^`l``polyeig`

solves the eigenvalue problem`(`

.`C0`+`C1``z`+ … +`Cl``z`^`l`)`v`= 0Note that the eigenvalues

`z`are the zeros of the matrix polynomial.`z`is a row vector with

elements.`n`*`l``v`is a matrix (`n`x`n`*`l`) with columns that correspond to the eigenvectors.

- :
`A`=**compan**`(`

¶`c`) Compute the companion matrix corresponding to polynomial coefficient vector

`c`.The companion matrix is

_ _ | -c(2)/c(1) -c(3)/c(1) ... -c(N)/c(1) -c(N+1)/c(1) | | 1 0 ... 0 0 | | 0 1 ... 0 0 | A = | . . . . . | | . . . . . | | . . . . . | |_ 0 0 ... 1 0 _|

The eigenvalues of the companion matrix are equal to the roots of the polynomial.

- :
`[`

`multp`,`idxp`] =**mpoles**`(`

¶`p`) - :
`[`

`multp`,`idxp`] =**mpoles**`(`

¶`p`,`tol`) - :
`[`

`multp`,`idxp`] =**mpoles**`(`

¶`p`,`tol`,`reorder`) Identify unique poles in

`p`and their associated multiplicity.By default, the output is ordered from the pole with the largest magnitude to the smallest magnitude.

Two poles are considered to be multiples if the difference between them is less than the relative tolerance

`tol`.abs (

`p1`-`p0`) / abs (`p0`) <`tol`If the pole is 0 then no scaling is done and

`tol`is interpreted as an absolute tolerance. The default value for`tol`is 0.001.If the optional parameter

`reorder`is false/zero, poles are not sorted.The output

`multp`is a vector specifying the multiplicity of the poles.

refers to the multiplicity of the Nth pole`multp`(n)

.`p`(`idxp`(n))For example:

p = [2 3 1 1 2]; [m, n] = mpoles (p) ⇒ m = [1; 1; 2; 1; 2] ⇒ n = [2; 5; 1; 4; 3] ⇒ p(n) = [3, 2, 2, 1, 1]