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); }
private void button2_Click_1(object sender, EventArgs e) { bool band = true; int numero = Convert.ToInt32(this.textBox1.Text); double[] vecx = new double[numero]; double[] vecy = new double[numero]; List <TextBox> lista = panel1.Controls.OfType <TextBox>().ToList(); if (VerificarDatosMetodo(lista) == true && this.textBox2.Text != "") { for (int i = 0; i < numero; i++) { vecx[i] = Convert.ToDouble(lista.ElementAt(i).Text); } int c = 0; int n = numero * 2; for (int j = numero; j < n; j++) { vecy[c] = Convert.ToDouble(lista.ElementAt(j).Text); c++; } } else { MessageBox.Show("Complete todos los campos"); band = false; } if (band == true) { DatosParametros datos = new DatosParametros(); double num = Convert.ToDouble(this.textBox2.Text); datos.NumPares = numero; datos.X = vecx; datos.Y = vecy; datos.Grado = numero - 1; ResultadoLagranje Result = new ResultadoLagranje(); FormularioPrincipal formularioprincipal = this.Owner as FormularioPrincipal; if (formularioprincipal != null) { Result = formularioprincipal.InterpolacionPolinomioLagranje(datos, num); string variable = ""; variable = Convert.ToString("RESULTADO: " + Result.Interpolacion); MessageBox.Show(variable); } } }
//LAGRANJE public ResultadoLagranje InterpolacionPolinomioLagranje(DatosParametros Datos, double ValorX) { ResultadoLagranje Resultado = new ResultadoLagranje(); double[] ResultadosP = new double[Datos.NumPares]; for (int z = 0; z < Datos.NumPares; z++) { double Nominadores = 1; double Denominador = 1; for (int i = 0; i < Datos.NumPares; i++) { if (i != z) { Nominadores = Nominadores * (ValorX - Datos.X[i]); Denominador = Denominador * (Datos.X[z] - Datos.X[i]); } } Resultado.Interpolacion += Datos.Y[z] * (Nominadores / Denominador); } return(Resultado); }