private void Button1_Click(object sender, EventArgs e) { if (interpolador.tablaPuntosVacia()) { MessageBox.Show("Error: Debe agregar al menos un punto para continuar", "Error al calcular polinomio interpolante", MessageBoxButtons.OK); } else { if (!polinomioCalculado) { if (metodos.Text == "") { MessageBox.Show("Error: Debe seleccionar un método para continuar", "Error al calcular polinomio interpolante", MessageBoxButtons.OK); } else { polInterpolante = interpolador.obtenerPolinomioInterpolador(); ContainerPolinomioInterpolante.Text = polInterpolante.Formatear(); if (mostrarPasosBox.Checked) { CargarPasos(); } ContainerGrado.Text = polInterpolante.getGrado().ToString(); ContainerEquiespaciados.Text = interpolador.Equiespaciados(); polinomioCalculado = true; } } else { if (interpolador.necesitaRecalcular(polInterpolante)) { ContainerPasos.Text += "El polinomio interpolante no es el mismo calculado anteriormente, se va a recalcultar..." + Environment.NewLine; polinomioCalculado = false; Button1_Click(sender, e); } else { ContainerPasos.Text += "El polinomio interpolante se mantiene igual con los nuevos puntos, no se necesita recalcular" + Environment.NewLine; } } } }
public bool necesitaRecalcular(Polinomio polInterpolante) { bool respuesta = false; if (polInterpolante.getGrado() >= tablaPuntos.Count) { return(true); } foreach (var par in tablaPuntos) { float key = par.Key; float value = par.Value; respuesta = polInterpolante.Evaluar(key) != value; if (respuesta == true) { return(respuesta); } } return(respuesta); }