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); } } }
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); } } }