public void ScalarFunctonDerivativeTest() { Func<double, double> f = x => 1 / x; var J = new NumericalJacobian(); var jeval = J.Evaluate(f, 2); Assert.AreEqual((double)-1 / 4, jeval[0], 1e-7); }
public void OneEquationVectorFunctionTest() { Func<double[], double> f = x => Math.Sin(x[0] * x[1]) * Math.Exp(-x[0] / 2) + x[1] / x[0]; var J = new NumericalJacobian(); var jeval = J.Evaluate(f, new double[] { 1, 1 }); Assert.AreEqual(-0.92747906175, jeval[0], 1e-9); Assert.AreEqual(1.32770991402, jeval[1], 1e-9); Assert.AreEqual(4, J.FunctionEvaluations); J.ResetFunctionEvaluations(); Assert.AreEqual(0, J.FunctionEvaluations); }
public void VectorFunctionJacobianTest() { Func<double[], double>[] f = { (x) => Math.Pow(x[0], 2)*x[1], (x) => 5*x[0] + Math.Sin(x[1]) }; var j = new NumericalJacobian(); var jeval = j.Evaluate(f, new double[] { 1, 1 }); Assert.AreEqual(2, jeval[0, 0]); Assert.AreEqual(1, jeval[0, 1]); Assert.AreEqual(5, jeval[1, 0]); Assert.AreEqual(Math.Cos(1), jeval[1, 1], 1e-7); }