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)