# scijs/durand-kerner

Finds roots of polynomials by Weierstrauss' method
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
 Failed to load latest commit information. test Jul 2, 2015 .gitignore May 7, 2013 .travis.yml Jul 2, 2015 LICENSE May 14, 2013 README.md Jul 2, 2015 package.json Jul 2, 2015 roots.js Jul 2, 2015

# durand-kerner

Finds all the roots of a polynomial by Weierstrass' method (or known in Abramowitz&Stegun as the Durand-Kerner method). This is basically a generalization of Newton's method that works for multiple roots.

# Example

To find the roots for `1 + 1*x - 1*x^2`:

```var findRoots = require("durand-kerner")

var roots = findRoots([1, 1, -1])

// Now:
//      roots[0] = real part of roots
//      roots[1] = imaginary part of roots

for(var i=0; i<roots.length; ++i) {
console.log(roots[0][i] + "+" + roots[1][i] + "i")
}```

### Output

`````` 1.618033988749895+0i
-0.6180339887498949+0i
``````

# Install

Install using npm:

``````npm install durand-kerner
``````

# API

#### `require("durand-kerner")(r_coeff[, i_coeff, n_iters, tolerance, initial])`

Finds the roots of a polynomial whose real coefficients are given by `r_coeff` and imaginary coefficients by `i_coeff`.

• `r_coeff` - the real part of the polynomial's coefficients, stored in an array
• `i_coeff` - the imaginary part of the polynomial's coefficients (default all 0)
• `n_iters` - Maximum number of iterations to run before bailout. Default is `100 * n * n`
• `tolerance` - Stopping threshold. Default is `1e-6`
• `initial` - Initial guess for solution vector (must have the same length as `r_coeff`). This also gets the solution (optional)

Returns An array of roots.

# License

(c) 2013 Mikola Lysenko. MIT License