← All NMath Code Examples
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