Package com.opengamma.analytics.math.interpolation.data

Examples of com.opengamma.analytics.math.interpolation.data.Interpolator1DDataBundle


        new LogNaturalCubicMonotonicityPreservingInterpolator1D(), new StepInterpolator1D(), new StepUpperInterpolator1D(), new TimeSquareInterpolator1D() };
    final int nMethods = interp.length;
    for (int j = 0; j < dim; ++j) {
      for (int i = 0; i < nMethods; ++i) {
        //        System.out.println(i);
        Interpolator1DDataBundle data = interp[i].getDataBundleFromSortedArrays(xValues[j], yValues[j]);
        final double xMin = xValues[j][0];
        final double xMax = xValues[j][nData - 1];

        for (int m = 0; m < nKeys - 1; ++m) {
          final double xKey = xMin + (xMax - xMin) * (m + 1.) / nKeys;
          //          System.out.println(xKey);
          assertEquals(interp[i].firstDerivative(data, xKey), 0.5 * (interp[i].interpolate(data, xKey + EPS) - interp[i].interpolate(data, xKey - EPS)) / EPS, EPS);
        }
      }
    }

    final double[][] xValues1 = new double[][] { {1., 2., 3., 4. }, {1., 2.1, 2.9, 4.1 } };
    final double[][] yValues1 = new double[][] { {1., 5, 8., 15. }, {1., 5, 8., 15. } };
    final int dim1 = 2;
    final int nData1 = xValues1[0].length;
    final int nKeys1 = 11 * nData1;

    final Interpolator1D interp1 = new QuadraticSplineInterpolator1D();
    for (int i = 0; i < dim1; ++i) {
      final double xMin = xValues1[i][0];
      final double xMax = xValues1[i][nData1 - 1];

      for (int m = 0; m < nKeys1 - 1; ++m) {
        final double xKey = xMin + (xMax - xMin) * (m + 1.) / nKeys1;
        Interpolator1DDataBundle data = interp1.getDataBundleFromSortedArrays(xValues1[i], yValues1[i]);
        assertEquals(interp1.firstDerivative(data, xKey), 0.5 * (interp1.interpolate(data, xKey + EPS) - interp1.interpolate(data, xKey - EPS)) / EPS, EPS);
      }
    }

    final double[][] xValues2 = new double[][] { {1., 2., 3., 4. }, {1., 2.1, 2.9, 4.1 } };
    final double[][] yValues2 = new double[][] { {1., 5, 8., 15. }, {1., 5, 8., 15. } };
    final int dim2 = 2;
    final int nData2 = xValues2[0].length;
    final int nKeys2 = 11 * nData2;

    final Interpolator1D interp2 = new MonotonicIncreasingInterpolator1D();
    for (int i = 0; i < dim2; ++i) {
      final double xMin = xValues2[i][0];
      final double xMax = xValues2[i][nData2 - 1];

      for (int m = 0; m < nKeys2 - 1; ++m) {
        final double xKey = xMin + (xMax - xMin) * (m + 1.) / nKeys2;
        Interpolator1DDataBundle data = interp2.getDataBundleFromSortedArrays(xValues2[i], yValues2[i]);
        assertEquals(interp2.firstDerivative(data, xKey), 0.5 * (interp2.interpolate(data, xKey + EPS) - interp2.interpolate(data, xKey - EPS)) / EPS, EPS);
      }
    }
  }
View Full Code Here


        new StepInterpolator1D(), new StepUpperInterpolator1D(), new TimeSquareInterpolator1D() };
    final int nMethods = interp.length;
    for (int j = 0; j < dim; ++j) {
      for (int i = 0; i < nMethods; ++i) {
        //        System.out.println(i);
        Interpolator1DDataBundle data = interp[i].getDataBundleFromSortedArrays(xValues[j], yValues[j]);
        final double xMin = xValues[j][0];
        final double xMax = xValues[j][nData - 1];

        for (int m = 0; m < nKeys - 1; ++m) {
          final double xKey = xMin + (xMax - xMin) * (m + 1.) / nKeys;
View Full Code Here

        new StepInterpolator1D(), new StepUpperInterpolator1D(), new TimeSquareInterpolator1D() };
    final int nMethods = interp.length;
    for (int j = 0; j < dim; ++j) {
      for (int i = 0; i < nMethods; ++i) {
        //        System.out.println(i);
        Interpolator1DDataBundle data = interp[i].getDataBundleFromSortedArrays(xValues[j], yValues[j]);
        final double xMin = xValues[j][0];
        final double xMax = xValues[j][nData - 1];

        for (int m = 0; m < nKeys - 1; ++m) {
          final double xKey = xMin + (xMax - xMin) * (m + 1.) / nKeys;
View Full Code Here

    final Interpolator1D interpPre = new DoubleQuadraticInterpolator1D();
    final Interpolator1D[] interp = new Interpolator1D[] {new CombinedInterpolatorExtrapolator(interpPre), new TransformedInterpolator1D(interpPre, new DoubleRangeLimitTransform(0, 1)) };
    final int nMethods = interp.length;
    for (int j = 0; j < dim; ++j) {
      for (int i = 0; i < nMethods; ++i) {
        Interpolator1DDataBundle data = interp[i].getDataBundleFromSortedArrays(xValues[j], yValues[j]);
        final double xMin = xValues[j][0];
        final double xMax = xValues[j][nData - 1];

        for (int m = 0; m < nKeys - 1; ++m) {
          final double xKey = xMin + (xMax - xMin) * (m + 1.) / nKeys;
View Full Code Here

    final PiecewisePolynomialFunction1D function = new PiecewisePolynomialFunction1D();

    for (int i = 0; i < dim; ++i) {
      final double[] bareResClamp = function.differentiate(bareInterp[0].interpolate(xValues, yValuesForClamped[i]), xKeys).getData()[0];
      for (int j = 0; j < nKeys; ++j) {
        final Interpolator1DDataBundle dataBundleClamp = wrappedInterp[0].getDataBundleFromSortedArrays(xValues, yValues[i]);
        final double wrappedResClamp = wrappedInterp[0].firstDerivative(dataBundleClamp, xKeys[j]);
        assertEquals(wrappedResClamp, bareResClamp[j], Math.max(Math.abs(bareResClamp[j]), 1.) * 1.e-15);
      }

      for (int k = 1; k < nMethods; ++k) {
        final double[] bareRes = function.differentiate(bareInterp[k].interpolate(xValues, yValues[i]), xKeys).getData()[0];
        for (int j = 0; j < nKeys; ++j) {
          final Interpolator1DDataBundle dataBundle = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues[i]);
          final double wrappedRes = wrappedInterp[k].firstDerivative(dataBundle, xKeys[j]);
          assertEquals(wrappedRes, bareRes[j], Math.max(Math.abs(bareRes[j]), 1.) * 1.e-15);
        }
      }
    }
View Full Code Here

    final Interpolator1D[] extrap = new Interpolator1D[] {new ExponentialExtrapolator1D(), new FlatExtrapolator1D(), new LinearExtrapolator1D(new PCHIPInterpolator1D()), new ISDAExtrapolator1D(),
        new CombinedInterpolatorExtrapolator(new PCHIPInterpolator1D(), new ExponentialExtrapolator1D(), new FlatExtrapolator1D()) };
    final int nMethods = extrap.length;
    final Interpolator1D interp = new PCHIPInterpolator1D();
    for (int j = 0; j < dim; ++j) {
      Interpolator1DDataBundle data = interp.getDataBundleFromSortedArrays(xValues[j], yValues[j]);
      for (int i = 0; i < nMethods; ++i) {
        //        System.out.println(i);
        if (i != 3) {
          assertEquals(extrap[i].firstDerivative(data, .2), 0.5 * (extrap[i].interpolate(data, .2 + EPS) - extrap[i].interpolate(data, .2 - EPS)) / EPS, EPS);
        }
View Full Code Here

    for (int k = 0; k < nMethods; ++k) {
      final double[] resPrim1 = bareInterp[k].interpolate(xValues, yValues1, xKeys).getData();
      final double[] resPrim2 = bareInterp[k].interpolate(xValues, yValues2, xKeys).getData();
      final double[] resPrim3 = bareInterp[k].interpolate(xValues, yValues3, xKeys).getData();

      Interpolator1DDataBundle dataBund1 = wrappedInterp[k].getDataBundle(xValues, yValues1);
      Interpolator1DDataBundle dataBund2 = wrappedInterp[k].getDataBundle(xValues, yValues2);
      Interpolator1DDataBundle dataBund3 = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues3);
      for (int i = 0; i < 10 * nData; ++i) {
        final double ref1 = resPrim1[i];
        final double ref2 = resPrim2[i];
        final double ref3 = resPrim3[i];
        assertEquals(ref1, wrappedInterp[k].interpolate(dataBund1, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref1), 1.));
        assertEquals(ref2, wrappedInterp[k].interpolate(dataBund2, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref2), 1.));
        assertEquals(ref3, wrappedInterp[k].interpolate(dataBund3, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref3), 1.));
      }

      for (int j = 0; j < nData; ++j) {
        yValues1Up[j] = yValues1[j] * (1. + EPS);
        yValues2Up[j] = yValues2[j] * (1. + EPS);
        yValues3Up[j] = yValues3[j] * (1. + EPS);
        yValues1Dw[j] = yValues1[j] * (1. - EPS);
        yValues2Dw[j] = yValues2[j] * (1. - EPS);
        yValues3Dw[j] = yValues3[j] * (1. - EPS);
        Interpolator1DDataBundle dataBund1Up = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues1Up);
        Interpolator1DDataBundle dataBund2Up = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues2Up);
        Interpolator1DDataBundle dataBund3Up = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues3Up);
        Interpolator1DDataBundle dataBund1Dw = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues1Dw);
        Interpolator1DDataBundle dataBund2Dw = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues2Dw);
        Interpolator1DDataBundle dataBund3Dw = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues3Dw);
        for (int i = 0; i < 10 * nData; ++i) {
          double res1 = 0.5 * (wrappedInterp[k].interpolate(dataBund1Up, xKeys[i]) - wrappedInterp[k].interpolate(dataBund1Dw, xKeys[i])) / EPS / yValues1[j];
          double res2 = 0.5 * (wrappedInterp[k].interpolate(dataBund2Up, xKeys[i]) - wrappedInterp[k].interpolate(dataBund2Dw, xKeys[i])) / EPS / yValues2[j];
          double res3 = 0.5 * (wrappedInterp[k].interpolate(dataBund3Up, xKeys[i]) - wrappedInterp[k].interpolate(dataBund3Dw, xKeys[i])) / EPS / yValues3[j];
          assertEquals(res1, wrappedInterp[k].getNodeSensitivitiesForValue(dataBund1, xKeys[i])[j], Math.max(Math.abs(yValues1[j]) * EPS, EPS) * 10.);
 
View Full Code Here

    for (int k = 0; k < nMethods; ++k) {
      final double[] resPrim1 = bareInterp[k].interpolate(xValues, yValues1, xKeys).getData();
      final double[] resPrim2 = bareInterp[k].interpolate(xValues, yValues2, xKeys).getData();
      final double[] resPrim3 = bareInterp[k].interpolate(xValues, yValues3, xKeys).getData();

      Interpolator1DDataBundle dataBund1 = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues1);
      Interpolator1DDataBundle dataBund2 = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues2);
      Interpolator1DDataBundle dataBund3 = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues3);
      for (int i = 0; i < 10 * nData; ++i) {
        final double ref1 = resPrim1[i];
        final double ref2 = resPrim2[i];
        final double ref3 = resPrim3[i];
        assertEquals(ref1, wrappedInterp[k].interpolate(dataBund1, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref1), 1.));
        assertEquals(ref2, wrappedInterp[k].interpolate(dataBund2, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref2), 1.));
        assertEquals(ref3, wrappedInterp[k].interpolate(dataBund3, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref3), 1.));
      }

      for (int j = 0; j < nData; ++j) {
        yValues1Up[j] = yValues1[j] * (1. + EPS);
        yValues2Up[j] = yValues2[j] * (1. + EPS);
        yValues3Up[j] = yValues3[j] * (1. + EPS);
        yValues1Dw[j] = yValues1[j] * (1. - EPS);
        yValues2Dw[j] = yValues2[j] * (1. - EPS);
        yValues3Dw[j] = yValues3[j] * (1. - EPS);
        Interpolator1DDataBundle dataBund1Up = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues1Up);
        Interpolator1DDataBundle dataBund2Up = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues2Up);
        Interpolator1DDataBundle dataBund3Up = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues3Up);
        Interpolator1DDataBundle dataBund1Dw = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues1Dw);
        Interpolator1DDataBundle dataBund2Dw = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues2Dw);
        Interpolator1DDataBundle dataBund3Dw = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues3Dw);
        for (int i = 0; i < 10 * nData; ++i) {
          double res1 = 0.5 * (wrappedInterp[k].interpolate(dataBund1Up, xKeys[i]) - wrappedInterp[k].interpolate(dataBund1Dw, xKeys[i])) / EPS / yValues1[j];
          double res2 = 0.5 * (wrappedInterp[k].interpolate(dataBund2Up, xKeys[i]) - wrappedInterp[k].interpolate(dataBund2Dw, xKeys[i])) / EPS / yValues2[j];
          double res3 = 0.5 * (wrappedInterp[k].interpolate(dataBund3Up, xKeys[i]) - wrappedInterp[k].interpolate(dataBund3Dw, xKeys[i])) / EPS / yValues3[j];
          assertEquals(res1, wrappedInterp[k].getNodeSensitivitiesForValue(dataBund1, xKeys[i])[j], Math.max(Math.abs(yValues1[j]) * EPS, EPS) * 10.);
 
View Full Code Here

      }
      final NonnegativityPreservingCubicSplineInterpolator1D[] wrappedInterp = new NonnegativityPreservingCubicSplineInterpolator1D[] {INTERP1D_NAT, INTERP1D_NAK, INTERP1D_AKIMA, INTERP1D_CONST };
      final int nMethods = wrappedInterp.length;

      for (int k = 0; k < nMethods; ++k) {
        Interpolator1DDataBundle dataBund = wrappedInterp[k].getDataBundleFromSortedArrays(xValues, yValues[l]);

        for (int j = 1; j < nData; ++j) {
          final double den = Math.abs(yValues[l][j]) == 0. ? EPS : yValues[l][j] * EPS;
          yValuesUp[j] = Math.abs(yValues[l][j]) == 0. ? EPS : yValues[l][j] * (1. + EPS);
          yValuesDw[j] = Math.abs(yValues[l][j]) == 0. ? -EPS : yValues[l][j] * (1. - EPS);
          Interpolator1DDataBundle dataBundUp = wrappedInterp[k].getDataBundle(xValues, yValuesUp);
          Interpolator1DDataBundle dataBundDw = wrappedInterp[k].getDataBundle(xValues, yValuesDw);
          for (int i = 0; i < 10 * nData; ++i) {
            double res0 = 0.5 * (wrappedInterp[k].interpolate(dataBundUp, xKeys[i]) - wrappedInterp[k].interpolate(dataBundDw, xKeys[i])) / den;
            assertEquals(res0, wrappedInterp[k].getNodeSensitivitiesForValue(dataBund, xKeys[i])[j], Math.max(Math.abs(yValues[l][j]) * EPS, EPS));
          }
          yValuesUp[j] = yValues[l][j];
View Full Code Here

        final double[] resPrim2 = bare.interpolate(xValues, yValues2Clamped, xKeys).getData();
        final double[] resPrim3 = bare.interpolate(xValues, yValues3Clamped, xKeys).getData();
        final double[] resPrim4 = bare.interpolate(xValues, yValues4Clamped, xKeys).getData();
        final double[] resPrim5 = bare.interpolate(xValues, yValues5Clamped, xKeys).getData();

        Interpolator1DDataBundle dataBund1 = wrap.getDataBundleFromSortedArrays(xValues, yValues1, bdConds[l], bdConds[m]);
        Interpolator1DDataBundle dataBund2 = wrap.getDataBundleFromSortedArrays(xValues, yValues2, bdConds[l], bdConds[m]);
        Interpolator1DDataBundle dataBund3 = wrap.getDataBundleFromSortedArrays(xValues, yValues3, bdConds[l], bdConds[m]);
        Interpolator1DDataBundle dataBund4 = wrap.getDataBundleFromSortedArrays(xValues, yValues4, bdConds[l], bdConds[m]);
        Interpolator1DDataBundle dataBund5 = wrap.getDataBundleFromSortedArrays(xValues, yValues5, bdConds[l], bdConds[m]);
        for (int i = 0; i < 10 * nData; ++i) {
          final double ref1 = resPrim1[i];
          final double ref2 = resPrim2[i];
          final double ref3 = resPrim3[i];
          final double ref4 = resPrim4[i];
          final double ref5 = resPrim5[i];
          assertEquals(ref1, wrap.interpolate(dataBund1, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref1), 1.));
          assertEquals(ref2, wrap.interpolate(dataBund2, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref2), 1.));
          assertEquals(ref3, wrap.interpolate(dataBund3, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref3), 1.));
          assertEquals(ref4, wrap.interpolate(dataBund4, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref4), 1.));
          assertEquals(ref5, wrap.interpolate(dataBund5, xKeys[i]), 1.e-15 * Math.max(Math.abs(ref5), 1.));
        }

        for (int j = 0; j < nData; ++j) {
          yValues1Up[j] = yValues1[j] * (1. + EPS);
          yValues2Up[j] = yValues2[j] * (1. + EPS);
          yValues3Up[j] = yValues3[j] * (1. + EPS);
          yValues1Dw[j] = yValues1[j] * (1. - EPS);
          yValues2Dw[j] = yValues2[j] * (1. - EPS);
          yValues3Up[j] = yValues3[j] * (1. + EPS);
          yValues3Dw[j] = yValues3[j] * (1. - EPS);
          yValues4Up[j] = yValues4[j] * (1. + EPS);
          yValues4Dw[j] = yValues4[j] * (1. - EPS);
          yValues5Up[j] = yValues5[j] * (1. + EPS);
          yValues5Dw[j] = yValues5[j] * (1. - EPS);
          Interpolator1DDataBundle dataBund1Up = wrap.getDataBundleFromSortedArrays(xValues, yValues1Up, bdConds[l], bdConds[m]);
          Interpolator1DDataBundle dataBund2Up = wrap.getDataBundleFromSortedArrays(xValues, yValues2Up, bdConds[l], bdConds[m]);
          Interpolator1DDataBundle dataBund1Dw = wrap.getDataBundleFromSortedArrays(xValues, yValues1Dw, bdConds[l], bdConds[m]);
          Interpolator1DDataBundle dataBund2Dw = wrap.getDataBundleFromSortedArrays(xValues, yValues2Dw, bdConds[l], bdConds[m]);
          Interpolator1DDataBundle dataBund3Up = wrap.getDataBundleFromSortedArrays(xValues, yValues3Up, bdConds[l], bdConds[m]);
          Interpolator1DDataBundle dataBund3Dw = wrap.getDataBundleFromSortedArrays(xValues, yValues3Dw, bdConds[l], bdConds[m]);
          Interpolator1DDataBundle dataBund4Up = wrap.getDataBundleFromSortedArrays(xValues, yValues4Up, bdConds[l], bdConds[m]);
          Interpolator1DDataBundle dataBund4Dw = wrap.getDataBundleFromSortedArrays(xValues, yValues4Dw, bdConds[l], bdConds[m]);
          Interpolator1DDataBundle dataBund5Up = wrap.getDataBundleFromSortedArrays(xValues, yValues5Up, bdConds[l], bdConds[m]);
          Interpolator1DDataBundle dataBund5Dw = wrap.getDataBundleFromSortedArrays(xValues, yValues5Dw, bdConds[l], bdConds[m]);
          for (int i = 0; i < 10 * nData; ++i) {
            double res1 = 0.5 * (wrap.interpolate(dataBund1Up, xKeys[i]) - wrap.interpolate(dataBund1Dw, xKeys[i])) / EPS / yValues1[j];
            double res2 = 0.5 * (wrap.interpolate(dataBund2Up, xKeys[i]) - wrap.interpolate(dataBund2Dw, xKeys[i])) / EPS / yValues2[j];
            double res3 = 0.5 * (wrap.interpolate(dataBund3Up, xKeys[i]) - wrap.interpolate(dataBund3Dw, xKeys[i])) / EPS / yValues3[j];
            double res4 = 0.5 * (wrap.interpolate(dataBund4Up, xKeys[i]) - wrap.interpolate(dataBund4Dw, xKeys[i])) / EPS / yValues4[j];
View Full Code Here

TOP

Related Classes of com.opengamma.analytics.math.interpolation.data.Interpolator1DDataBundle

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.