/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void nanX1Test() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefs, new int[] {5, 4 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } x1Keys[3] = Double.NaN; function.evaluate(result, x0Keys[3], x1Keys[3]); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void nullPpDiffCrossMultiTest() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefs, new int[] {5, 4 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } result = null; function.differentiateCross(result, x0Keys, x1Keys); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void linearDiffTwiceX0Test() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefsLin, new int[] {2, 2 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } function.differentiateTwiceX0(result, x0Keys[0], x1Keys[0]); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void constDiffX1MultiTest() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefsConst, new int[] {1, 1 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } function.differentiateX1(result, x0Keys, x1Keys); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void linearDiffTwiceX1MultiTest() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefsLin, new int[] {2, 2 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } function.differentiateTwiceX1(result, x0Keys, x1Keys); }
PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final double[][] values = function.evaluate(result, x0Keys, x1Keys).toArray(); for (int i = 0; i < n0Keys; ++i) { for (int j = 0; j < n1Keys; ++j) { final double value = function.evaluate(result, x0Keys[1], x1Keys[1]); final double ref = valuesExp[1][1] == 0. ? 1. : Math.abs(valuesExp[1][1]); assertEquals(value, valuesExp[1][1], ref * EPS); final double value = function.evaluate(result, x0Keys[n0Keys - 2], x1Keys[n1Keys - 2]); final double ref = valuesExp[n0Keys - 2][n1Keys - 2] == 0. ? 1. : Math.abs(valuesExp[n0Keys - 2][n1Keys - 2]); assertEquals(value, valuesExp[n0Keys - 2][n1Keys - 2], ref * EPS); final double[][] valuesDiffX0 = function.differentiateX0(result, x0Keys, x1Keys).toArray(); for (int i = 0; i < n0Keys; ++i) { for (int j = 0; j < n1Keys; ++j) { final double value = function.differentiateX0(result, x0Keys[1], x1Keys[1]); final double ref = valuesDiffX0Exp[1][1] == 0. ? 1. : Math.abs(valuesDiffX0Exp[1][1]); assertEquals(value, valuesDiffX0Exp[1][1], ref * EPS); final double value = function.differentiateX0(result, x0Keys[n0Keys - 2], x1Keys[n1Keys - 2]); final double ref = valuesDiffX0Exp[n0Keys - 2][n1Keys - 2] == 0. ? 1. : Math.abs(valuesDiffX0Exp[n0Keys - 2][n1Keys - 2]); assertEquals(value, valuesDiffX0Exp[n0Keys - 2][n1Keys - 2], ref * EPS); final double[][] valuesDiffX1 = function.differentiateX1(result, x0Keys, x1Keys).toArray(); for (int i = 0; i < n0Keys; ++i) { for (int j = 0; j < n1Keys; ++j) {
knots0, knots1, res, new int[] {order0 - 2, order1}); return evaluate(ppDiff, x0Key, x1Key);
PiecewisePolynomialFunction2D func2D = new PiecewisePolynomialFunction2D(); DoubleMatrix resDiffX0 = func2D.differentiateX0(result, x0Values, x1Values); DoubleMatrix resDiffX1 = func2D.differentiateX1(result, x0Values, x1Values);
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void constDiffX0Test() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefsConst, new int[] {1, 1 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } function.differentiateX0(result, x0Keys[0], x1Keys[0]); }
double res = getValue(pp.getCoefs()[ind0][ind1], x0Key, x1Key, knots0.get(ind0), knots1.get(ind1));
knots0, knots1, res, new int[] {order0 - 1, order1}); return evaluate(ppDiff, x0Keys, x1Keys);
final PiecewisePolynomialFunction2D func2D = new PiecewisePolynomialFunction2D(); DoubleMatrix resDiffX0 = func2D.differentiateX0(result, x0Values, x1Values); DoubleMatrix resDiffX1 = func2D.differentiateX1(result, x0Values, x1Values);
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void constDiffX1Test() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefsConst, new int[] {1, 1 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } function.differentiateX1(result, x0Keys[0], x1Keys[0]); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void linearDiffTwiceX1Test() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefsLin, new int[] {2, 2 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } function.differentiateTwiceX1(result, x0Keys[0], x1Keys[0]); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void nullPpDiffX0Test() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefs, new int[] {5, 4 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } result = null; function.differentiateX0(result, x0Keys[1], x1Keys[1]); }
res[i][j] = getValue(pp.getCoefs()[ind0][ind1], x0Keys[i], x1Keys[j], knots0.get(ind0), knots1.get(ind1)); ArgChecker.isFalse(Double.isInfinite(res[i][j]), "Too large input"); ArgChecker.isFalse(Double.isNaN(res[i][j]), "Too large input");
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void nullPpEvaluateTest() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefs, new int[] {5, 4 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } result = null; function.evaluate(result, x0Keys[1], x1Keys[1]); }
knots0, knots1, res, new int[] {order0, order1 - 1}); return evaluate(ppDiff, x0Keys, x1Keys);
PiecewisePolynomialFunction2D func2D = new PiecewisePolynomialFunction2D(); DoubleMatrix resDiffX0 = func2D.differentiateX0(result, x0Values, x1Values); DoubleMatrix resDiffX1 = func2D.differentiateX1(result, x0Values, x1Values);
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void constDiffCrossTest() { PiecewisePolynomialResult2D result = new PiecewisePolynomialResult2D(knots0, knots1, coefsConst, new int[] {1, 1 }); PiecewisePolynomialFunction2D function = new PiecewisePolynomialFunction2D(); final int n0Keys = 21; final int n1Keys = 31; double[] x0Keys = new double[n0Keys]; double[] x1Keys = new double[n1Keys]; for (int i = 0; i < n0Keys; ++i) { x0Keys[i] = 0. + 4. / (n0Keys - 1) * i; } for (int i = 0; i < n1Keys; ++i) { x1Keys[i] = 1. + 3. / (n1Keys - 1) * i; } function.differentiateCross(result, x0Keys[0], x1Keys[0]); }