public void CriacaoMathExpressionTest(object[] actual, double expected)
        {
            var aux = new MathExpression(actual[0].ToString());
            var x   = Convert.ToDouble(actual[1]);

            Assert.AreEqual(expected, aux.F(x));
        }
示例#2
0
        public double NewtonRaphson()
        {
            if (DerivadaFuncao == null)
            {
                throw new Exception("Função derivada necessária");
            }

            if (X == null)
            {
                throw new Exception("Valor de X necessário");
            }

            var    funcaoLinha = new MathExpression(DerivadaFuncao);
            var    x           = X;
            double fx;

            var validador = 0;

            do
            {
                x -= _math.F(x) / funcaoLinha.F(x);

                fx = _math.F(x);

                validador++;
                if (validador > short.MaxValue * 1000)
                {
                    throw new Exception("Não conseguimos encontrar o valor");
                }
            } while (Math.Abs(fx) >= Precisao);

            return(x);
        }