예제 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            var prueba = new ParametrosEcuaciones {
                NumIncognitas = int.Parse(textBox_NumIncognitas.Text)
            };
            var coef = new List <double>();
            //coef.Add(5); coef.Add(2); coef.Add(0); coef.Add(2);
            //coef.Add(2); coef.Add(1); coef.Add(-1); coef.Add(0);
            //coef.Add(2); coef.Add(3); coef.Add(-1); coef.Add(3);

            //recorre filas
            var cont = 0;

            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                cont++;
                //recorre las celdas de la columnas
                if (cont <= int.Parse(textBox_NumIncognitas.Text))
                {
                    foreach (DataGridViewCell cel in row.Cells)
                    {
                        coef.Add(Convert.ToDouble(cel.Value));
                    }
                }
            }

            prueba.Coeficientes = coef;
            var resul = metodosSistemaEcuaciones.GaussJordan(prueba);


            foreach (var item in resul.Resultados)
            {
                dataGridView2.Rows.Add(item);
            }
        }
예제 #2
0
        public ResultadoRegresion MinimosCuadradosPolinomioGradoN(ParametrosRegresion parametros)
        {
            var resul = new ResultadoRegresion();

            double sumatoriaX = parametros.X.Sum();
            double sumatoriaY = parametros.Y.Sum();
            double r          = 0;

            while (parametros.Grado <= 10 && r <= parametros.Error)
            {
                double[,] matriz = new double[parametros.Grado + 1, parametros.Grado + 2];

                resul = null;
                resul = new ResultadoRegresion();

                var pot = 0;
                for (int columna = 0; columna < parametros.Grado + 1; columna++)
                {
                    if (columna > 0)
                    {
                        pot = columna;
                        for (int i = 0; i < parametros.Grado + 1; i++)
                        {
                            matriz[i, columna] = RetornarSumXpotencia(parametros.X, pot);
                            pot++;
                        }
                    }
                    else if (columna == 0)
                    {
                        pot          = 1;
                        matriz[0, 0] = parametros.NumPares;
                        for (int i = 1; i < parametros.Grado + 1; i++)
                        {
                            matriz[i, columna] = RetornarSumXpotencia(parametros.X, pot);
                            pot++;
                        }
                    }
                }

                for (int i = 0; i < parametros.Grado + 1; i++)
                {
                    if (i != 0)
                    {
                        pot = 1;
                        matriz[i, parametros.Grado + 1] = RetornarXPorY(i, parametros.X, parametros.Y);
                        pot++;
                    }
                    else
                    {
                        matriz[i, parametros.Grado + 1] = parametros.Y.Sum();
                    }
                }

                //var SistemaDeEcucuaciones = new SistemaDeEcuaciones();

                var param = new ParametrosEcuaciones();
                param.NumIncognitas = parametros.Grado + 1;

                for (int i = 0; i < parametros.Grado + 1; i++)
                {
                    for (int c = 0; c < parametros.Grado + 2; c++)
                    {
                        param.Coeficientes.Add(matriz[i, c]);
                    }
                }



                var resultadoGauss = metodosSistemaEcuaciones.GaussJordan(param);

                r = CalcularR(parametros.X, parametros.Y, resultadoGauss.Resultados);

                parametros.Grado++;

                resul.Efectividad = r;
                resul.Resul       = resultadoGauss.Resultados;
                resul.GradoFinal  = parametros.Grado - 1;
            }

            return(resul);
        }