Given a function f(x) on floating number x and an initial guess for root, find root of function in interval. Here f(x) represents algebraic or transcendental equation.
For simplicity, we have assumed that derivative of function is also provided as input.
Input: A function of x (for example x3 – x2 + 2), derivative function of x (3x2 – 2x for above example) and an initial guess x0 = -20 Output: The value of root is : -1.00 OR any other value close to root.
Comparison with above two methods:
- In previous methods, we were given an interval. Here we are required an initial guess value of root.
- The previous two methods are guaranteed to converge, Newton Rahhson may not converge in some cases.
- Newton Raphson method requires derivative. Some functions may be difficult to
impossible to differentiate.
- For many problems, Newton Raphson method converges faster than the above two methods.
- Also, it can identify repeated roots, since it does not look for changes in the sign of f(x) explicitly
Input: initial x, func(x), derivFunc(x)
Output: Root of Func()
- Compute values of func(x) and derivFunc(x) for given initial x
- Compute h: h = func(x) / derivFunc(x)
- While h is greater than allowed error ε
- h = func(x) / derivFunc(x)
- x = x – h
Below is the implementation of above algorithm.
The value of root is : -1.00
How does this work?
The idea is to draw a line tangent to f(x) at point x1. The point where the tangent line crosses the x axis should be a better estimate of the root than x1. Call this point x2. Calculate f(x2), and draw a line tangent at x2.
We know that slope of line from (x1, f(x1)) to (x2, 0) is f'(x1)) where f’ represents derivative of f.
f'(x1) = (0 - f(x1)) / (x2 - x1) f'(x1) * (x2 - x1) = - f(x1) x2 = x1 - f(x1) / f'(x1) By finding this point 'x2', we move closer towards the root. We have to keep on repeating the above step till we get really close to the root or we find it. In general, xn+1 = xn - f(xn) / f'(xn)
Alternate Explanation using Taylor’s Series:
Let x1 be the initial guess. We can write x2 as below: xn+1 = xn + h ------- (1) Here h would be a small value that can be positive or negative. According to Taylor's Series, ƒ(x) that is infinitely differentiable can be written as below f(xn+1) = f(xn + h) = f(xn) + h*f'(xn) + ((h*h)/2!)*(f''(xn)) + ... Since we are looking for root of function, f(xn+1) = 0 f(xn) + h*f'(xn) + ((h*h)/2!)*(f''(xn)) + ... = 0 Now since h is small, h*h would be very small. So if we ignore higher order terms, we get f(xn) + h*f'(xn) = 0 Substituting this value of h = xn+1 - xn from equation (1) we get, f(xn) + (xn+1 - xn)*f'(xn) = 0 xn+1 = xn - f(xn) / f'(xn)
- We generally used this method to improve the result obtained by either bisection method or method of false position.
- Babylonian method for square root is derived from the Newton-Raphson method.
Introductory Methods of Numerical Analysis by S.S. Sastry
This article is contributed by Abhiraj Smit. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Find root of a number using Newton's method
- Newton Forward And Backward Interpolation
- Newton's Divided Difference Interpolation Formula
- Program for Bisection Method
- Program for Muller Method
- Program to find root of an equations using secant method
- Program for Gauss-Jordan Elimination Method
- Program for Picard's iterative method | Computational Mathematics
- Transportation Problem | Set 6 (MODI Method - UV Method)
- Write a program to reverse digits of a number
- Program to find parity
- Write an Efficient C Program to Reverse Bits of a Number
- Write a program to print all permutations of a given string
- Program to find amount of water in a given glass
- Program to convert a given number to words
- Efficient program to calculate e^x
- Efficient program to print all prime factors of a given number
- Program for Rank of Matrix
- Program to add two fractions
- Program to convert a given number to words | Set 2