Imports System Imports CenterSpace.NMath.Core Namespace CenterSpace.NMath.Examples.VisualBasic A .NET example in Visual Basic showing how to find a root of a univariate function. Module RootFindingExample Private Function F(ByVal X As Double) As Double Return 4 * Math.Pow(X, 3) + (0.4 * X) - 9 End Function Private Function DF(ByVal x As Double) As Double Return 12 * Math.Pow(x, 2) + 0.4 End Function The main entry point for the application. Sub Main() Console.WriteLine() Dim D As New Func(Of Double, Double)(AddressOf F) Dim Func As New OneVariableFunction(D) D = New Func(Of Double, Double)(AddressOf DF) Dim Derivative As New OneVariableFunction(D) Find a root of the function 4x^3 + 0.4x - 9 in the interval -1000 < x < 1000 using the secant method. Dim Finder1 As New SecantRootFinder Dim Root As Double = Finder1.Find(Func, -1000, 1000) Console.Write("Secant root finder found a root at " & Root) Console.WriteLine(" in " & Finder1.Iterations & " iterations.") Console.WriteLine() Function evaluated at the root is within tolerance of zero. Console.WriteLine("The function evaluated at the root: " & Func.Evaluate(root)) Console.WriteLine() If you know the derivative of the function, you can use the Newton-Raphson root finder. Dim finder2 As New NewtonRaphsonRootFinder Root = finder2.Find(Func, Derivative, -1000, 1000) Console.Write("Newton-Raphson root finder found the root") Console.WriteLine(" in " & finder2.Iterations & " iterations.") Console.WriteLine() Reducing the tolerance speeds up the calculation. finder2.Tolerance = 0.1 Root = finder2.Find(Func, Derivative, -1000, 1000) Console.Write("Newton-Raphson root finder found the root") Console.WriteLine(" in " & finder2.Iterations & " iterations.") Console.WriteLine() A negative tolerance causes the root finder to run until the maximum number of iterations is reached. finder2.Tolerance = -1 Root = finder2.Find(Func, Derivative, -1000, 1000) Console.Write("Newton-Raphson root finder found the root") Console.WriteLine(" in " & finder2.Iterations & " iterations.") Console.WriteLine() Console.WriteLine() Console.WriteLine("Press Enter Key") Console.Read() End Sub End Module End Namespace← All NMath Code Examples