예제 #1
0
파일: Form1.cs 프로젝트: EzeTardieu/MatSup
 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;
             }
         }
     }
 }
예제 #2
0
        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);
        }