throws TooManyEvaluationsException, NoBracketingException { double min = getMin(); double max = getMax(); double y1 = computeObjectiveValue(x1); double x2 = max; double y2 = computeObjectiveValue(x2); return max; verifyBracketing(min, max); final double absoluteAccuracy = getAbsoluteAccuracy(); final double functionValueAccuracy = getFunctionValueAccuracy(); final double relativeAccuracy = getRelativeAccuracy(); final double y3 = computeObjectiveValue(x3); if (FastMath.abs(y3) <= functionValueAccuracy) { return x3; (x3 - x1) / FastMath.sqrt(delta); final double x = x3 - correction; // correction != 0 final double y = computeObjectiveValue(x);
/** * @param functionValueAccuracy The accuracy of the function evaluations. */ public RidderSingleRootFinder(double functionValueAccuracy) { _ridder = new RiddersSolver(functionValueAccuracy); }
/** * {@inheritDoc} * @throws MathException If the Commons method could not evaluate the function; * if the Commons method could not converge. */ @Override public Double getRoot(Function<Double, Double> function, Double xLow, Double xHigh) { checkInputs(function, xLow, xHigh); UnivariateFunction wrapped = CommonsMathWrapper.wrapUnivariate(function); try { return _ridder.solve(MAX_ITER, wrapped, xLow, xHigh); } catch (TooManyEvaluationsException | NoBracketingException e) { throw new MathException(e); } }
/** * @param functionValueAccuracy The accuracy of the function evaluations. * @param absoluteAccurary The maximum absolute error of the variable. */ public RidderSingleRootFinder(double functionValueAccuracy, double absoluteAccurary) { _ridder = new RiddersSolver(functionValueAccuracy, absoluteAccurary); }
throws TooManyEvaluationsException, NoBracketingException { double min = getMin(); double max = getMax(); double y1 = computeObjectiveValue(x1); double x2 = max; double y2 = computeObjectiveValue(x2); return max; verifyBracketing(min, max); final double absoluteAccuracy = getAbsoluteAccuracy(); final double functionValueAccuracy = getFunctionValueAccuracy(); final double relativeAccuracy = getRelativeAccuracy(); final double y3 = computeObjectiveValue(x3); if (Math.abs(y3) <= functionValueAccuracy) { return x3; (x3 - x1) / Math.sqrt(delta); final double x = x3 - correction; // correction != 0 final double y = computeObjectiveValue(x);
solver = new MullerSolver(); } else if (method.equals("Ridders")) { solver = new RiddersSolver(); } else if (method.equals("Secant")) { solver = new SecantSolver();
throws TooManyEvaluationsException, NoBracketingException { double min = getMin(); double max = getMax(); double y1 = computeObjectiveValue(x1); double x2 = max; double y2 = computeObjectiveValue(x2); return max; verifyBracketing(min, max); final double absoluteAccuracy = getAbsoluteAccuracy(); final double functionValueAccuracy = getFunctionValueAccuracy(); final double relativeAccuracy = getRelativeAccuracy(); final double y3 = computeObjectiveValue(x3); if (FastMath.abs(y3) <= functionValueAccuracy) { return x3; (x3 - x1) / FastMath.sqrt(delta); final double x = x3 - correction; // correction != 0 final double y = computeObjectiveValue(x);