Find zeros of a function using Newton's Method

The Newton-Raphson method uses the tangent of a curve to iteratively approximate a zero of a function, `f(x)`

. This yields the update:

Consider the zero of `(x + 2) * (x - 1)`

at `x = 1`

:

```
var nr = require('newton-raphson-method');
function f (x) { return (x - 1) * (x + 2); }
function fp (x) { return (x - 1) + (x + 2); }
// Using the derivative:
nr(f, fp, 2)
// => 1.0000000000000000 (6 iterations)
// Using a numerical derivative:
nr(f, 2)
// => 1.0000000000000000 (6 iterations)
```

```
$ npm install newton-raphson-method
```

`require('newton-raphson-method')(f[, fp], x0[, options])`

Given a real-valued function of one variable, iteratively improves and returns a guess of a zero.

**Parameters**:

`f`

: The numerical function of one variable of which to compute the zero.`fp`

(optional): The first derivative of`f`

. If not provided, is computed numerically using a fourth order central difference with step size`h`

.`x0`

: A number representing the intial guess of the zero.`options`

(optional): An object permitting the following options:`tolerance`

(default:`1e-7`

): The tolerance by which convergence is measured. Convergence is met if`|x[n+1] - x[n]| <= tolerance * |x[n+1]|`

.`epsilon`

(default:`2.220446049250313e-16`

(double-precision epsilon)): A threshold against which the first derivative is tested. Algorithm fails if`|y'| < epsilon * |y|`

.`maxIterations`

(default:`20`

): Maximum permitted iterations.`h`

(default:`1e-4`

): Step size for numerical differentiation.`verbose`

(default:`false`

): Output additional information about guesses, convergence, and failure.

**Returns**: If convergence is achieved, returns an approximation of the zero. If the algorithm fails, returns `false`

.

`modified-newton-raphson`

: A simple modification of Newton-Raphson that may exhibit improved convergence.`newton-raphson`

: A similar and lovely implementation that differs (only?) in requiring a first derivative.

© 2016 Scijs Authors. MIT License.

Ricky Reusser

Great Documentation0

Easy to Use0

Performant0

Highly Customizable0

Bleeding Edge0

Responsive Maintainers0

Poor Documentation0

Hard to Use0

Slow0

Buggy0

Abandoned0

Unwelcoming Community0

No reviews found

Be the first to rateNo alternatives found

No tutorials found

Add a tutorial