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);
        }
Ejemplo n.º 2
0
        private void btnCalcular_Click(object sender, EventArgs e)
        {
            List <decimal> ValoresX = new List <decimal>();
            List <decimal> ValoresY = new List <decimal>();

            int cantidadvalores = Convert.ToInt32(txtboxCantidadValores.Text);

            for (int i = 0; i <= cantidadvalores - 1; i++)
            {
                ValoresX.Add(Convert.ToDecimal(Grilla.Rows[i].Cells[0].Value));
                ValoresY.Add(Convert.ToDecimal(Grilla.Rows[i].Cells[1].Value));
            }

            ResultadoMinimosCuadrados resultado = new ResultadoMinimosCuadrados();

            if (comboMetodo.Text == "REGRESION LINEAL")
            {
                ParametrosMinimosCuadrados parametros = new ParametrosMinimosCuadrados();
                parametros.ValoresX = ValoresX;
                parametros.ValoresY = ValoresY;

                resultado = MinimosCuadrados.ResolverCurvaLineal(parametros);

                this.labelResultado.Visible            = true;
                this.labelResultadoAjuste.Visible      = true;
                this.labelResultadoCoeficiente.Visible = true;
                this.labelCoeficiente.Visible          = true;
                this.labelRecta.Visible  = true;
                this.labelAjuste.Visible = true;
                this.Resultado.Visible   = true;
                this.txtboxRecta.Visible = true;

                this.labelResultadoAjuste.Text      = resultado.Ajuste;
                this.txtboxRecta.Text               = resultado.RectaMejorAjuste;
                this.Resultado.Text                 = "SE ENCONTRO LA RECTA DE MEJOR AJUSTE";
                this.labelResultadoCoeficiente.Text = Convert.ToString(resultado.CoeficientedeCorrelacion) + " %";
            }
            else
            {
                if (comboMetodo.Text == "REGRESION POLINOMIAL")
                {
                    ParametrosMinimosCuadrados parametros = new ParametrosMinimosCuadrados();
                    parametros.ValoresX = ValoresX;
                    parametros.ValoresY = ValoresY;

                    if (txtGrado.Text == "")
                    {
                        MessageBox.Show("No se colocaron correctamente los parametros", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.btnCalcular.Enabled = true;
                        return;
                    }

                    parametros.Grado = Convert.ToInt32(txtGrado.Text);
                    if (textBoxValorX.Text != "")
                    {
                        parametros.ValorX = Convert.ToDecimal(textBoxValorX.Text);
                    }

                    resultado = MinimosCuadrados.ResolverCurvaPolinomial(parametros);

                    this.labelResultado.Visible            = true;
                    this.labelResultadoAjuste.Visible      = true;
                    this.labelResultadoCoeficiente.Visible = true;
                    this.labelCoeficiente.Visible          = true;
                    this.labelRecta.Visible  = true;
                    this.labelAjuste.Visible = true;
                    this.Resultado.Visible   = true;
                    this.txtboxRecta.Visible = true;
                    if (textBoxValorX.Text == "")
                    {
                        this.labelImagenY.Visible          = false;
                        this.labelImagenYResultado.Visible = false;
                    }
                    else
                    {
                        this.labelImagenY.Visible          = true;
                        this.labelImagenYResultado.Visible = true;
                    }

                    this.labelResultadoAjuste.Text      = resultado.Ajuste;
                    this.txtboxRecta.Text               = resultado.RectaMejorAjuste;
                    this.Resultado.Text                 = "SE ENCONTRO LA RECTA DE MEJOR AJUSTE";
                    this.labelResultadoCoeficiente.Text = Convert.ToString(resultado.CoeficientedeCorrelacion) + " %";
                    this.labelImagenYResultado.Text     = Convert.ToString(resultado.Imagen);
                }
                else
                {
                    ParametrosMinimosCuadrados parametros = new ParametrosMinimosCuadrados();
                    parametros.ValoresX = ValoresX;
                    parametros.ValoresY = ValoresY;
                    if (textBoxValorX.Text != "")
                    {
                        parametros.ValorX = Convert.ToDecimal(textBoxValorX.Text);
                    }

                    resultado = MinimosCuadrados.ResolverPolinomioLagrange(parametros);

                    this.labelResultado.Visible            = true;
                    this.labelResultadoAjuste.Visible      = false;
                    this.labelResultadoCoeficiente.Visible = false;
                    this.labelCoeficiente.Visible          = false;
                    this.labelRecta.Visible  = true;
                    this.labelAjuste.Visible = false;
                    this.Resultado.Visible   = true;
                    this.txtboxRecta.Visible = true;
                    if (textBoxValorX.Text == "")
                    {
                        this.labelImagenY.Visible          = false;
                        this.labelImagenYResultado.Visible = false;
                    }
                    else
                    {
                        this.labelImagenY.Visible          = true;
                        this.labelImagenYResultado.Visible = true;
                    }

                    this.labelResultadoAjuste.Text      = Convert.ToString(resultado.Imagen);
                    this.txtboxRecta.Text               = resultado.RectaMejorAjuste;
                    this.Resultado.Text                 = "SE ENCONTRO LA RECTA DE MEJOR AJUSTE";
                    this.labelResultadoCoeficiente.Text = Convert.ToString(resultado.CoeficientedeCorrelacion);
                    this.labelImagenYResultado.Text     = Convert.ToString(resultado.Imagen);
                }
            }
        }