ESCUELA SUPERIOR DE NÁUTICA Y MÁQUINAS NAVALES / NAUTIKAKO ETA ITSASONTZI MAKINETAKO GOI ESKOLA TEKNIKOA FUNDAMENTOS MATEMÁTICOS G - Métodos de Interpolación Polinomio de interpolación de Lagrange. Polinomio de interpolación de Newton. Interpolación por el método de los Mínimos Cuadrados (Cuadratura gaussiana). Objetivo: El alumno debe llegar a la interpolación de una función y = f(x), utilizando diversos métodos, por medio de polinomios de grado n, a partir del valor que toma la función en n puntos determinados. Se llegará a los multiplicadores de Lagrange, que se utilizan mucho en el Cálculo Numérico. Con su ayuda podemos obtener fácilmente polinomios de interpolación para funciones. Es interesante hacer alguna práctica de su obtención de manera manual, aunque el alumno llegue también a utilizar métodos informáticos directos para obtenerla. Será importante en todo momento controlar el error de aproximación cometido al sustituir la función f(x) por su correspondiente polinomio de interpolación p(x). Introducción: Consideremos que nos encontramos en la siguiente situación, conocemos el valor que toma la función f(x) en una serie de n puntos x0, x1, …, xn (véase el gráfico), pero sin embargo, no conocemos la forma explícita de dicha función f(x). Lo que hemos de hacer es interpolar esos datos, para obtener un polinomio (polinomio de interpolación) que cumpla f(x )≈ p(x). Por lo general, hallamos el polinomio de interpolación p(x) cuando disponemos de un conjunto n de datos obtenidos experimentalmente, de esta manera manejamos el polinomio p(x) como una aproximación a la función f(x). En ocasiones, también podemos obtener el polinomio de interpolación p(x) de una función f(x) conocida, pero de enorme complejidad, puesto que un polinomio siempre es más fácil de manejar. 1 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(x0), f(x1), …, f(xn). Consideremos las siguientes expresiones polinómicas (llamadas “multiplicadores o coeficientes de Lagrange”): Lk ( x ) ( x x0 ) ( x x1 ) ... ( x xk 1 ) ( x xk 1 ) ... ( x xn ) ( xk x0 ) ( xk x1 ) ... ( xk xk 1 ) ( xk xk 1 ) ... ( xk xn ) Son n+1 multiplicadores, para k=0, 1, 2, …, n+1. Se suelen expresar abreviadamente en la forma: n Lk ( x ) i 0 i k ( x xi ) ( xk xi ) (i = 0, 1, …, k) Es decir, para el multiplicador k-ésimo, están en el numerador los productos de todos los posibles (x – xi) excepto el (x – xk), y en el denominador los productos de todos los (xk – xi) excepto el (xk – xk). Propiedad de los coeficientes Lk(x): Tal como están definidos estos coeficientes, es obvio que poseen la siguiente propiedad: El coeficiente Lk(x) se anula en cada punto xi, excepto en el xk que tiene el valor 1 (valor máximo). Consideremos un ejemplo gráfico, supongamos como soporte los seis puntos siguientes, x0 = 1, x1 = 3, x2 = 4, x3 = 6, x4 = 8, x5 = 9. Por ejemplo, L3(x) se obtendría así: ( x 1) ( x 3) ( x 4) ( x 8) ( x 9) L3 ( x) (6 1) (6 3) (6 4) (6 8) (6 9) Una expresión polinómica que al representarla gráficamente queda: Donde se aprecia la propiedad indicada. Pues bien, el polinomio de interpolación deLagrange se obtiene como la siguiente combinación lineal de estos Lk(x): n p( x) f ( xk ) Lk ( x ) k 0 2 [1] EJEMPLO: Consideremos la función f(x)=ex. Supongamos conocido el valor que toma esta función en los cuatro puntos: x0=2, x1=2.5, x2=3, x3=4, es decir: f(x0) = 7.3890, f(x1) = 12.1825, f(x2) = 20.0855, f(x3) = 54.5980 Pasemos a hallar el polinomio de interpolación de Lagrange: ( x 2.5) ( x 3) ( x 4) x 3 9.5 x 2 29.5 x 30 (2 2.5) (2 3) (2 4) ( x 2) ( x 3) ( x 4) L1 ( x) 2.66667 x3 24 x 2 69.3333 x 64 (2.5 2) (2.5 3) (2.5 4) ( x 2) ( x 2.5) ( x 4) L2 ( x ) 2 x 3 17 x 2 46 x 40 (3 2) (3 2.5) (3 4) ( x 2) ( x 2.5) ( x 3) L3 ( x ) 0.3333 x 3 3.5 x 2 6.16667 x 5 (4 2) (4 2.5) (4 3) L0 ( x) Por tanto, el polinomio de interpolación de Lagrange será el siguiente: p(x) = f(x0) L0(x) + f(x1) L1(x) + f(x2) L2(x) + f(x3) L3(x) es decir, p(x) = 7.3890 L0(x) + 12.1825 L1(x) + 20.0855 L2(x) + 54.5980 L3(x) que tras sustituir los Lk(x) hallados queda: p(x) = 3.12601 x3 – 17.2259 x2 + 39.432 x – 27.5792 Para comprobar la gran aproximación existente entre este polinomio y la función f(x)=ex, correspondiente al intervalo entre los puntos 2 y 4, podemos representarlas gráficamente: Las dos gráficas coinciden en el rango de x 2-4. 3 G2. Polinomio de interpolación de Newton Puede demostrarse matemáticamente que dado n+1 puntos xi y los valores que toma una función f(x) en cada uno de esos puntos, existe un único polinomio p(x) de grado n que aproxima con un mínimo error esa función en el rango de puntos xi . Ese polinomio es el llamado polinomio de interpolación de Lagrange que puede obtenerse de la forma que hemos visto. El método de interpolación de Newton es otra manera de obtener este mismo polinomio p(x). El método de interpolación de Newton ha venido utilizándose por su facilidad de cálculo, sobre todo en épocas en las que no se disponía las máquinas que ahora disponemos. Aunque este método pueda parecer más largo que el de Lagrange, su ventaja está en que utiliza un algoritmo adaptativo, lo que desde el punto de vista computacional es muy ventajoso (un computador emplea mucho menos tiempo para obtenerlo). La fórmula de interpolación de Newton viene dada por: i 1 n p( x) f x0 , x1 ,..., xi i 0 x x j [2] j 0 Siendo f x0 , x1 ,..., xi las llamadas diferencias divididas1 de f para los x0, x1, …, xn. Las diferencias divididas son unos números reales que suelen obtenerse fácilmente a partir de una tabla como la siguiente (para el caso de 4 puntos) x0 f ( x0 ) f x0 , x1 x1 f ( x1 ) f x0 , x1 , x2 f x1 , x2 x2 f ( x2 ) f x0 , x1 , x2 , x3 f x1 , x2 , x3 f x2 , x3 x3 f ( x3 ) f x2 , x3 f x1 , x2 , es decir, la diferencia de las x3 x1 dos cantidades que se encuentran a su izquierda, dividida entre la resta de los xi de los extremos de su paréntesis angular. Donde por ejemplo Otro ejemplo: f x1 , x2 , x3 f x0 , x1 , x2 , x3 f x1 , x2 , x3 f x0 , x1 , x2 . x3 x0 1 Las diferencia divididas, así como las diferencias finitas aparecen en las tablas de los libros de Cálculo Numérico. 4 Calculada toda esta tabla de diferencias divididas, el polinomio de interpolación se obtiene según la fórmula [2]: p( x) f ( x0 ) f x0 , x1 ( x x0 ) f x0 , x1 , x2 ( x x0 )( x x1 ) f x0 , x1 , x2 , x3 ( x x0 )( x x1 )( x x2 ) Como ejemplo práctico vamos a volver a obtener el polinomio de interpolación para la función f(x) = ex, en los puntos{2, 2.5, 3, 4}, pero en esta ocasión lo hacemos por el método de Newton. Las diferencias divididas para este caso son: x0 2.0 7.38906 9.58688 x1 2.5 12.1825 6.21912 15.806 x2 3.0 20.0855 3.1260 12.471133 34.5127 x3 4.0 54.5982 A continuación establecemos el polinomio de interpolación según la fórmula [2]: p(x) = 7.38906 + 9.58688 (x – 2) + 6.21912 (x – 2) (x – 2.5) + + 3.1260 (x – 2) (x – 2.5) (x – 3) Después de reducir los términos llegamos a: p(x) = 3.126 x3 – 17.2259 x2 + 39.4318 x – 27.5791 que al compararlo con el obtenido por el método de Lagrange observamos que son básicamente el mismo polinomio. 5 G3. 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: (x1, y1) , (x2, y2) , … , (xi, yi) , … , (xn, yn) . Se trata de buscar un polinomio (grado m) que se ajuste lo mejor posible a esa distribución de puntos, en la forma: y = axm + bxm-1+ …+ c 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, ei , cometidos al sustituir los puntos por la ordenada y(xi). Matemáticamente equivale a un problema de hallar un mínimo para una función de m+1 variables: f(a, b, …, c) Nótese que las variables son los coeficientes del polinomio a hallar. Para aclarar los conceptos apliquemos el método para el caso de un polinomio de grado 2 (función polinómica), es decir, mediante una parábola: y = ax2 + bx+ c Si observamos la figura de arriba, tenemos en el punto i-ésimo un error: ei = axi2 + bxi+ c – yi → ei2 = (axi2 + bxi+ c – yi )2 . Por tanto la suma de los cuadrados de los errores es: n n i 1 i 1 2 ei2 axi2 bxi c yi f (a, b, c) Se trata, pues, de minimizar esta función de tres variables, f(a, b, c) 6 Las condiciones de extremo se dan allí donde se anulan las derivadas primeras de f : n f a ' 2 axi2 bxi c yi . xi2 0 i 1 n fb ' 2 axi2 bxi c yi . xi 0 i 1 n f c ' 2 axi2 bxi c yi .1 0 i 1 Sacando el factor 2, y simplificándolo tenemos las condiciones de mínimo: n ax 2 i bxi c yi . xi2 0 i 1 n ax 2 i bxi c yi . xi 0 i 1 n ax 2 i bxi c yi .1 0 i 1 Que es un sistema de 3 ecuaciones con e incógnitas, del cual se hallan a, b, c. 7 * Un ejemplo de cuadratura gaussiana. Por medio de cuadratura gaussiana hay que hallar un polinomio de interpolación (de grado 2) para la tabla de datos siguiente: x1 = 1, x2 = 2, x3 = 3 . y1 = 3, y2 = 4, y3 = 6 . Solución: En este caso vamos a tomar para la cuadratura gaussiana un polinomio de grado 2, que tiene la forma: P(x) = a x2+b x + c. Las condiciones de extremo para este caso son las soluciones del sistema: (a.12 b.1 c 3).12 (a.22 b.2 c 4).22 (a.32 b.3 c 6).32 0 2 1 2 1 2 1 (a.1 b.1 c 3).1 (a.2 b.2 c 4).2 (a.3 b.3 c 6).3 0 (a.12 b.1 c 3).10 (a.2 2 b.2 c 4).20 (a.32 b.3 c 6).30 0 Operando, queda reducido al sistema de ecuaciones lineales: 98 a 36 b 14 c 73 0 36 a 14 b 6 c 29 0 14 a 6 b 3 c 13 0 Cuyas soluciones son: a=5, b=-18.5, c= 18. El polinomio de interpolación por cuadratura gaussiana es p(x) = 5x2 -18.5 x + 18. 8 * Splines (Special Lines) cúbicas Si como polinomio interpolatorio tomamos un polinomio de grado 3: P(x) = ax3 + bx2 + cx + d, recibe el nombre de “Spline”. * Interpolación de datos 2-D con MATLAB. Sean conocidos una tabla de datos: x = [1, 1.2, 1.3, 1.5, …] y = [4.254, 3.097, 5.671, …] El primer punto sería el (1, 4.254), el segundo el (1.2, 3.097), etc. La manera de realizar la interpolación de estos datos medinte la función interp1 de MATLAB es: >> yi = interp1(x, y, xi, método); >> plot(x, y, 'o', xi, yi); Donde pondremos en método el método de interpolación deseado: Métodos - ‘nearest’ - ‘linear’ - ‘spline’ - ‘cubic’ . (por defecto) Cubic spline interpolation Por otra parte la ‘o’ en el interior del plot señala cada punto con un circulito (una ‘o’). Hay otras opciones que pueden verse en el manual del MATLAB. 9 Ejemplo 1. >> x = 0:10; % se trata del rango 0, 1 2, …, 10 >> y = exp(x); >> xi = 0:0.2:10; >> yi = interp1(x, y, xi); >> plot(x, y, 'o‘ , xi, yi); Observar que al no indicarse el tipo de interpolación en el interp1 se realiza una interpolación lineal (por defecto). 10 Ejemplo 2. Hay que interpolar mediante ‘spline’ los datos de la tabla siguiente: x 2 2.1 2.6 3 3.2 3.7 4 4.3 y 5 5.3 5.6 5.4 4.9 4.5 3.8 3.3 Solución: >> tab = [2 2.1 2.6 3 3.2 3.7 4 4.3; 5 5.3 5.6 5.4 4.9 4.5 3.8 3.3] >> x = tab(1, :); y = tab(2, :); >> xi = 2:0.25:4.5; >> yi = interp1(x, y, xi, 'spline'); >> plot(x, y, 'o', xi, yi) 11 Ejemplo 3: Tenemos dos vectores con los censos poblacionales (por décadas) de una nación en el siglo XX, en millones de personas: >> t = 1900:10:1990; >> p = [75.995 91.972 105.711 123.203 131.669... 150.697 179.323 203.212 226.505 249.633]; Por interpolación podemos estimar la población en cualquier año: >> t = 1900:10:1990; >> p = [75.995 91.972 105.711 123.203 131.669... 150.697 179.323 203.212 226.505 249.633]; >> interp1(t, p, 1975) ans = 214.8585 Siguiendo este mismo ejemplo, podríamos representar en un diagrama la población anual: >> t = 1900:10:1990; >> p = [75.995 91.972 105.711 123.203 131.669... 150.697 179.323 203.212 226.505 249.633]; >> x = 1900:1:2000; >> y = interp1(t, p, x, 'spline'); plot(t,p,'o',x,y) 12