''' <summary>
''' Calculates a solution to the equation f(x) = 0 using the secant method
''' </summary>
''' <param name="f">Function f</param>
''' <param name="x0">First trial x value near solution</param>
''' <param name="x1">Second trial x value near solution</param>
''' <returns>x</returns>
Public Function secantMethod(f As Func(Of Double, Double),
x0 As Double,
x1 As Double) As Double
If x0 = x1 Then
If f(x0) = 0 Then
Return x0
Else
Throw New System.Exception("Secant method requires x0 <> x1")
End If
End If
Dim xOfNminus2 As Double = x0
Dim xOfNminus1 As Double = x1
Dim fOfxOfNminus2 As Double = f(xOfNminus2)
Dim fOfxOfNminus1 As Double = f(xOfNminus1)
Dim xn As Double = xOfNminus2
Dim fOfxn As Double
For i As Integer = 1 To 100
If xOfNminus1 = xOfNminus2 OrElse fOfxOfNminus1 = fOfxOfNminus2 Then Exit For
xn = xOfNminus1 - fOfxOfNminus1 * (xOfNminus1 - xOfNminus2) /
(fOfxOfNminus1 - fOfxOfNminus2)
fOfxn = f(xn)
If fOfxn = 0 Then Exit For
xOfNminus2 = xOfNminus1
xOfNminus1 = xn
fOfxOfNminus2 = fOfxOfNminus1
fOfxOfNminus1 = fOfxn
Next
Return xn
End Function
To find the solution of the equation \(\tan x = x\) between \(4.4\) and \(4.5\) rearrange as an expression equal to zero (\(\tan x - x = 0\)) and call as follows:
secantMethod(Function(x) Math.Tan(x) - x, 4.4, 4.5)