Next: Products of Polynomials, Previous: Evaluating Polynomials, Up: Polynomial Manipulations [Contents][Index]

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.

- :
**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.

- :
**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.The output is ordered from pole with largest magnitude to smallest magnitude.

If the relative difference of two poles is less than

`tol`then they are considered to be multiples. The default value for`tol`is 0.001.If the optional parameter

`reorder`is 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]