net.sf.doodleproject.numerics4j.root
Class NewtonRootFinder

java.lang.Object
  extended by net.sf.doodleproject.numerics4j.IterativeMethod
      extended by net.sf.doodleproject.numerics4j.root.NewtonRootFinder

public class NewtonRootFinder
extends IterativeMethod

Newton's 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);
    }}
 };
 
along with its derivative:
 Function cos = new Function() {
    public double evaluate(double x) {
        return Math.cos(x);
    }}
 };
 

Then, a Newton's method root finder is created with the above function:

 NewtonRootFinder finder = new NewtonRootFinder(sine, cos);
 

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

 // find the root close to 3.
 double pi = finder.findRoot(3.0);
 
 // find the root between close to 1.
 double zero = finder.findRoot(1.0);
 

References:

  1. Eric W. Weisstein. "Newton's Method." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/NewtonsMethod.html

Since:
1.1
Version:
$Revision: 1.3 $ $Date: 2007/10/27 04:57:42 $

Constructor Summary
NewtonRootFinder(Function f, Function d)
          Create a root finder for the given function.
NewtonRootFinder(Function f, Function d, int iterations, double error)
          Create a root finder for the given function.
 
Method Summary
 double findRoot(double x)
          Find a root of the target function that lies close to x.
 Function getDerivative()
          Access the derivative of the target function.
 Function getFunction()
          Access the target function.
 void setDerivative(Function f)
          Modify the derivative of the target function.
 void setFunction(Function f)
          Modify the target function.
 
Methods inherited from class net.sf.doodleproject.numerics4j.IterativeMethod
getMaximumIterations, getMaximumRelativeError, iterate, setMaximumIterations, setMaximumRelativeError
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NewtonRootFinder

public NewtonRootFinder(Function f,
                        Function d)
Create a root finder for the given function.

Parameters:
f - the target function.
d - the first derivative of f.

NewtonRootFinder

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

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

findRoot

public double findRoot(double x)
                throws NumericException
Find a root of the target function that lies close to x.

Parameters:
x - the initial root approximation.
Returns:
a root that lies close to x.
Throws:
NumericException - if a root could not be found.

getDerivative

public Function getDerivative()
Access the derivative of the target function.

Returns:
the target function derivative.

getFunction

public Function getFunction()
Access the target function.

Returns:
the target function.

setDerivative

public void setDerivative(Function f)
Modify the derivative of the target function.

Parameters:
f - the new target function derivative.

setFunction

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

Parameters:
f - the new target function.


Copyright 2004-2004-2007 DoodleProject. All Rights Reserved.