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.

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

- Function File:
`z`=**polyeig***(*`C0`,`C1`, …,`Cl`) - Function File:
*[*`v`,`z`] =**polyeig***(*`C0`,`C1`, …,`Cl`) -
Solve the polynomial eigenvalue problem of degree

`l`.Given an

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

solves the eigenvalue problem`(`

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

`z`are the zeros of the matrix polynomial.`z`is a row vector with`n*l`elements.`v`is a matrix (`n`x`n`*`l`) with columns that correspond to the eigenvectors.

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

- Function File:
*[*`multp`,`idxp`] =**mpoles***(*`p`) - Function File:
*[*`multp`,`idxp`] =**mpoles***(*`p`,`tol`) - Function File:
*[*`multp`,`idxp`] =**mpoles***(*`p`,`tol`,`reorder`) Identify unique poles in

`p`and their associated multiplicity.The output is ordered from largest pole to smallest pole.

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]