Main Page | See live article | Alphabetical index

Newton's method

In numerical analysis, Newton's method (or the Newton-Raphson method) is an efficient algorithm for finding approximations to the zero (or root) of a real-valued function. As such, it is an example of a root-finding algorithm.

Table of contents
1 History
2 The Method


Newton's method was discovered by Isaac Newton and published in Method of Fluxions in 1736. Although the method was described by Joseph Raphson in Analysis Aequationum in 1690, the relevant sections of Method of Fluxions were written earlier, in 1671.

The Method

The idea of the method is as follows: one starts with a value which is reasonably close to the true zero, then replaces the function by its tangent (which can be computed using the tools of calculus) and computes the zero of this tangent (which is easily done with elementary algebra). This zero of the tangent will typically be a better approximation to the function's zero, and the method can be iterated.

Suppose f : [a, b] -> R is a differentiable function defined on the interval [a, b] with values in the real numbers R. We start with an arbitrary value x0 (the closer to the zero the better) and then define for each natural number n:

Here, f ' denotes the derivative of the function f.

One can prove that, if f ' is continuous, and if the unknown zero x is isolated, then there exists a neighborhood of x such that for all start values x0 in that neighborhood, the sequence (xn) will converge towards x. Furthermore, if f '(x) ≠ 0, then the convergence is quadratic, which intuitively means that the number of correct digits roughly doubles in every step.


Consider the problem of finding the positive number x with cos(x) = x3. We can rephrase that as finding the zero of f(x) = cos(x) - x3. We have f '(x) = -sin(x) - 3x2. Since cos(x) ≤ 1 for all x and x3 > 1 for x>1, we know that our zero lies between 0 and 1. We try a start value of x0 = 0.5.

and the first 12 digits of this value coincide with the first twelve digits of the true zero.

The example in JavaScript. To run it copy the text including the script tags into a new text file, give it a name with the extension .html and open it in a web browser.

 function NewtonIterationFnct(x) {
    return  x - (Math.cos(x) - x*x*x) / (-Math.sin(x) - 3*x*x)     

x = 0.5 for (i=0; i<=99; i++) {

document.write("Iteration " + i + ": ") document.write(x) document.write('<br>')
       xold = x
x = NewtonIterationFnct(x)
       if (x == xold) break 

Practical considerations

Although the method is very efficient, there are a number of practical issues that must be taken into account. First of all, Newton's method requires that the derivative be calculated directly. In cases where the derivative is approximated by taking the slope of two points on the function, the method becomes inefficient and inferior to other algorithms. Second, if the start value is too far removed from the true zero, Newton's method can get stuck in an infinite loop without producing improved approximations. Because of this, all practical implementations of Newton's method include code for bound checking.


One may use Newton's method also to solve systems of n (non-linear) equations, which amounts to finding the zeros of continuously differentiable functions F : Rk -> Rk. In the formulation given above, one then has to multiply with the inverse of the k-by-k Jacobian matrix F '(xn) instead of dividing by f '(xn). Rather than actually computing the inverse of this matrix, one can save time by solving the system of linear equations

for the unknown xn+1 - xn. Again, this method only works if the initial value x0 is close enough to the true zero. Typically, a region which is well behaved is located first with some other method and Newton's method is then used to "polish" a root which is already known approximately.

The method can also be applied to find zeros of complex functions. For many complex functions, the set of all start values that cause the method to converge to the true zero (the "basin of attraction") is a fractal.\n