Beispiel #1
0
        /// <summary>
        /// Encuentra la raiz aplicando el método de Newton
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="p"></param>
        /// <param name="p_derivada"></param>
        /// <returns></returns>
        public static double Newton(double a, double b, IPolinomio p)
        {
            IPolinomio p_derivada_primera = (IPolinomio)p.Clone(), p_derivada_segunda;
            p_derivada_primera.Derivar();
            p_derivada_segunda = (IPolinomio)p_derivada_primera.Clone();
            p_derivada_segunda.Derivar();

            double x_o;
            double xn;

            xn = b;
            double pa = p.Resolver(a);
            double pda = p_derivada_segunda.Resolver(a);
            if (pa * pda > 0)
            {
                xn = a;
            }
            x_o = xn + 1;

            while (xn != x_o)
            {
                x_o = xn;
                xn = x_o - p.Resolver(x_o) / p_derivada_primera.Resolver(x_o);
            }
            return xn;
        }
Beispiel #2
0
        /// <summary>
        /// Encuentra la raiz aplicando el método de Newton
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="p"></param>
        /// <param name="p_derivada"></param>
        /// <returns></returns>
        public static double Newton(double a, double b, IPolinomio p)
        {
            IPolinomio p_derivada_primera = (IPolinomio)p.Clone(), p_derivada_segunda;

            p_derivada_primera.Derivar();
            p_derivada_segunda = (IPolinomio)p_derivada_primera.Clone();
            p_derivada_segunda.Derivar();

            double x_o;
            double xn;

            xn = b;
            double pa = p.Resolver(a);
            double pda = p_derivada_segunda.Resolver(a);

            if (pa * pda > 0)
            {
                xn = a;
            }
            x_o = xn + 1;

            while (xn != x_o)
            {
                x_o = xn;
                xn  = x_o - p.Resolver(x_o) / p_derivada_primera.Resolver(x_o);
            }
            return(xn);
        }
Beispiel #3
0
        void IValorActualNeto.ResolverInterés()
        {
            double     S = 0, M = 0, D = 0, cotaInf, cotaSup;
            IPolinomio p = this.construirPolinomio();

            calcularS_M_D(ref S, ref M, ref D);

            cotaInf = this.calcularCotaInf(S, M);
            cotaSup = this.calcularCotaSup(S, D);

            _XunoMasK = Polinomio.Newton(cotaInf, cotaSup, p);

            //double b = p.Resolver(1.16);
            _i             = 0;
            _r             = 0;
            _interesValido = false;
        }