public void CentralDifferenceFirstOrderThreePointTest()
 {
     double[] results = { -0.5, 0, 0.5 };
     var finite = new FiniteDifferenceCoefficients(3);
     var coeff = finite.GetCoefficients(1, 1);
     Assert.AreEqual(results, coeff);
 }
        public void CentralDifferenceFirstOrderThreePointTest()
        {
            double[] results = { -0.5, 0, 0.5 };
            var      finite  = new FiniteDifferenceCoefficients(3);
            var      coeff   = finite.GetCoefficients(1, 1);

            Assert.AreEqual(results, coeff);
        }
 public void CentralDifferenceSecondOrderFivePointsTest()
 {
     double[] results = { (double)-1 / 12, (double)4 / 3, (double)-5 / 2, (double)4 / 3, (double)-1 / 12 };
     var finite = new FiniteDifferenceCoefficients(5);
     var coeff = finite.GetCoefficients(2, 2);
     for (int i = 0; i < coeff.Length; i++)
         Assert.AreEqual(results[i], coeff[i]);
 }
 public void BackwardDifferenceThirdOrderFourPointsTest()
 {
     double[] results = { -1, 3, -3, 1 };
     var finite = new FiniteDifferenceCoefficients(4);
     var coeff = finite.GetCoefficients(3, 3);
     for (int i = 0; i < coeff.Length; i++)
         Assert.AreEqual(results[i], coeff[i]);
 }
 public void ForwardDifferenceThirdOrderEightPointsTest()
 {
     double[] results = { (double)-967 / 120, (double)638 / 15, (double)-3929 / 40, (double)389 / 3,
                          (double)-2545 / 24, (double)268 / 5, (double)-1849 / 120, (double)29 / 15 };
     var finite = new FiniteDifferenceCoefficients(8);
     var coeff = finite.GetCoefficients(0, 3);
     for (int i = 0; i < coeff.Length; i++)
         Assert.AreEqual(results[i], coeff[i]);
 }
        public void BackwardDifferenceThirdOrderFourPointsTest()
        {
            double[] results = { -1, 3, -3, 1 };
            var      finite  = new FiniteDifferenceCoefficients(4);
            var      coeff   = finite.GetCoefficients(3, 3);

            for (int i = 0; i < coeff.Length; i++)
            {
                Assert.AreEqual(results[i], coeff[i]);
            }
        }
        public void CentralDifferenceSecondOrderFivePointsTest()
        {
            double[] results = { (double)-1 / 12, (double)4 / 3, (double)-5 / 2, (double)4 / 3, (double)-1 / 12 };
            var      finite  = new FiniteDifferenceCoefficients(5);
            var      coeff   = finite.GetCoefficients(2, 2);

            for (int i = 0; i < coeff.Length; i++)
            {
                Assert.AreEqual(results[i], coeff[i]);
            }
        }
        public void ForwardDifferenceThirdOrderEightPointsTest()
        {
            double[] results = { (double)-967 / 120, (double)638 / 15, (double)-3929 / 40,  (double)389 / 3,
                                 (double)-2545 / 24, (double)268 / 5,  (double)-1849 / 120, (double)29 / 15 };
            var      finite = new FiniteDifferenceCoefficients(8);
            var      coeff  = finite.GetCoefficients(0, 3);

            for (int i = 0; i < coeff.Length; i++)
            {
                Assert.AreEqual(results[i], coeff[i]);
            }
        }
        /// <summary>
        /// Initialized a NumericalDerivative class.
        /// </summary>
        /// <param name="points">Number of points for finite difference derivatives.</param>
        /// <param name="center">Location of the center with respect to other points. Value ranges from zero to points-1.</param>
        public OptimizationNumericalDerivative(int points, int center)
        {
            if (points < 2)
            {
                throw new ArgumentOutOfRangeException("points", "Points must be two or greater.");
            }

            _center       = center;
            _points       = points;
            Center        = center;
            _coefficients = new FiniteDifferenceCoefficients(points);
        }