Exemplo n.º 1
0
        //-------------------------------------------------------------------------
        private void testSensitivity(double[] xValues, double[] yValues, double[] keys, double delta)
        {
            PiecewisePolynomialWithSensitivityFunction1D func        = new PiecewisePolynomialWithSensitivityFunction1D();
            PiecewisePolynomialResultsWithSensitivity    resultSensi = INTERP.interpolateWithSensitivity(xValues, yValues);

            DoubleArray[] computedArray = func.nodeSensitivity(resultSensi, keys);
            for (int i = 0; i < keys.Length; ++i)
            {
                double      @base    = func.evaluate(resultSensi, keys[i]).get(0);
                DoubleArray computed = func.nodeSensitivity(resultSensi, keys[i]);
                assertEquals(computed, computedArray[i]);
                for (int j = 0; j < yValues.Length; ++j)
                {
                    double[] yValuesBump = Arrays.copyOf(yValues, yValues.Length);
                    yValuesBump[j] += delta;
                    PiecewisePolynomialResult resultBump = INTERP.interpolate(xValues, yValuesBump);
                    double expected = (func.evaluate(resultBump, keys[i]).get(0) - @base) / delta;
                    assertEquals(computed.get(j), expected, delta);
                }
            }
        }