public double getDerivative(int order, double x) { return polynomial.getDerivative(order, x); }
public void compareDerivativesPoint(YoPolynomial polynomial, double x) { double[] coefficients = polynomial.getCoefficients(); for(int i = 0; i < coefficients.length + 3; i++) { double generalizedDYPoly = polynomial.getDerivative(i, x); double generalizedDYHand = 0.0; if(i < coefficients.length) { for(int j = i; j < coefficients.length; j++) { double derivativeCoefficient = polynomial.getDerivativeCoefficient(i, j); generalizedDYHand += coefficients[j] * derivativeCoefficient * Math.pow(x, j-i); } } else { generalizedDYHand = 0.0; } assertEquals(generalizedDYPoly, generalizedDYHand, EPSILON); } }
public void compareDerivativeVersions(YoPolynomial polynomial, double x) { double[] coefficients = polynomial.getCoefficients(); for(int i = 0; i < coefficients.length + 3; i++) { double generalizedDYPolyScalar = polynomial.getDerivative(i, x); double generalizedDYHandScalar = 0.0; DenseMatrix64F generalizedDYPolyVector = polynomial.getXPowersDerivativeVector(i, x); for(int j = 0; j < generalizedDYPolyVector.numRows; j++) { generalizedDYHandScalar += generalizedDYPolyVector.get(j,0) * coefficients[j]; } assertEquals(generalizedDYPolyScalar, generalizedDYHandScalar, EPSILON); } } }
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout = 30000) public void testLinearDerivativePointManual() { //linear polynomial: y(x) = a0 + a1*x YoVariableRegistry registry = new YoVariableRegistry(namePrefix); int numberOfCoefficients = 2; YoPolynomial linear = new YoPolynomial(namePrefix + "Linear", numberOfCoefficients, registry); double x0 = 1.0, xf = 2.0; double y0 = 0.5, yf = 1.5; linear.setLinear(x0, xf, y0, yf); double x = 2.0/3.0 * (xf - x0); double a0 = linear.getCoefficient(0); double a1 = linear.getCoefficient(1); double yLinear = linear.getDerivative(0, x); double yManual = a0 + a1*x; assertEquals(yLinear, yManual, EPSILON); double dyLinear = linear.getDerivative(1, x); double dyManual = a1; assertEquals(dyLinear, dyManual, EPSILON); double ddyLinear = linear.getDerivative(2, x); double ddyManual = 0.0; assertEquals(ddyLinear, ddyManual, EPSILON); }