public void FindRoot_QuadraticIncorrectIntialGuess_ReturnsRootWithinTolerance()
        {
            OneDimensionalFunction f      = x => x * x;
            OneDimensionalFunction fPrime = x => 2 * x;

            const double        initialGuess = 4;
            NewtonRhapsonSolver solver       = new NewtonRhapsonSolver(f, fPrime, initialGuess);

            var root = solver.FindRoot();

            Assert.IsTrue(Math.Abs(f(root)) < solver.Tolerance);
        }
        public void FindRoot_CosFunction_ReturnsRootWithinTolerance()
        {
            OneDimensionalFunction f      = Math.Cos;
            OneDimensionalFunction fPrime = x => - Math.Sin(x);

            const double        initialGuess = .5;
            NewtonRhapsonSolver solver       = new NewtonRhapsonSolver(f, fPrime, initialGuess);

            var root = solver.FindRoot();

            Assert.IsTrue(Math.Abs(f(root)) < solver.Tolerance);
        }
        public void FindRoot_PolynomialExactIntialGuess_ReturnsExactRoot()
        {
            OneDimensionalFunction f      = x => x * x - 4;
            OneDimensionalFunction fPrime = x => 2 * x;

            const double        initialGuess = 2;
            NewtonRhapsonSolver solver       = new NewtonRhapsonSolver(f, fPrime, initialGuess);

            var root = solver.FindRoot();

            Assert.AreEqual(initialGuess, root);
        }