コード例 #1
0
        public void FitsAtArbitraryPointsWithMaple(
            [Values(0.1, 0.4, 1.1, 3.2, 4.5, 10.0, -10.0)] double t,
            [Values(.487425, 1.6968, 3.081925, .9408, 7.265625, 592.5, 657.5)] double x,
            [Values(1e-15, 1e-15, 1e-15, 1e-15, 1e-14, 1e-10, 1e-9)] double maxAbsoluteError)
        {
            IInterpolation interpolation = new EquidistantPolynomialInterpolation(_tmin, _tmax, _x);

            Assert.AreEqual(x, interpolation.Interpolate(t), maxAbsoluteError, "Interpolation at {0}", t);
        }
コード例 #2
0
        public void FitsAtSamplePoints()
        {
            IInterpolation interpolation = new EquidistantPolynomialInterpolation(_tmin, _tmax, _x);

            for (int i = 0; i < _x.Length; i++)
            {
                Assert.AreEqual(_x[i], interpolation.Interpolate(i), "A Exact Point " + i);
            }
        }
コード例 #3
0
        public void PolynomialFitsAtArbitraryPointsWithMaple(
            [Values(-2.4, -0.9, -0.5, -0.1, 0.1, 0.4, 1.2, 10.0, -10.0)] double t,
            [Values(-4.5968, 1.65395, 0.21875, -0.84205, -1.10805, -1.1248, 0.5392, -4431.0, -5071.0)] double x,
            [Values(1e-14, 1e-15, 1e-15, 1e-15, 1e-15, 1e-15, 1e-15, 1e-9, 1e-9)] double maxAbsoluteError)
        {
            IInterpolation interpolation = new EquidistantPolynomialInterpolation(_t, _x);

            Assert.AreEqual(x, interpolation.Interpolate(t), maxAbsoluteError, "Interpolation at {0}", t);
        }
コード例 #4
0
 public void SupportsLinearCase([Values(2, 4, 12)] int samples)
 {
     double[] x, y, xtest, ytest;
     LinearInterpolationCase.Build(out x, out y, out xtest, out ytest, samples);
     IInterpolation interpolation = new EquidistantPolynomialInterpolation(x, y);
     for (int i = 0; i < xtest.Length; i++)
     {
         Assert.AreEqual(ytest[i], interpolation.Interpolate(xtest[i]), 1e-12, "Linear with {0} samples, sample {1}", samples, i);
     }
 }
コード例 #5
0
        public void PolynomialFitsAtArbitraryPointsWithMaple(double t, double x, double maxAbsoluteError)
        {
            IInterpolation interpolation = new EquidistantPolynomialInterpolation(_t, _x);

            Assert.AreEqual(x, interpolation.Interpolate(t), maxAbsoluteError, "Interpolation at {0}", t);
        }
コード例 #6
0
 /// <summary>
 /// Create a polynomial interpolation based on equidistant sample points.
 /// </summary>
 /// <param name="leftBound">The leftmost (smallest) sample point t.</param>
 /// <param name="rightBound">The rightmost (biggest) sample point t.</param>
 /// <param name="values">The sample point values x(t). Supports both lists and arrays.</param>
 /// <returns>
 /// An interpolation scheme optimized for the given sample points and values,
 /// which can then be used to compute interpolations and extrapolations
 /// on arbitrary points.
 /// </returns>
 public static IInterpolationMethod CreateOnEquidistantPoints(
     double leftBound,
     double rightBound,
     IList<double> values
     )
 {
     EquidistantPolynomialInterpolation method = new EquidistantPolynomialInterpolation();
     method.Init(leftBound, rightBound, values);
     return method;
 }
コード例 #7
0
        public void FitsAtArbitraryPointsWithMaple(double t, double x, double maxAbsoluteError)
        {
            IInterpolation interpolation = new EquidistantPolynomialInterpolation(Tmin, Tmax, _x);

            Assert.AreEqual(x, interpolation.Interpolate(t), maxAbsoluteError, "Interpolation at {0}", t);
        }