## org.apache.commons.math3.analysis.solvers
Class LaguerreSolver

    java.lang.Object
      org.apache.commons.math3.analysis.solvers.BaseAbstractUnivariateSolver<PolynomialFunction>
          org.apache.commons.math3.analysis.solvers.AbstractPolynomialSolver
              org.apache.commons.math3.analysis.solvers.LaguerreSolver

All Implemented Interfaces:
  BaseUnivariateSolver<PolynomialFunction>, PolynomialSolver

    public class LaguerreSolver

extends AbstractPolynomialSolver

Implements the Laguerre's Method for root finding of real coefficient polynomials. For reference, see <quote> A First Course in Numerical Analysis ISBN 048641454X, chapter 8. </quote> Laguerre's method is global in the sense that it can start with any initial approximation and be able to solve all roots from that point. The algorithm requires a bracketing condition.

Since:
  1.2
Version:
  $Id: LaguerreSolver.java 1422195 2012-12-15 06:45:18Z psteitz $

Nested Class Summary
`private class` `LaguerreSolver.ComplexSolver` Class for searching all (complex) roots.

Field Summary
`private LaguerreSolver.ComplexSolver` `complexSolver` Complex solver.
`private static double` `DEFAULT_ABSOLUTE_ACCURACY` Default absolute accuracy.

Constructor Summary
`LaguerreSolver()` Construct a solver with default accuracy (1e-6).
`LaguerreSolver(double absoluteAccuracy)` Construct a solver.
`LaguerreSolver(double relativeAccuracy, double absoluteAccuracy)` Construct a solver.
`LaguerreSolver(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy)` Construct a solver.

Method Summary
`double` `doSolve()` Method for implementing actual optimization algorithms in derived classes.
`double` `laguerre(double lo, double hi, double fLo, double fHi)` Deprecated. This method should not be part of the public API: It will be made private in version 4.0.
`Complex[]` `solveAllComplex(double[] coefficients, double initial)` Find all complex roots for the polynomial with the given coefficients, starting from the given initial value.
`Complex` `solveComplex(double[] coefficients, double initial)` Find a complex root for the polynomial with the given coefficients, starting from the given initial value.

Methods inherited from class org.apache.commons.math3.analysis.solvers.AbstractPolynomialSolver
`getCoefficients, setup`

Methods inherited from class org.apache.commons.math3.analysis.solvers.BaseAbstractUnivariateSolver
`computeObjectiveValue, getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getMax, getMaxEvaluations, getMin, getRelativeAccuracy, getStartValue, incrementEvaluationCount, isBracketing, isSequence, solve, solve, solve, verifyBracketing, verifyInterval, verifySequence`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.apache.commons.math3.analysis.solvers.BaseUnivariateSolver
`getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getMaxEvaluations, getRelativeAccuracy, solve, solve, solve`

Field Detail

### DEFAULT_ABSOLUTE_ACCURACY

    private static final double DEFAULT_ABSOLUTE_ACCURACY

  Default absolute accuracy.

  See Also:
    Constant Field Values

### complexSolver

    private final LaguerreSolver.ComplexSolver complexSolver

  Complex solver.

Constructor Detail

### LaguerreSolver

    public LaguerreSolver()

  Construct a solver with default accuracy (1e-6).

### LaguerreSolver

    public LaguerreSolver(double absoluteAccuracy)

  Construct a solver.

  Parameters:
    `absoluteAccuracy` - Absolute accuracy.

### LaguerreSolver

    public LaguerreSolver(double relativeAccuracy,
                          double absoluteAccuracy)

  Construct a solver.

  Parameters:
    `relativeAccuracy` - Relative accuracy.
    `absoluteAccuracy` - Absolute accuracy.

### LaguerreSolver

    public LaguerreSolver(double relativeAccuracy,
                          double absoluteAccuracy,
                          double functionValueAccuracy)

  Construct a solver.

  Parameters:
    `relativeAccuracy` - Relative accuracy.
    `absoluteAccuracy` - Absolute accuracy.
    `functionValueAccuracy` - Function value accuracy.

Method Detail

### doSolve

    public double doSolve()
                   throws TooManyEvaluationsException,
                          NumberIsTooLargeException,
                          NoBracketingException

  Method for implementing actual optimization algorithms in derived classes.

  Specified by:
    `doSolve` in class `BaseAbstractUnivariateSolver<PolynomialFunction>`
  Returns:
    the root.
  Throws:
    `TooManyEvaluationsException` - if the maximal number of evaluations is exceeded.
    `NoBracketingException` - if the initial search interval does not bracket a root and the solver requires it.
    `NumberIsTooLargeException`

### laguerre

    @Deprecated
    public double laguerre(double lo,
                                      double hi,
                                      double fLo,
                                      double fHi)

  Deprecated. This method should not be part of the public API: It will be made private in version 4.0.

  Find a real root in the given interval. Despite the bracketing condition, the root returned by `LaguerreSolver.ComplexSolver.solve(Complex[],Complex)` may not be a real zero inside `[min, max]`. For example, `p(x) = x3 + 1,` with `min = -2`, `max = 2`, `initial = 0`. When it occurs, this code calls `LaguerreSolver.ComplexSolver.solveAll(Complex[],Complex)` in order to obtain all roots and picks up one real root.

  Parameters:
    `lo` - Lower bound of the search interval.
    `hi` - Higher bound of the search interval.
    `fLo` - Function value at the lower bound of the search interval.
    `fHi` - Function value at the higher bound of the search interval.
  Returns:
    the point at which the function value is zero.

### solveAllComplex

    public Complex[] solveAllComplex(double[] coefficients,
                                     double initial)
                              throws NullArgumentException,
                                     NoDataException,
                                     TooManyEvaluationsException

  Find all complex roots for the polynomial with the given coefficients, starting from the given initial value.
  Note: This method is not part of the API of `BaseUnivariateSolver`.

  Parameters:
    `coefficients` - Polynomial coefficients.
    `initial` - Start value.
  Returns:
    the point at which the function value is zero.
  Throws:
    `TooManyEvaluationsException` - if the maximum number of evaluations is exceeded.
    `NullArgumentException` - if the `coefficients` is `null`.
    `NoDataException` - if the `coefficients` array is empty.
  Since:
    3.1

### solveComplex

    public Complex solveComplex(double[] coefficients,
                                double initial)
                         throws NullArgumentException,
                                NoDataException,
                                TooManyEvaluationsException

  Find a complex root for the polynomial with the given coefficients, starting from the given initial value.
  Note: This method is not part of the API of `BaseUnivariateSolver`.

  Parameters:
    `coefficients` - Polynomial coefficients.
    `initial` - Start value.
  Returns:
    the point at which the function value is zero.
  Throws:
    `TooManyEvaluationsException` - if the maximum number of evaluations is exceeded.
    `NullArgumentException` - if the `coefficients` is `null`.
    `NoDataException` - if the `coefficients` array is empty.
  Since:
    3.1

Copyright (c) 2003-2013 Apache Software Foundation