1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * https://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 /* 19 * This is not the original file distributed by the Apache Software Foundation 20 * It has been modified by the Hipparchus project 21 */ 22 23 package org.hipparchus.analysis.solvers; 24 25 import org.hipparchus.analysis.polynomials.PolynomialFunction; 26 27 /** 28 * Base class for solvers. 29 * 30 */ 31 public abstract class AbstractPolynomialSolver 32 extends BaseAbstractUnivariateSolver<PolynomialFunction> 33 implements PolynomialSolver { 34 /** Function. */ 35 private PolynomialFunction polynomialFunction; 36 37 /** 38 * Construct a solver with given absolute accuracy. 39 * 40 * @param absoluteAccuracy Maximum absolute error. 41 */ 42 protected AbstractPolynomialSolver(final double absoluteAccuracy) { 43 super(absoluteAccuracy); 44 } 45 /** 46 * Construct a solver with given accuracies. 47 * 48 * @param relativeAccuracy Maximum relative error. 49 * @param absoluteAccuracy Maximum absolute error. 50 */ 51 protected AbstractPolynomialSolver(final double relativeAccuracy, 52 final double absoluteAccuracy) { 53 super(relativeAccuracy, absoluteAccuracy); 54 } 55 /** 56 * Construct a solver with given accuracies. 57 * 58 * @param relativeAccuracy Maximum relative error. 59 * @param absoluteAccuracy Maximum absolute error. 60 * @param functionValueAccuracy Maximum function value error. 61 */ 62 protected AbstractPolynomialSolver(final double relativeAccuracy, 63 final double absoluteAccuracy, 64 final double functionValueAccuracy) { 65 super(relativeAccuracy, absoluteAccuracy, functionValueAccuracy); 66 } 67 68 /** 69 * {@inheritDoc} 70 */ 71 @Override 72 protected void setup(int maxEval, PolynomialFunction f, 73 double min, double max, double startValue) { 74 super.setup(maxEval, f, min, max, startValue); 75 polynomialFunction = f; 76 } 77 78 /** Get the coefficients of the polynomial function. 79 * @return the coefficients of the polynomial function 80 */ 81 protected double[] getCoefficients() { 82 return polynomialFunction.getCoefficients(); 83 } 84 }