Class BaseSecantSolver
- java.lang.Object
-
- org.apache.commons.math4.analysis.solvers.BaseAbstractUnivariateSolver<UnivariateFunction>
-
- org.apache.commons.math4.analysis.solvers.AbstractUnivariateSolver
-
- org.apache.commons.math4.analysis.solvers.BaseSecantSolver
-
- All Implemented Interfaces:
BaseUnivariateSolver<UnivariateFunction>,BracketedUnivariateSolver<UnivariateFunction>,UnivariateSolver
- Direct Known Subclasses:
IllinoisSolver,PegasusSolver,RegulaFalsiSolver
public abstract class BaseSecantSolver extends AbstractUnivariateSolver implements BracketedUnivariateSolver<UnivariateFunction>
Base class for all bracketing Secant-based methods for root-finding (approximating a zero of a univariate real function).Implementation of the
Regula FalsiandIllinoismethods is based on the following article: M. Dowell and P. Jarratt, A modified regula falsi method for computing the root of an equation, BIT Numerical Mathematics, volume 11, number 2, pages 168-174, Springer, 1971.Implementation of the
Pegasusmethod is based on the following article: M. Dowell and P. Jarratt, The "Pegasus" method for computing the root of an equation, BIT Numerical Mathematics, volume 12, number 4, pages 503-508, Springer, 1972.The
Secantmethod is not a bracketing method, so it is not implemented here. It has a separate implementation.- Since:
- 3.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classBaseSecantSolver.MethodSecant-based root-finding methods.
-
Field Summary
Fields Modifier and Type Field Description protected static doubleDEFAULT_ABSOLUTE_ACCURACYDefault absolute accuracy.
-
Constructor Summary
Constructors Modifier Constructor Description protectedBaseSecantSolver(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy, BaseSecantSolver.Method method)Construct a solver.protectedBaseSecantSolver(double relativeAccuracy, double absoluteAccuracy, BaseSecantSolver.Method method)Construct a solver.protectedBaseSecantSolver(double absoluteAccuracy, BaseSecantSolver.Method method)Construct a solver.
-
Method Summary
Modifier and Type Method Description protected doubledoSolve()Method for implementing actual optimization algorithms in derived classes.doublesolve(int maxEval, UnivariateFunction f, double min, double max, double startValue)Solve for a zero in the given interval, start atstartValue.doublesolve(int maxEval, UnivariateFunction f, double min, double max, double startValue, AllowedSolution allowedSolution)Solve for a zero in the given interval, start atstartValue.doublesolve(int maxEval, UnivariateFunction f, double min, double max, AllowedSolution allowedSolution)Solve for a zero in the given interval.-
Methods inherited from class org.apache.commons.math4.analysis.solvers.BaseAbstractUnivariateSolver
computeObjectiveValue, getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getMax, getMaxEvaluations, getMin, getRelativeAccuracy, getStartValue, incrementEvaluationCount, isBracketing, isSequence, setup, 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.math4.analysis.solvers.BaseUnivariateSolver
getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getMaxEvaluations, getRelativeAccuracy, solve, solve
-
-
-
-
Field Detail
-
DEFAULT_ABSOLUTE_ACCURACY
protected static final double DEFAULT_ABSOLUTE_ACCURACY
Default absolute accuracy.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
BaseSecantSolver
protected BaseSecantSolver(double absoluteAccuracy, BaseSecantSolver.Method method)Construct a solver.- Parameters:
absoluteAccuracy- Absolute accuracy.method- Secant-based root-finding method to use.
-
BaseSecantSolver
protected BaseSecantSolver(double relativeAccuracy, double absoluteAccuracy, BaseSecantSolver.Method method)Construct a solver.- Parameters:
relativeAccuracy- Relative accuracy.absoluteAccuracy- Absolute accuracy.method- Secant-based root-finding method to use.
-
BaseSecantSolver
protected BaseSecantSolver(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy, BaseSecantSolver.Method method)Construct a solver.- Parameters:
relativeAccuracy- Maximum relative error.absoluteAccuracy- Maximum absolute error.functionValueAccuracy- Maximum function value error.method- Secant-based root-finding method to use
-
-
Method Detail
-
solve
public double solve(int maxEval, UnivariateFunction f, double min, double max, AllowedSolution allowedSolution)Solve for a zero in the given interval. A solver may require that the interval brackets a single zero root. Solvers that do require bracketing should be able to handle the case where one of the endpoints is itself a root.- Specified by:
solvein interfaceBracketedUnivariateSolver<UnivariateFunction>- Parameters:
maxEval- Maximum number of evaluations.f- Function to solve.min- Lower bound for the interval.max- Upper bound for the interval.allowedSolution- The kind of solutions that the root-finding algorithm may accept as solutions.- Returns:
- A value where the function is zero.
-
solve
public double solve(int maxEval, UnivariateFunction f, double min, double max, double startValue, AllowedSolution allowedSolution)Solve for a zero in the given interval, start atstartValue. A solver may require that the interval brackets a single zero root. Solvers that do require bracketing should be able to handle the case where one of the endpoints is itself a root.- Specified by:
solvein interfaceBracketedUnivariateSolver<UnivariateFunction>- Parameters:
maxEval- Maximum number of evaluations.f- Function to solve.min- Lower bound for the interval.max- Upper bound for the interval.startValue- Start value to use.allowedSolution- The kind of solutions that the root-finding algorithm may accept as solutions.- Returns:
- A value where the function is zero.
-
solve
public double solve(int maxEval, UnivariateFunction f, double min, double max, double startValue)Solve for a zero in the given interval, start atstartValue. A solver may require that the interval brackets a single zero root. Solvers that do require bracketing should be able to handle the case where one of the endpoints is itself a root.- Specified by:
solvein interfaceBaseUnivariateSolver<UnivariateFunction>- Overrides:
solvein classBaseAbstractUnivariateSolver<UnivariateFunction>- Parameters:
maxEval- Maximum number of evaluations.f- Function to solve.min- Lower bound for the interval.max- Upper bound for the interval.startValue- Start value to use.- Returns:
- a value where the function is zero.
-
doSolve
protected final double doSolve() throws ConvergenceExceptionMethod for implementing actual optimization algorithms in derived classes.- Specified by:
doSolvein classBaseAbstractUnivariateSolver<UnivariateFunction>- Returns:
- the root.
- Throws:
ConvergenceException- if the algorithm failed due to finite precision.
-
-