r = roots(c) returns a
column vector whose elements are the roots of the polynomial c.
Row vector c contains the coefficients of
a polynomial, ordered in descending powers. If c has n+1 components,
the polynomial it represents is c_{1}s^{n} +
… + c_{n}s + c_{n}_{ +
1}.
Examples
The polynomial s^{3} –
6s^{2} – 72s –
27 is represented in MATLAB^{®} software as
p = [1 -6 -72 -27]
The roots of this polynomial are returned in a column vector
by
Note the relationship of this function to p = poly(r),
which returns a row vector whose elements are the coefficients of
the polynomial. For vectors, roots and poly are
inverse functions of each other, up to ordering, scaling, and roundoff
error.
The algorithm simply involves computing the eigenvalues of the
companion matrix:
A = diag(ones(n-1,1),-1);
A(1,:) = -c(2:n+1)./c(1);
eig(A)
It is possible to prove that the results produced are the exact
eigenvalues of a matrix within roundoff error of the companion matrix A,
but this does not mean that they are the exact roots of a polynomial
with coefficients within roundoff error of those in c.