Ejemplo n.º 1
0
        public static double NewtonRaphsonMethod(double[] polynomial, double a, double b, double epsilon, int maxIteration)
        {
            int    i          = 0;
            var    derivative = Derivative(polynomial);
            double f0         = Poly.Evaluate(polynomial, a);
            double x          = a;

            while (Math.Abs(Poly.Evaluate(polynomial, x)) > epsilon)
            {
                x -= f0 / Poly.Evaluate(derivative, x);
                f0 = Poly.Evaluate(polynomial, x);
                i++;
                if (i >= maxIteration)
                {
                    return(double.NaN);
                }
            }
            return(x);
        }
Ejemplo n.º 2
0
        public static double BisectionMethod(double[] polynomial, double a, double b, double epsilon)
        {
            double x1 = a;
            double x2 = b;
            double fb = Poly.Evaluate(polynomial, b);

            while (Math.Abs(x2 - x1) > epsilon)
            {
                double midpt = 0.5 * (x1 + x2);
                if (fb * Poly.Evaluate(polynomial, midpt) > 0)
                {
                    x2 = midpt;
                }
                else
                {
                    x1 = midpt;
                }
            }
            return(x2 - (x2 - x1) * Poly.Evaluate(polynomial, x2) / (Poly.Evaluate(polynomial, x2) - Poly.Evaluate(polynomial, x1)));
        }