newton-raphson-method
v1.0.2
Published
Find zeros of a function using the Newton-Raphson method
Downloads
48,040
Maintainers
Readme
newton-raphson-method
Find zeros of a function using Newton's Method
Introduction
The Newton-Raphson method uses the tangent of a curve to iteratively approximate a zero of a function, f(x)
. This yields the update:
Example
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)
Installation
$ npm install newton-raphson-method
API
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 off
. If not provided, is computed numerically using a fourth order central difference with step sizeh
.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
.
See Also
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.
License
© 2016 Scijs Authors. MIT License.
Authors
Ricky Reusser