private void button_Calcular_Click(object sender, EventArgs e) { var paramtros = new ParametrosRegresion(); double valorX = Convert.ToDouble(textBox_valX.Text); //recorre filas var cont = 0; bool uno = true; foreach (DataGridViewRow row in dataGridView1.Rows) { cont++; if (cont <= int.Parse(textBox_cantPares.Text)) {//recorre las celdas de la columnas foreach (DataGridViewCell cel in row.Cells) { if (uno == true) { paramtros.X.Add(Convert.ToDouble(cel.Value)); uno = false; } else { paramtros.Y.Add(Convert.ToDouble(cel.Value)); uno = true; } } } } paramtros.NumPares = int.Parse(textBox_cantPares.Text); var resul = metodoLagranje.PolinomioLagranje(paramtros, valorX); textBox_Interpolacion.Text = resul.Interpolacion.ToString(); }
public ResultadoLagranje PolinomioLagranje(ParametrosRegresion parametros, double valorX) { var resultado = new ResultadoLagranje(); double x = valorX; double sumaY = 0; for (int i = 0; i < parametros.X.Count; i++) { double numerador = 1; double denominador = 1; for (int j = 0; j < parametros.X.Count; j++) { if (i != j) { numerador = (x - parametros.X[j]) * numerador; denominador = (parametros.X[i] - parametros.X[j]) * denominador; } } sumaY = (numerador / denominador) * parametros.Y[i] + sumaY; } resultado.Interpolacion = sumaY; return(resultado); }
public ResultadoRegresion MinimosCuadrados(ParametrosRegresion parametros) { var resultado = new ResultadoRegresion(); var numeroDePares = parametros.NumPares; double sumatoriaX = parametros.X.Sum(); double sumatoriaY = parametros.Y.Sum(); double sumatoriaXCuadrado = 0; double promedioX = parametros.X.Sum() / parametros.NumPares; double promedioY = parametros.Y.Sum() / parametros.NumPares; foreach (var item in parametros.X) { sumatoriaXCuadrado = (sumatoriaXCuadrado + (item * item)); } double sumatoriaXporY = 0; for (int i = 0; i < numeroDePares; i++) { sumatoriaXporY = sumatoriaXporY + (parametros.X[i] * parametros.Y[i]); } double deltaA1 = (numeroDePares * sumatoriaXporY) - (sumatoriaX * sumatoriaY); double delta = (numeroDePares * sumatoriaXCuadrado) - (sumatoriaX * sumatoriaX); resultado.Pendiente = deltaA1 / delta; resultado.OrdenadaOrigen = promedioY - (resultado.Pendiente * promedioX); return(resultado); }
private void button_Calcular_Click(object sender, EventArgs e) { var paramtros = new ParametrosRegresion(); //recorre filas var cont = 0; bool uno = true; foreach (DataGridViewRow row in dataGridView1.Rows) { cont++; if (cont <= int.Parse(textBox_cantPares.Text)) {//recorre las celdas de la columnas foreach (DataGridViewCell cel in row.Cells) { if (uno == true) { paramtros.X.Add(Convert.ToDouble(cel.Value)); uno = false; } else { paramtros.Y.Add(Convert.ToDouble(cel.Value)); uno = true; } } } } paramtros.NumPares = int.Parse(textBox_cantPares.Text); var resul = metodosRegresion.MinimosCuadrados(paramtros); textBox_Recta.Text = string.Format(" " + resul.Pendiente.ToString("N2") + "x + " + resul.OrdenadaOrigen.ToString("N2")); }
private void button_Calcular_Click(object sender, EventArgs e) { var paramtros = new ParametrosRegresion(); paramtros.Error = int.Parse(textBox_Error.Text); //recorre filas var cont = 0; bool uno = true; foreach (DataGridViewRow row in dataGridView1.Rows) { cont++; if (cont <= int.Parse(textBox_CantidadPares.Text)) {//recorre las celdas de la columnas foreach (DataGridViewCell cel in row.Cells) { if (uno == true) { paramtros.X.Add(Convert.ToDouble(cel.Value)); uno = false; } else { paramtros.Y.Add(Convert.ToDouble(cel.Value)); uno = true; } } } } paramtros.NumPares = int.Parse(textBox_CantidadPares.Text); paramtros.Grado = int.Parse(textBox_Grado.Text); var m = metodosRegresion.MinimosCuadradosPolinomioGradoN(paramtros); foreach (var item in m.Resul) { dataGridView2.Rows.Add(item); } textBoxEfectividad.Text = m.Efectividad.ToString("N2"); textBox_Gradfinal.Text = m.GradoFinal.ToString(); }
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); }