**33.2****
****Finding Function Roots of Derivable Functions** (.NET, C#, CSharp, VB, Visual Basic, F#)

Class **NewtonRalphsonRootFinder**
implements the **IOneVariableDRootFinder**
interface and finds roots of univariate functions using the *Newton-Raphson Method*.
The Newton-Raphson algorithm finds the slope of the function at the current
point and uses the zero of the tangent line as an estimate of the root.

Like **SecantRootFinder**
and **RiddersRootFinder** (Section 33.1),
instances of **NewtonRalphsonRootFinder**
are constructed by specifying an error tolerance and a maximum number
of iterations, or by accepting the defaults for these values. For example:

Code Example – C# root finding

double tol = 1e-8;

int maxIter = 100;

var finder = new NewtonRaphsonRootFinder( tol, maxIter );

Code Example – VB root finding

Dim Tol As Double = "1e-8"

Dim MaxIter As Integer = 100

Dim Finder As New NewtonRaphsonRootFinder(Tol, MaxIter)

Once you have constructed a **NewtonRalphsonRootFinder**
instance, you can use the Find() method
to find a root within a given interval. For instance, this polynomial
has a root at 1:

This code finds the root in the interval (0, 3):

Code Example – C# root finding

var p = new Polynomial(

new DoubleVector( -2.0, -5.0, 9.0, -2.0 ) );

var finder = new NewtonRaphsonRootFinder();

double lower = 0;

double upper = 3;

double root = finder.Find( p, p.Derivative(), lower, upper );

Code Example – VB root finding

Dim P As New Polynomial(New DoubleVector(-2.0, -5.0, 9.0, -2.0))

Dim Finder As New NewtonRaphsonRootFinder()

Dim Lower As Double = 0

Dim Upper As Double = 3

Dim Root As Double = Finder.Find(P, P.Derivative(), Lower, Upper)