コード例 #1
0
        ///
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(expectedExceptions = IllegalArgumentException.class) public void notReconnectedTest()
        public virtual void notReconnectedTest()
        {
            double[] xValues = new double[] { 1.0, 2.000000000001, 2.000000000002, 4.0 };
            double[] yValues = new double[] { 2.0, 4.e10, 3.e-5, 5.e11 };

            PiecewisePolynomialInterpolator interpPos = new LinearInterpolator();

            interpPos.interpolate(xValues, yValues);
        }
コード例 #2
0
        ///
        public virtual void recov4ptsMultiTest()
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] xValues = new double[] {1.0, 2.0, 3.0, 4 };
            double[] xValues = new double[] { 1.0, 2.0, 3.0, 4 };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] yValues = new double[][] { {6.0, 1.0, 8.0, -2.0 }, {1.0, 1.0 / 3.0, 2.0 / 11.0, 1.0 / 7.0 } };
            double[][] yValues = new double[][]
            {
                new double[] { 6.0, 1.0, 8.0, -2.0 },
                new double[] { 1.0, 1.0 / 3.0, 2.0 / 11.0, 1.0 / 7.0 }
            };

            const int nIntervalsExp = 3;
            const int orderExp      = 2;
            const int dimExp        = 2;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] coefsMatExp = new double[][] { {-5.0, 6.0 }, {-2.0 / 3.0, 1.0 }, {7.0, 1.0 }, {-5.0 / 33.0, 1.0 / 3.0 }, {-10.0, 8.0 }, {-3.0 / 77.0, 2.0 / 11.0 } };
            double[][] coefsMatExp = new double[][]
            {
                new double[] { -5.0, 6.0 },
                new double[] { -2.0 / 3.0, 1.0 },
                new double[] { 7.0, 1.0 },
                new double[] { -5.0 / 33.0, 1.0 / 3.0 },
                new double[] { -10.0, 8.0 },
                new double[] { -3.0 / 77.0, 2.0 / 11.0 }
            };
            LinearInterpolator        interpMatrix = new LinearInterpolator();
            PiecewisePolynomialResult result       = interpMatrix.interpolate(xValues, yValues);

            assertEquals(result.Dimensions, dimExp);
            assertEquals(result.NumberOfIntervals, nIntervalsExp);
            assertEquals(result.Dimensions, dimExp);
            for (int i = 0; i < nIntervalsExp * dimExp; ++i)
            {
                for (int j = 0; j < orderExp; ++j)
                {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double ref = coefsMatExp[i][j] == 0.0 ? 1.0 : Math.abs(coefsMatExp[i][j]);
                    double @ref = coefsMatExp[i][j] == 0.0 ? 1.0 : Math.Abs(coefsMatExp[i][j]);
                    assertEquals(result.CoefMatrix.get(i, j), coefsMatExp[i][j], @ref * EPS);
                }
            }
            for (int j = 0; j < nIntervalsExp + 1; ++j)
            {
                assertEquals(result.Knots.get(j), xValues[j]);
            }
        }
        ///
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(expectedExceptions = IllegalArgumentException.class) public void lowDegreeMultiTest()
        public virtual void lowDegreeMultiTest()
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] xValues = new double[] {1.0, 2.0, 3.0 };
            double[] xValues = new double[] { 1.0, 2.0, 3.0 };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] yValues = new double[][] { {0.0, 0.1, 0.05 }, {0.0, 0.1, 1.05 } };
            double[][] yValues = new double[][]
            {
                new double[] { 0.0, 0.1, 0.05 },
                new double[] { 0.0, 0.1, 1.05 }
            };

            PiecewisePolynomialInterpolator interp    = new LinearInterpolator();
            PiecewisePolynomialInterpolator interpPos = new MonotonicityPreservingCubicSplineInterpolator(interp);

            interpPos.interpolate(xValues, yValues);
        }
コード例 #4
0
        ///
        public virtual void recov4ptsTest()
        {
            double[] xValues = new double[] { 1.0, 2.0, 4.0, 7.0 };
            double[] yValues = new double[] { 6.0, 1.0, 8.0, -2.0 };

            int nIntervalsExp = 3;
            int orderExp      = 2;
            int dimExp        = 1;

            double[][] coefsMatExp = new double[][]
            {
                new double[] { -5.0, 6.0 },
                new double[] { 7.0 / 2.0, 1.0 },
                new double[] { -10.0 / 3.0, 8.0 }
            };
            LinearInterpolator        interpMatrix = new LinearInterpolator();
            PiecewisePolynomialResult result       = interpMatrix.interpolate(xValues, yValues);

            assertEquals(result.Dimensions, dimExp);
            assertEquals(result.NumberOfIntervals, nIntervalsExp);
            assertEquals(result.Dimensions, dimExp);

            for (int i = 0; i < nIntervalsExp; ++i)
            {
                for (int j = 0; j < orderExp; ++j)
                {
                    double @ref = coefsMatExp[i][j] == 0.0 ? 1.0 : Math.Abs(coefsMatExp[i][j]);
                    assertEquals(result.CoefMatrix.get(i, j), coefsMatExp[i][j], @ref * EPS);
                }
            }
            for (int j = 0; j < nIntervalsExp + 1; ++j)
            {
                assertEquals(result.Knots.get(j), xValues[j]);
            }

            // sensitivity
            double delta = 1.0e-6;

            double[] keys = new double[] { -1.5, 2.43, 4.0, 7.0, 12.7 };
            testSensitivity(xValues, yValues, keys, delta);
        }
コード例 #5
0
        /// <summary>
        /// Derive value of the underlying cubic spline function at the value of xKey
        /// </summary>
        public virtual void InterpolantsTest()
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] xValues = new double[] {1.0, 2.0, 3.0, 4.0 };
            double[] xValues = new double[] { 1.0, 2.0, 3.0, 4.0 };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] yValues = new double[][] { {6.0, 25.0 / 6.0, 10.0 / 3.0, 4.0 }, {6.0, 1.0, 0.0, 0.0 } };
            double[][] yValues = new double[][]
            {
                new double[] { 6.0, 25.0 / 6.0, 10.0 / 3.0, 4.0 },
                new double[] { 6.0, 1.0, 0.0, 0.0 }
            };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] xKey = new double[][] { {-1.0, 0.5, 1.5 }, {2.5, 3.5, 4.5 } };
            double[][] xKey = new double[][]
            {
                new double[] { -1.0, 0.5, 1.5 },
                new double[] { 2.5, 3.5, 4.5 }
            };

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][][] resultValuesExpected = new double[][][] { { {29.0 / 3.0, 15.0 / 4.0 }, {16.0, 1.0 / 2.0 } }, { {83.0 / 12.0, 11.0 / 3.0 }, {17.0 / 2.0, 0.0 } }, { {61.0 / 12.0, 13.0 / 3.0 }, {7.0 / 2.0, 0.0 } } };
            double[][][] resultValuesExpected = new double[][][]
            {
                new double[][]
                {
                    new double[] { 29.0 / 3.0, 15.0 / 4.0 },
                    new double[] { 16.0, 1.0 / 2.0 }
                },
                new double[][]
                {
                    new double[] { 83.0 / 12.0, 11.0 / 3.0 },
                    new double[] { 17.0 / 2.0, 0.0 }
                },
                new double[][]
                {
                    new double[] { 61.0 / 12.0, 13.0 / 3.0 },
                    new double[] { 7.0 / 2.0, 0.0 }
                }
            };

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final int yDim = yValues.length;
            int yDim = yValues.Length;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final int keyLength = xKey[0].length;
            int keyLength = xKey[0].Length;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final int keyDim = xKey.length;
            int keyDim = xKey.Length;

            LinearInterpolator interp = new LinearInterpolator();

            double value = interp.interpolate(xValues, yValues[0], xKey[0][0]);
            {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double ref = resultValuesExpected[0][0][0] == 0.0 ? 1.0 : Math.abs(resultValuesExpected[0][0][0]);
                double @ref = resultValuesExpected[0][0][0] == 0.0 ? 1.0 : Math.Abs(resultValuesExpected[0][0][0]);
                assertEquals(value, resultValuesExpected[0][0][0], @ref * EPS);
            }

            DoubleArray valuesVec1 = interp.interpolate(xValues, yValues, xKey[0][0]);

            for (int i = 0; i < yDim; ++i)
            {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double ref = resultValuesExpected[0][i][0] == 0.0 ? 1.0 : Math.abs(resultValuesExpected[0][i][0]);
                double @ref = resultValuesExpected[0][i][0] == 0.0 ? 1.0 : Math.Abs(resultValuesExpected[0][i][0]);
                assertEquals(valuesVec1.get(i), resultValuesExpected[0][i][0], @ref * EPS);
            }

            DoubleArray valuesVec2 = interp.interpolate(xValues, yValues[0], xKey[0]);

            for (int k = 0; k < keyLength; ++k)
            {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double ref = resultValuesExpected[k][0][0] == 0.0 ? 1.0 : Math.abs(resultValuesExpected[k][0][0]);
                double @ref = resultValuesExpected[k][0][0] == 0.0 ? 1.0 : Math.Abs(resultValuesExpected[k][0][0]);
                assertEquals(valuesVec2.get(k), resultValuesExpected[k][0][0], @ref * EPS);
            }

            DoubleMatrix valuesMat1 = interp.interpolate(xValues, yValues[0], xKey);

            for (int j = 0; j < keyDim; ++j)
            {
                for (int k = 0; k < keyLength; ++k)
                {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double ref = resultValuesExpected[k][0][j] == 0.0 ? 1.0 : Math.abs(resultValuesExpected[k][0][j]);
                    double @ref = resultValuesExpected[k][0][j] == 0.0 ? 1.0 : Math.Abs(resultValuesExpected[k][0][j]);
                    assertEquals(valuesMat1.get(j, k), resultValuesExpected[k][0][j], @ref * EPS);
                }
            }

            DoubleMatrix valuesMat2 = interp.interpolate(xValues, yValues, xKey[0]);

            for (int i = 0; i < yDim; ++i)
            {
                for (int k = 0; k < keyLength; ++k)
                {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double ref = resultValuesExpected[k][i][0] == 0.0 ? 1.0 : Math.abs(resultValuesExpected[k][i][0]);
                    double @ref = resultValuesExpected[k][i][0] == 0.0 ? 1.0 : Math.Abs(resultValuesExpected[k][i][0]);
                    assertEquals(valuesMat2.get(i, k), resultValuesExpected[k][i][0], @ref * EPS);
                }
            }

            DoubleMatrix[] valuesMat3 = interp.interpolate(xValues, yValues, xKey);
            for (int i = 0; i < yDim; ++i)
            {
                for (int j = 0; j < keyDim; ++j)
                {
                    for (int k = 0; k < keyLength; ++k)
                    {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double ref = resultValuesExpected[k][i][j] == 0.0 ? 1.0 : Math.abs(resultValuesExpected[k][i][j]);
                        double @ref = resultValuesExpected[k][i][j] == 0.0 ? 1.0 : Math.Abs(resultValuesExpected[k][i][j]);
                        assertEquals(valuesMat3[k].get(i, j), resultValuesExpected[k][i][j], @ref * EPS);
                    }
                }
            }
        }