jhplot.math.num.root
Class SecantRootFinder

java.lang.Object
  extended by jhplot.math.num.IterativeMethod
      extended by jhplot.math.num.root.SecantRootFinder

public class SecantRootFinder
extends IterativeMethod

The secant method (1) for finding roots of functions.

For example, to find roots for sine, first a Function is defined:

 Function sine = new Function() {
    public double evaluate(double x) {
        return Math.sin(x);
    }}
 };
 

Then, a secant root finder is created with the above function:

 SecantRootFinder finder = new SecantRootFinder(sine);
 

Lastly, locating roots is accomplished using the findRoot(double, double) method:

 // find the root around 3 and 4.
 double pi = finder.findRoot(3.0, 4.0);
 
 // find the root around 3.5 and 4.
 pi = finder.findRoot(3.5, 4.0);
 
 // find the root around -1 and 1.
 double zero = finder.findRoot(-1.0, 1.0);
 

References:

  1. Eric W. Weisstein. "Secant Method." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/SecantMethod.html

Since:
1.1

Nested Class Summary
 
Nested classes/interfaces inherited from class jhplot.math.num.IterativeMethod
IterativeMethod.IterativeState
 
Constructor Summary
SecantRootFinder(Function f)
          Create a root finder for the given function.
SecantRootFinder(Function f, int iterations, double error)
          Create a root finder for the given function.
 
Method Summary
 double findRoot(double x0, double x1)
          Find a root of the target function that lies around the two initial approximations, x0 and x1.
 Function getFunction()
          Access the target function.
 void setFunction(Function f)
          Modify the target function.
 
Methods inherited from class jhplot.math.num.IterativeMethod
getMaximumIterations, getMaximumRelativeError, iterate, setMaximumIterations, setMaximumRelativeError
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SecantRootFinder

public SecantRootFinder(Function f)
Create a root finder for the given function.

Parameters:
f - the target function.

SecantRootFinder

public SecantRootFinder(Function f,
                        int iterations,
                        double error)
Create a root finder for the given function.

Parameters:
f - the target function.
iterations - maximum number of iterations.
error - maximum relative error.
Method Detail

findRoot

public double findRoot(double x0,
                       double x1)
                throws NumericException
Find a root of the target function that lies around the two initial approximations, x0 and x1.

Parameters:
x0 - an initial approximation to the root.
x1 - another initial approximation to the root.
Returns:
a root that lies close to x0 and x1.
Throws:
NumericException - if a root could not be found.

getFunction

public Function getFunction()
Access the target function.

Returns:
the target function.

setFunction

public void setFunction(Function f)
Modify the target function.

Parameters:
f - the new target function.


jHepWork 3.1 ©