public static void PerformDerivativeTest(IFunctionWithDerivative func, params double[][] points)
        {
            var nd       = new NumericDerivator(func.Evaluate, COMPUTE_EPSILON);
            var actual   = new DenseVector(points[0].Length);
            var expected = new DenseVector(points[0].Length);

            foreach (var point in points)
            {
                var pt = new DenseVector(point);
                nd.ComputeDerivative(expected, pt);
                func.Derivate(actual, pt);

                for (int i = 0; i < expected.Count; ++i)
                {
                    Assert.IsTrue(Math.Abs(expected[i] - actual[i]) < CHECK_EPSILON);
                }
            }
        }
示例#2
0
        private void performComputeDerivativeTest(Func <Vector <double>, double> func,
                                                  Action <Vector <double>, Vector <double> > derivFunc, params double[][] points)
        {
            var nd       = new NumericDerivator(func, COMPUTE_EPSILON);
            var actual   = new DenseVector(points[0].Length);
            var expected = new DenseVector(points[0].Length);

            foreach (var point in points)
            {
                var pt = new DenseVector(point);
                nd.ComputeDerivative(actual, pt);
                derivFunc(expected, pt);

                for (int i = 0; i < expected.Count; ++i)
                {
                    Assert.IsTrue(Math.Abs(expected[i] - actual[i]) < CHECK_EPSILON);
                }
            }
        }