FUNCTION
Newton
Calculates the zeros of a function using Newton's method.
Interface
#include <codecogs/maths/rootfinding/newton.h>
using namespace Maths::Rootfinding;
This is a well-known iterative method for approximating the zeros of a function. Starting with a given initial approximation , a sequence
is computed where
This iterative process can be stopped when has become less than the largest error one is willing to permit in the root. This method is only locally convergent and will converge to complex zeros only if the initial approximation is complex. When it does converge, the convergence is quadratic to roots that are simple.
To give you a better idea on the way this method works, the following graph shows different iterations in the approximation process.

This algorithm finds the roots of the user-defined function f starting with an initial guess x and iterating the sequence above until either the accuracy eps is achieved or the maximum number of iterations maxit is exceeded. Also required is the derivative of the user-defined function df.
References
- Jean-Pierre Moreau's Home Page, http://perso.wanadoo.fr/jean-pierre.moreau/
- F.R. Ruckdeschel, "BASIC Scientific Subroutines", Vol. II, BYTE/McGRAWW-HILL, 1981
Example 1
#include <codecogs/maths/rootfinding/newton.h>
#include <iostream>
#include <iomanip>
#include <cmath>
double f(double x) {
return sin(x);
}
double df(double x) {
return cos(x);
}
int main() {
double x = Maths::RootFinding::newton(f, df, 3);
std::cout << "The calculated zero is X = " << std::setprecision(15) << x << std::endl;
std::cout << "The associated ordinate value is Y = " << f(x) << std::endl;
return 0;
}Output:
The calculated zero is X = 3.14159265358979
The associated ordinate value is Y = 1.22460635382238e-016