public void ObtenerParametros(ParametrosIntegracionNumerica parametros) { this.Funcion = new Function(parametros.Funcion); this.xa = new Argument("x", parametros.ValorExtremo1); this.xb = new Argument("x", parametros.ValorExtremo2); this.Nombre = parametros.Funcion.Split('=')[0].Trim(); this.Subintervalos = parametros.CantidadSubintervalos; }
public ResultadoIntegracionNumerica ResolverTrapecioSimple(ParametrosIntegracionNumerica parametros) { this.ObtenerParametros(parametros); double Area = (((this.EvaluarFuncion(Nombre, Funcion, xa) + this.EvaluarFuncion(Nombre, Funcion, xb)) * (parametros.ValorExtremo2 - parametros.ValorExtremo1)) / 2); ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); resultado.ValorIntegral = Convert.ToDecimal(Area); return(resultado); }
public ResultadoIntegracionNumerica ResolverSimpson13Multiple(ParametrosIntegracionNumerica parametros) { this.ObtenerParametros(parametros); double h = ((parametros.ValorExtremo2 - parametros.ValorExtremo1) / parametros.CantidadSubintervalos); double Simpson38 = 0; if (parametros.CantidadSubintervalos % 2 != 0) { this.Subintervalos = Subintervalos - 3; double x0 = parametros.ValorExtremo1; for (int i = 1; i <= Subintervalos; i++) { x0 += h; } Simpson38 = this.ResolverSimpson38(parametros, x0); } double pares = 0; double impares = 0; double intervalo = parametros.ValorExtremo1; for (int i = 0; i <= Subintervalos - 1; i++) { if (i != 0 && i != Subintervalos - 1) { if ((i % 2) == 0) { Argument xi = new Argument("x", intervalo); pares += this.EvaluarFuncion(Nombre, Funcion, xi); } else { Argument xi = new Argument("x", intervalo); impares += this.EvaluarFuncion(Nombre, Funcion, xi); } } intervalo = intervalo + h; } double Simpson13 = ((h / 3) * (this.EvaluarFuncion(Nombre, Funcion, xa) + 4 * pares + 2 * impares + (this.EvaluarFuncion(Nombre, Funcion, xb)))); ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); resultado.ValorIntegral = Convert.ToDecimal(Simpson13 + Convert.ToDouble(Simpson38)); resultado.Simpson13 = Convert.ToDecimal(Simpson13); resultado.Simpson38 = Convert.ToDecimal(Simpson38); return(resultado); }
private void btnCalcular_Click(object sender, EventArgs e) { ParametrosIntegracionNumerica parametros = new ParametrosIntegracionNumerica(); ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); switch (comboMetodo.SelectedIndex) { case 0: //Trapecio Simple parametros.Funcion = txtboxFuncion.Text; parametros.ValorExtremo1 = Convert.ToDouble(txtBoxExtremo1.Text); parametros.ValorExtremo2 = Convert.ToDouble(txtBoxExtremo2.Text); resultado = integracionnumerica.ResolverTrapecioSimple(parametros); break; case 1: //Trapecio Multiple parametros.Funcion = txtboxFuncion.Text; parametros.CantidadSubintervalos = Convert.ToInt32(txtboxCantidadIntervalos.Text); parametros.ValorExtremo1 = Convert.ToDouble(txtBoxExtremo1.Text); parametros.ValorExtremo2 = Convert.ToDouble(txtBoxExtremo2.Text); resultado = integracionnumerica.ResolverTrapecioMultiple(parametros); break; case 2: //Simpson 1/3 simple parametros.Funcion = txtboxFuncion.Text; parametros.ValorExtremo1 = Convert.ToDouble(txtBoxExtremo1.Text); parametros.ValorExtremo2 = Convert.ToDouble(txtBoxExtremo2.Text); resultado = integracionnumerica.ResolverSimpson13Simple(parametros); break; case 3: //Simpson 1/3 Multiple parametros.Funcion = txtboxFuncion.Text; parametros.CantidadSubintervalos = Convert.ToInt32(txtboxCantidadIntervalos.Text); parametros.ValorExtremo1 = Convert.ToDouble(txtBoxExtremo1.Text); parametros.ValorExtremo2 = Convert.ToDouble(txtBoxExtremo2.Text); resultado = integracionnumerica.ResolverSimpson13Multiple(parametros); break; } labelValorIntegral.Visible = true; txtboxValorIntegral.Visible = true; txtboxValorIntegral.Text = Convert.ToString(Math.Abs(Math.Round(resultado.ValorIntegral, 4))); if (parametros.CantidadSubintervalos % 2 != 0) { lblSimpson13.Visible = true; txtSimpson13.Visible = true; lblSimpson38.Visible = true; txtSimpson38.Visible = true; txtSimpson13.Text = Convert.ToString(Math.Abs(Math.Round(resultado.Simpson13, 4))); txtSimpson38.Text = Convert.ToString(Math.Abs(Math.Round(resultado.Simpson38, 4))); } }
public void EjercicioAc() { IntegracionNumerica integracion = new IntegracionNumerica(minimos); ParametrosIntegracionNumerica parametros = new ParametrosIntegracionNumerica(); parametros.Funcion = "f(x)=((1/(x+0.5))+((1/4)*(x^(2))))"; parametros.ValorExtremo1 = 0; parametros.ValorExtremo2 = 3; ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); resultado = integracion.ResolverSimpson13Simple(parametros); Assert.AreEqual(Math.Round(resultado.ValorIntegral, 4), 4.3929); }
public void EjercicioCc() { IntegracionNumerica integracion = new IntegracionNumerica(minimos); ParametrosIntegracionNumerica parametros = new ParametrosIntegracionNumerica(); parametros.Funcion = "f(x) = e^(x)*(1-(0.5*x^(2)))"; parametros.ValorExtremo1 = -1.4142; parametros.ValorExtremo2 = 1.4142; ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); resultado = integracion.ResolverSimpson13Simple(parametros); Assert.AreEqual(Math.Round(resultado.ValorIntegral, 4), 1.8856); }
public void EjercicioBc() { IntegracionNumerica integracion = new IntegracionNumerica(minimos); ParametrosIntegracionNumerica parametros = new ParametrosIntegracionNumerica(); parametros.Funcion = "f(x) = ln(1+x^(2))"; parametros.ValorExtremo1 = -2; parametros.ValorExtremo2 = 2; ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); resultado = integracion.ResolverSimpson13Simple(parametros); Assert.AreEqual(Math.Round(resultado.ValorIntegral, 4), 2.1459); }
public void EjercicioAb() { IntegracionNumerica integracion = new IntegracionNumerica(minimos); ParametrosIntegracionNumerica parametros = new ParametrosIntegracionNumerica(); parametros.Funcion = "f(x)=((1/(x+0.5))+((1/4)*(x^(2))))"; parametros.ValorExtremo1 = 0; parametros.ValorExtremo2 = 3; parametros.CantidadSubintervalos = 20; ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); resultado = integracion.ResolverTrapecioMultiple(parametros); Assert.AreEqual(Math.Round(resultado.ValorIntegral, 4), 4.9996); }
public void EjercicioCb() { IntegracionNumerica integracion = new IntegracionNumerica(minimos); ParametrosIntegracionNumerica parametros = new ParametrosIntegracionNumerica(); parametros.Funcion = "f(x) = e^(x)*(1-(0.5*x^(2)))"; parametros.ValorExtremo1 = -1.4142; parametros.ValorExtremo2 = 1.4142; parametros.CantidadSubintervalos = 20; ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); resultado = integracion.ResolverTrapecioMultiple(parametros); Assert.AreEqual(Math.Round(resultado.ValorIntegral, 4), 2.2805); }
public ResultadoIntegracionNumerica ResolverSimpson13Simple(ParametrosIntegracionNumerica parametros) { this.ObtenerParametros(parametros); double xi = (parametros.ValorExtremo1 + parametros.ValorExtremo2) / 2; Argument xii = new Argument("x", xi); ParametrosMinimosCuadrados parametroslagrange = new ParametrosMinimosCuadrados(); List <Decimal> ValoresX = new List <decimal>(); ValoresX.Add(Convert.ToDecimal(parametros.ValorExtremo1)); ValoresX.Add(Convert.ToDecimal(xi)); ValoresX.Add(Convert.ToDecimal(parametros.ValorExtremo2)); List <Decimal> ValoresY = new List <decimal>(); ValoresY.Add(Convert.ToDecimal(this.EvaluarFuncion(Nombre, Funcion, xa))); ValoresY.Add(Convert.ToDecimal(this.EvaluarFuncion(Nombre, Funcion, xii))); ValoresY.Add(Convert.ToDecimal(this.EvaluarFuncion(Nombre, Funcion, xb))); parametroslagrange.ValoresX = ValoresX; parametroslagrange.ValoresY = ValoresY; parametroslagrange.ValorX = Convert.ToDecimal(parametros.ValorExtremo1); var Rfxa = MinimosCuadrados.ResolverPolinomioLagrange(parametroslagrange); parametroslagrange.ValorX = Convert.ToDecimal(xi); var Rfxi = MinimosCuadrados.ResolverPolinomioLagrange(parametroslagrange); parametroslagrange.ValorX = Convert.ToDecimal(parametros.ValorExtremo2); var Rfxb = MinimosCuadrados.ResolverPolinomioLagrange(parametroslagrange); var h = (parametros.ValorExtremo2 - parametros.ValorExtremo1) / 2; double Area = Convert.ToDouble((h / 3) * (Convert.ToDouble(Rfxa.Imagen) + (4 * Convert.ToDouble(Rfxi.Imagen)) + Convert.ToDouble(Rfxb.Imagen))); ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); resultado.ValorIntegral = Convert.ToDecimal(Area); return(resultado); }
public double ResolverSimpson38(ParametrosIntegracionNumerica parametros, double x0) { double h = ((parametros.ValorExtremo2 - x0) / 3); Argument xi0 = new Argument("x", x0); var x1 = x0 + h; Argument xi1 = new Argument("x", x1); var x2 = x1 + h; Argument xi2 = new Argument("x", x2); var x3 = parametros.ValorExtremo2; Argument xi3 = new Argument("x", x3); double fx0 = this.EvaluarFuncion(Nombre, Funcion, xi0); double fx1 = this.EvaluarFuncion(Nombre, Funcion, xi1); double fx2 = this.EvaluarFuncion(Nombre, Funcion, xi2); double fx3 = this.EvaluarFuncion(Nombre, Funcion, xi3); double Area = ((h * 3) / 8) * (fx0 + 3 * fx1 + 3 * fx2 + fx3); return(Area); }
public ResultadoIntegracionNumerica ResolverTrapecioMultiple(ParametrosIntegracionNumerica parametros) { this.ObtenerParametros(parametros); double h = ((parametros.ValorExtremo2 - parametros.ValorExtremo1) / parametros.CantidadSubintervalos); double fxi = 0; var contador = parametros.ValorExtremo1; while (contador < parametros.ValorExtremo2) { contador = contador + h; Argument xi = new Argument("x", contador); fxi += this.EvaluarFuncion(Nombre, Funcion, xi); } double Area = ((h / 2) * (this.EvaluarFuncion(Nombre, Funcion, xa) + 2 * fxi + (this.EvaluarFuncion(Nombre, Funcion, xb)))); ResultadoIntegracionNumerica resultado = new ResultadoIntegracionNumerica(); resultado.ValorIntegral = Convert.ToDecimal(Area); return(resultado); }