Esempio n. 1
0
        public void Calcular()
        {
            resultado = new List <tPunto>();

            ExpressionParser parserPre;
            ExpressionParser parserCor;

            var    predictor = 0.0;
            var    corrector = 0.0;
            tPunto punto;

            PartirIntervalo();

            var punto0 = new tPunto()
            {
                x  = a,
                fx = x0
            };

            resultado.Add(punto0);

            for (int i = 1; i <= n; i++)
            {
                //cargo datos en la funciòn predictor
                parserPre = new ExpressionParser();
                parserPre.Values.Add("x", puntos[i - 1]);
                parserPre.Values.Add("k", k);

                predictor = resultado[i - 1].fx + parserPre.Parse(fx) * h;

                parserCor = new ExpressionParser();
                parserCor.Values.Add("x", puntos[i]);
                parserCor.Values.Add("k", k);

                //x(n+1) = x(n) + 0.5 * ( f( x(n) ) + f( x(n-1) ) * h;
                corrector = resultado[i - 1].fx + 0.5 * (parserCor.Parse(fx) + parserPre.Parse(fx)) * h;

                punto = new tPunto()
                {
                    x  = puntos[i],
                    fx = corrector
                };

                resultado.Add(punto);
            }
        }
        public void Calcular()
        {
            resultado = new List <tPunto>();

            ExpressionParser parser;
            var    aux = 0.0;
            tPunto punto;

            //Parto el intervalo [a,b] en 'n' partes, con un h = (b - a) / n
            PartirIntervalo();

            //Definio el primer punto en x = x0
            var punto0 = new tPunto()
            {
                x  = a,
                fx = x0
            };

            resultado.Add(punto0);

            for (int i = 1; i <= n; i++)
            {
                parser = new ExpressionParser();
                parser.Values.Add("x", puntos[i - 1]);
                parser.Values.Add("k", k);

                aux = resultado[i - 1].fx + parser.Parse(fx) * h;

                punto = new tPunto()
                {
                    x  = puntos[i],
                    fx = aux
                };

                resultado.Add(punto);
            }
        }