|
Polinomio de interpolación de Lagrange: C++ Linux
Publicado el: 06-01-2007 @ 03:32 pm
Si tenemos n pares ordenados correspondientes a y como una función de x, siempre es posible unirlos mediante una función polinómica a la cual denominaremos polinomio de interpolación. El procedimiento numérico de Lagrange, que da lugar a un polinomio de grado n-1, es el que nos ocupa para el programa escrito en C++ (*.zip) que se encuentra en este link: http://blogel.espaciolinux.info/wp-content/archivos/zeka/LAGRANGE.zip Lo emplearemos para encontrar el polinomio de interpolación de Lagrange (de grado 2) a partir de tres pares ordenados (x, f(x)) que generé usando la ecuación de la parábola: f(x) = x² + 2x -5 Los valores utilizados fueron los siguientes: x y
0 -5 1 -2 2 3
Estos valores, conjuntamente con el número de pares ordenados (colocado al inicio), se incluyeron en el archivo datos/datos.in y se introducen desde el programa principal. El algoritmo requiere la cabecera monomio2.h, que incluye unas ligeras modificaciones en la ya conocida monomio.h, para permitir en este caso determinar los desarrollos de (x-x1).( x-x2) ... (x-xn), en lugar de (x+x1).( x+x2) ... (x+xn), para cada i diferente de k. Después de desempaquetar el programa, abrimos una cónsola y nos vamos hacia la carpeta LAGRANGE y lo compilamos con: g++ lagrange.c++ -o lagrange La ejecución del mismo (./lagrange [Enter]) produce esta salida:
donde se verifica que los coeficientes del polinomio cuadrático obtenido ajustan perfectamente a la ecuación f(x) = x² + 2x -5 ya referida. Sin embargo, no nos emocionemos tanto por este éxito. Si incluimos, por ejemplo, 10 pares ordenados para los valores experimentales de una variable como función de otra, el polinomio que obtendríamos sería de grado 9 y, aunque pasará por todos los puntos considerados, la gráfica que obtendremos posiblemente se comportará de una manera no deseada fuera de ellos. Existen técnicas de interpolación más poderosas como la de los splines pero, este caso, es válido e interesante como ejercicio de programación.

Ultima actualización el 04-01-2008 @ 08:27 am
|