/** * Returns the order-th derivative of the xPowers vector at value x (Note: does NOT return the YoPolynomials order-th derivative at x) * @param order * @param x * @return */ public DenseMatrix64F getXPowersDerivativeVector(int order, double x) { //if (MathTools.intervalContains(x, tInitial.getDoubleValue(), tFinal.getDoubleValue())) return polynomial.getXPowersDerivativeVector(order, x); //else // return null; }
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); } } }
public void compareXPowersDerivativesVector(YoPolynomial polynomial, double x) { double[] coefficients = polynomial.getCoefficients(); for(int i = 0; i < coefficients.length + 3; i++) { DenseMatrix64F generalizedDYPoly = polynomial.getXPowersDerivativeVector(i, x); DenseMatrix64F generalizedDYHand = new DenseMatrix64F(generalizedDYPoly.getNumRows(), generalizedDYPoly.getNumCols()); if(i < coefficients.length) { for(int j = i; j < coefficients.length; j++) { double derivativeCoefficient = polynomial.getDerivativeCoefficient(i, j); generalizedDYHand.set(j, 0, derivativeCoefficient * Math.pow(x, j - i)); } } for(int k = 0; k < coefficients.length; k++) { assertEquals(generalizedDYPoly.get(k, 0), generalizedDYHand.get(k, 0), EPSILON); } } }