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); } }