Exemplo n.º 1
0
        public Salida MReglaFalsa(double extremoizquierdo, double extremoderecho)
        {
            Salida salida      = new Salida();
            double xr          = 0;
            int    contador    = 0;
            double Xant        = 0;
            double Error       = 0;
            int    Iteraciones = 100;
            double Tolerancia  = 0.0001;
            double resultado   = 0;

            resultado = f(extremoizquierdo) * f(extremoderecho);
            if (resultado > 0)
            {
                salida.ErrorMsje = ("f(x1)*f(x2) > 0");
            }
            if (resultado == 0)
            {
                if (f(extremoizquierdo) == 0)
                {
                    salida.ErrorMsje      = ("El extremo izquierdo es la raiz");
                    salida.ErrorRelativo  = 0;
                    salida.NroIteraciones = contador;
                }
                else if (f(extremoderecho) == 0)
                {
                    salida.ErrorMsje      = ("El extremo derecho es la raiz");
                    salida.ErrorRelativo  = 0;
                    salida.NroIteraciones = contador;
                }
            }
            if (resultado < 0)
            {
                do
                {
                    xr       = (((f(extremoizquierdo) * extremoderecho) - (f(extremoderecho) * extremoizquierdo))) / (f(extremoizquierdo) - f(extremoderecho));
                    contador = contador + 1;
                    Error    = Math.Abs((xr - Xant) / xr);

                    if (Math.Abs(f(xr)) < Tolerancia | contador > Iteraciones | Error < Tolerancia)
                    {
                        salida.Raiz           = xr;
                        salida.ErrorRelativo  = Error;
                        salida.NroIteraciones = contador;
                    }
                    else if (f(extremoizquierdo) * f(extremoderecho) < 0)
                    {
                        extremoizquierdo = xr;
                    }
                    else
                    {
                        extremoderecho = xr;
                    }
                    Xant = xr;
                } while (Error > Tolerancia && contador <= Iteraciones);
            }
            return(salida);
        }
Exemplo n.º 2
0
        public Salida MetodoSecante(double x1, double x2)
        {
            double xant, error;
            int    itermax    = 100;
            double tolerancia = 0.001;
            double c          = 0;
            double xr         = 0;

            error = 0;

            Salida salida = new Salida();

            if (f(x1) == 0)
            {
                salida.Raiz           = x1;
                salida.ErrorRelativo  = 0;
                salida.NroIteraciones = c;
            }
            else
            {
                if (f(x2) == 0)
                {
                    salida.Raiz           = x2;
                    salida.ErrorRelativo  = 0;
                    salida.NroIteraciones = c;
                }

                // Console.WriteLine("La raíz es: " + x2);
                else
                {
                    xant = 0;

                    do
                    {
                        c++;
                        xr    = ((f(x2) * x1) - (f(x1) * x2)) / (f(x2) - f(x1));
                        error = Math.Abs((xr - xant) / xr);

                        x1   = x2;
                        x2   = xr;
                        xant = xr;
                    } while ((Math.Abs(f(xr)) > tolerancia) && (c < itermax));
                }
                salida.Raiz           = xr;
                salida.ErrorRelativo  = error;
                salida.NroIteraciones = c;
            }

            return(salida);
        }
Exemplo n.º 3
0
        public Salida NRaphson(double xi)
        {
            double c       = 0;
            var    itermax = 100;
            double error   = 0;
            double derivada;
            double xr         = 0;
            double xant       = 0;
            double tolerancia = 0.0001;

            Salida salida = new Salida();

            if (f(xi) == 0)
            {
                salida.ErrorRelativo  = 0;
                salida.Raiz           = xi;
                salida.NroIteraciones = c;
            }
            else
            {
                xant = 0;

                do
                {
                    derivada = (((f(xi + tolerancia) - f(xi))) / tolerancia);
                    xr       = xi - (f(xi) / derivada);
                    error    = Math.Abs((xr - xant) / xr);

                    c    = c + 1;
                    xi   = xr;
                    xant = xr;
                } while ((Math.Abs(f(xr)) > tolerancia) && (c < itermax));

                salida.Raiz           = xr;
                salida.NroIteraciones = c;
                salida.ErrorRelativo  = error;
            }

            return(salida);
        }