- publishing free software manuals
 GNU Octave Manual Version 3 by John W. Eaton, David Bateman, Søren HaubergPaperback (6"x9"), 568 pagesISBN 095461206XRRP £24.95 (\$39.95)

## 26.2 Finding Roots

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 (v)

For a vector v with N components, return the roots of the polynomial

```v(1) * z^(N-1) + ... + v(N-1) * z + v(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: 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.