METODOS DE INTERPOLACIÓN
Introducción: Se trata de obtener un polinomio (polinomio de interpolación) que cumpla: f(x )≈ p(x). en una serie de n puntos x 0, x 1, …, x n.
Dos casos típicos: 1) Los datos x 0, x 1, …, x n, se han obtenido experimentalmente. 2) Una función complicada f(x) la aproximamos a un polinomio. En ambos casos hallamos el polinomio de interpolación p(x). Métodos de hallar el polinomio de interpolación p(x): * Método de Lagrange * Método de Newton
G1. Polinomio de interpolación de Lagrange Sea una función f(x), de tal manera que conozcamos su valor en cada uno de n+1 puntos: f(x 0 ), f(x 1 ), …, f(x n ). 1º. Obtenemos los “ multiplicadores o coeficientes de Lagrange”): Son n+1 coeficientes : con k=0, 1, 2, …, n. i = 0, 1, 2, …, n k = 0, 1, 2, …, n
Propiedad de los coeficientes L k (x): El coeficiente L k (x) se anula en cada punto x i, excepto en el x k que tiene el valor 1 (valor máximo). Ejemplo : Supongamos como soporte los seis puntos siguientes, x 0 = 1, x 1 = 3, x 2 = 4, x 3 = 6, x 4 = 8, x 5 = 9.
El polinomio de interpolación deLagrange se obtiene:
EJEMPLO: Sea la función f(x)=e x. Supongamos conocido el valor que toma esta función en los cuatro puntos: x 0 =2, x 1 =2.5, x 2 =3, x 3 =4, es decir: f(x 0 ) = , f(x 1 ) = , f(x 2 ) = , f(x 3 ) = Hallemos el polinomio de interpolación de Lagrange:
El polinomio de interpolación de Lagrange es: p(x) = f(x 0 ) L 0 (x) + f(x 1 ) L 1 (x) + f(x 2 ) L 2 (x) + f(x 3 ) L 3 (x) p(x) = x 3 – x x –
G2. Polinomio de interpolación de Newton. La fórmula de interpolación de Newton viene dada por: Siendo las llamadas diferencias divididas de f para los x 0, x 1, …, x n. En el caso de 4 puntos
Algunos ejemplos: * *
El polinomio de interpolación de Newton:
Ejemplo: Vamos a obtener el polinomio de interpolación para la función f(x) = e x, en los puntos {2, 2.5, 3, 4}, pero en esta ocasión por el método de Newton. p(x) = (x – 2) (x – 2) (x – 2.5) (x – 2) (x – 2.5) (x – 3) p(x) = x 3 – x x –
G2. Método de los Mínimos Cuadrados (Cuadratura Gaussiana) Supongamos que al realizar una serie de mediciones de dos variables (x, y), se ha obtenido una distribución de pares de valores o puntos: (x 1, y 1 ), (x 2, y 2 ), …, (x i, y i ), …, (x n, y n ). El método de los mínimos cuadrados busca una curva, como se indica en la gráfica, de tal manera que se minimice la suma de los cuadrados de los errores, e i, cometidos al sustituir los puntos por la ordenada y(x i ). y = ax m + bx m-1 + …+ c
Matemáticamente equivale a un problema de hallar un mínimo para una función de m+1 variables: f(a, b, …, c) EJEMPLO: Apliquemos el método para el caso de un polinomio de grado 2 (función polinómica), es decir, mediante una parábola: y = ax 2 + bx+ c Si observamos la figura anterior, tenemos: e i = ax i 2 + bx i + c – y i → e i 2 = (ax i 2 + bx i + c – y i ) 2. Por tanto la suma de los cuadrados de los errores es:
Se trata, pues, de minimizar esta función de tres variables, f(a, b, c). Las condiciones de extremo se dan allí donde se anulan las derivadas primeras de f (x): Condiciones de mínimo:
Ejemplo: Hay que hallar un polinomio de interpolación (de grado 2) para la tabla de datos: x 1 = 1, x 2 = 2, x 3 = 3. y 1 = 3, y 2 = 4, y 3 = 6. Solución: O sea, Soluc.: a = 5, b= -18.5, c = 18 Polinomio de intepolación: p(x) = 5 x 2 – 18.5 x + 18
Spline (“Special Line”) cúbica Si como polinomio interpolatorio tomamos un polinomio de grado 3: P(x) = ax 3 + bx 2 + cx + d, recibe el nombre de “Spline”.
Interpolación de datos 1-D con MATLAB. >> yi = interp1(x, y, xi, método); >> plot(x, y, 'o', xi, yi); Sean conocidos una tabla de datos: x = [1, 1.2, 1.3, 1.5, …] y = [4.254, 3.097, 5.671, …] Métodos. - ‘nearest’ - ‘linear’ (por defecto) - ‘spline’ Cubic spline interpola. - ‘cubic’
Ejemplo 1: >> x = 0:10; >> y = exp(x); >> xi = 0:0.2:10; >> yi = interp1(x, y, xi); >> plot(x, y, 'o‘, xi, yi);
Ejemplo 2: Hay que interpolar mediante ‘spline’ los datos de la tabla siguiente: x y >> tab = [ ; ] >> x = tab(1, :); y = tab(2, :); >> xi = 2:0.25:4.5; >> yi = interp1(x, y, xi, 'spline'); >> plot(x, y, 'o', xi, yi)
Ejemplo 3: Tenemos dos vectores con los censos (por decadas) en el siglo XX, en millones de personas: >> t = 1900:10:1990; >> p = [ ]; Por interpolación podemos estimar la población en cualquier año: >> t = 1900:10:1990; >> p = [ ]; >> interp1(t, p, 1975) ans =
>> t = 1900:10:1990; >> p = [ ]; >> x = 1900:1:2000; >> y = interp1(t, p, x, 'spline'); plot(t,p,'o',x,y) Podemos representar la población anual: