UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS DE MINAS DEPARTAMENTO DE MATEMÁTICA APLICADA Y MÉTODOS INFORMÁTICOS Asignatura: PROGRAMACIÓN Y MÉTODOS NUMÉRICOS Tema: INTERPOLACIÓN POLINÓMICA Prof. Carlos Conde Lázaro Prof. Arturo Hidalgo López Prof. Alfredo López Benito Marzo, 2007 ÍNDICE Pág. 1. INTRODUCCIÓN HISTÓRICA. …………………………………….. 1 2. INTERPOLACIÓN POLINÓMICA DE LAGRANGE. ……………… 2.1. La fórmula de interpolación de Lagrange. ………………. 2.2. La fórmula del error en la interpolación de Lagrange. … . 2.3. La fórmula de interpolación de Newton. ………………… 2.4. Interpolación con soportes equidistantes: fórmulas con diferencias finitas. ………………………………………. 13 17 25 43 3. INTERPOLACIÓN POLINÓMICA DE HERMITE. ……………….. 3.1. Interpolación de Hermite de primer orden: la fórmula de interpolación de Hermite. ………………………………. 3.2. Interpolación polinómica de Hermite: caso general. …... 3.3. Análisis del error en la interpolación de Hermite. ………. 3.4. Interpolación de Hermite: la fórmula de Newton. ……….. 3.4.1. Planteamiento. …………………………………… 80 84 92 106 112 112 3.4.2. Generalización del concepto de diferencia dividida. ……………………………………………. 117 3.4.3. La fórmula de Newton para el cálculo del polinomio interpolador de Hermite. ……………………. 3.4.4. ANEXO: Otra forma de definir las diferencias divididas con puntos repetidos. …………………. BIBLIOGRAFÍA SOBRE EL TEMA. …………………………………….. i 62 129 135 143 Programación y Métodos Numéricos Interpolación polinómica 1. Introducción histórica En numerosos procesos físicos y técnicos debe trabajarse con funciones de las que tan sólo se conoce su valor (o el de sus derivadas) en un número finito de puntos –llamado soporte- pero de las que es desconocida la expresión a la que responden. Una de las maneras más extendidas para operar con dichas funciones consiste en aproximarlas por otras funciones, de expresión conocida (y, en la medida de lo posible, fácil de manipular). Una de las formas en que se puede buscar esta función aproximada consiste en obligar a que la función aproximadora (o sus derivadas) tome en los puntos del soporte los mismos valores que la función que se quiere aproximar. En tal caso se dice que se ha interpolado la función original siendo la función interpoladora aquella que la aproxima. Las técnicas de interpolación pueden clasificarse, en una primera subdivisión, según el tipo de expresiones con las que se busque la función interpoladora. Así existe la interpolación polinomial o polinómica (en la que las funciones interpoladoras son polinomios), la interpolación trigonométrica (cuando la función interpoladora es una combinación de funciones trigonométricas), la interpolación exponencial (si las funciones interpoladoras son una combinación de exponenciales), etc.... De entre todas ellas, las más frecuentemente utilizadas son la interpolación polinómica y, en menor medida, la trigonométrica. Al estudio de la primera de ellas dedicaremos este tema. Aun sin el desarrollo de una teoría rigurosa, el uso de la interpolación polinómica se pierde en la historia de los tiempos. Recordemos por ejemplo 1 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid que numerosos matemáticos griegos calcularon aproximaciones del número π interpolando el área del círculo entre los valores de las áreas de dos polígonos regulares de n lados, uno inscrito en la circunferencia perimetral del círculo y el otro circunscrito a dicha circunferencia. O que en el siglo IX los matemáticos árabes del califato de Bagdad, sabían resolver ciertas ecuaciones no lineales mediante el método de regula falsi. En cada iteración de dicho método11, conocidos dos valores de una función f(xi) y f(xi+1) (tales que f(xi)·f(xi+1) < 0 ) se debe buscar la recta que interpola a f(x) en los puntos (xi, f(xi)) y (xi+1, f(xi+1)) para determinar a continuación el punto en que corta al eje de abscisas, reduciéndose así el intervalo de incertidumbre en el que se buscará una raíz de la función f(x). Pero fue en la misma época en que se fraguó y nació el cálculo infinitesimal en la que se puede considerar que se consolidaron las técnicas de interpolación polinómica y, junto a ellas, las de derivación e integración numérica. Numerosos problemas prácticos, fundamentalmente vinculados al comercio, a la cartografía y a la navegación, exigían en los siglos XVI y XVII el cálculo de áreas encerradas bajo curvas o la determinación de tangentes a una curva en un punto. El primero de dichos problemas, el cálculo de áreas encerradas bajo tramos de curvas, sólo se sabía resolver en casos de curvas muy concretas12. Del segundo, que antes de esta época se consideraba sin relación con el primero, hubo que esperar a que el matemático francés Pierre de Fermat (Beaumont de Lomagne ,17 de agosto de 1601 – Castres, 12 de enero de 1665) ideara los primeros métodos suficientemente generales para el cálculo de la tangente a una curva en un punto. Y puesto que sí se sabía calcular el área existente bajo líneas poligonales resulta fácil comprender que el cálculo de las áreas encerradas por otras curvas más generales se comenzase a realizar aproximando aquellas – interpolándolas – mediante líneas poligonales compuestas por segmentos rectilíneos o, a lo sumo, parabólicos. Como podrá comprobar el lector de los apartados siguientes, las fórmulas y métodos de interpolación, así como los de integración numérica, llevan en 11 Consúltense los apuntes sobre los métodos de resolución de ecuaciones no lineales. 12 Así por ejemplo, Arquímedes de Siracusa (287 a.C – 212 a.C) encontró una fórmula que permitía calcular el área encerrada bajo un tramo de parábola. 2 Programación y Métodos Numéricos Interpolación polinómica muchos casos el nombre de insignes matemáticos de esta época. Aunque no está muy claro quien fue el primero en utilizar cada una de tales fórmulas (y revisiones históricas modifican a menudo el papel que cada uno de aquellos matemáticos jugó en la determinación de cada fórmula) intentaremos en las líneas siguientes realizar un pequeño esbozo de las contribuciones de los principales matemáticos que dan nombre a las fórmulas más usuales que se encuentran en estos temas. En terminología actual, el problema de interpolación que entonces se abordaba puede formularse en la forma siguiente: Dadas (n+1) abscisas x0 < x1 < ....< xn y conocidos los valores f0, f1, ...., fn que en ellas toma una cierta función f(x), determinar un polinomio pn(x) de grado menor o igual que n cuyo grafo pase por los (n+1) puntos (x0, f0), (x1, f1), ...., (xn, fn). Como veremos en apartados posteriores sólo existe un único polinomio pn(x) que sea solución del problema anterior. Si se denota a tal polinomio por: pn(x) = α0 + α1·x + α2·x2 + ..... + αn·xn los (n+1) coeficientes {α0, α1, ...., αn} son la solución del sistema de (n+1) ecuaciones: 1.α0 + x0·α1 + (x0)2·α2 + ...... + (x0)n·αn = f0 1.α0 + x1·α1 + (x1)2·α2 + ...... + (x1)n·αn = f1 ……………………………….. .... 2 n 1.α0 + xn·α1 + (xn) ·α2 + ...... + (xn) ·αn = fn Pero existen otras formas más cómodas de calcular este polinomio. Una de ellas es la desarrollada por los matemáticos ingleses del siglo XVII y a la cual nos referiremos a continuación. A pesar de no ser cronológicamente el primero, parece obligado comenzar por el más grande de todos ellos: Sir Isaac Newton (4 de enero de 1643, Woolsthorpe (Lincolnshire, Inglaterra) - 20 de marzo de 1727, Londres (Inglaterra)). La descripción de las numerosas aportaciones científicas de este gran matemático y físico desbordarían con mucho los objetivos de esta breve introducción histórica. Baste recordar que los trabajos de Newton en mecánica, con la 3 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid formulación de sus tres leyes, proporcionaron un marco físico que continuó siendo plenamente vigente hasta la aparición de las teorías relativistas a comienzos del siglo XX (y que el marco newtoniano continúa siendo en el que se plantean los problemas para las escalas de velocidades pequeñas en comparación con las de la luz). Recordemos también que los trabajos de Newton sobre óptica revolucionaron los conocimientos de dicha disciplina. O que el telescopio diseñado por él permitió ampliar el horizonte de observación astronómica realizando mediciones mucho más precisas. En un terreno más puramente matemático, debe comenzarse señalando que Newton y Leibniz son considerados los creadores, de forma independiente, del Cálculo Infinitesimal. Junto a ello, son debidos a Newton muchos otros avances matemáticos: fue el primero en demostrar la fórmula del cálculo de la potencia n-ésima de un binomio (el teorema binomial), el primero en hacer notar la relación existente entre la derivación (cálculo de tangentes) y la integración (cálculo de áreas), .... Junto a estos méritos, el citar a Newton como el artífice de una fórmula de interpolación polinómica puede parecer algo bastante insignificante. Pero sin embargo debe resaltarse que Newton fue un hábil calculista y que en numerosos desarrollos por él realizados se utilizan técnicas de interpolación. La idea que subyace en el procedimiento de Newton para calcular el polinomio interpolador pn(x) que pasa por los puntos (x0, f0), (x1, f1), ...., (xn, fn) consiste en expresarlo en la forma: pn(x) = a0 + a1·(x-x0) + a2·(x-x0)·(x-x1) + ..... + an·(x-x0)·(x-x1)····(x-xn-1) con lo que se pueden calcular los coeficientes {a0 , a1, a2, ..., an} mediante: pn(x0) = f0 ⇔ a0 = f0 (= f[x0] ) pn(x1) = f1 ⇔ a0 + a1·(x1-x0) = f1 ⇒ a1 = f1 − f0 x1 − x 0 (= f[x0 , x1]) pn(x2) = f2 ⇔ a0 + a1·(x2-x0) + a2·(x2-x0)·(x2-x1) = f2 ⇒ f2 − f1 f −f − 1 0 x − x1 x1 − x 0 ⇒ a2 = 2 x2 − x0 …….. 4 (= f[x0, x1, x2] ) Programación y Métodos Numéricos Interpolación polinómica Los coeficientes así calculados son llamados diferencias divididas y se suelen representar como ai = f[x0, x1, ..., xi]. Como se verá en apartados posteriores, su cálculo puede realizarse de forma recursiva de manera muy simple mediante la fórmula: f [ xi ,xi+1,....,xi+k −1,xi+k ] = f [ xi+1,....,xi+k −1,xi+k ] − f [ xi ,xi+1,....,xi+k −1 ] xk − xi con lo que el polinomio interpolador buscado responde a la fórmula: n (i−1) i=1 j= 0 pn (x) = f [ x 0 ] + ∑ f [ x 0 ,..,xi ]·∏ (x − x j ) Esta forma de proceder (aplicada a ejemplos concretos y obviamente descrita con una terminología diferente a como se ha realizado anteriormente) fue publicada en la obra de Newton Methodus differentialis aparecida en 1712, si bien era utilizada por Newton y otros matemáticos desde años antes. Debido a ello la fórmula anterior se conoce con el nombre de fórmula de Newton para el cálculo del polinomio interpolador. • Nótese que, a fin de cuentas, la fluxión f de una función –terminología con la que Newton introdujo el cálculo infinitesimal- no deja de ser más que la diferencia dividida de primer orden: f [ x,x + h] = f(x + h) − f(x) f(x + h) − f(x) = (x + h) − x h cuando h se hace tender hacia cero. Incluso métodos diseñados para otros fines en esa época pueden interpretarse de alguna forma como métodos basados en interpolación. Así, de forma independiente, Sir Isaac Newton y Joseph Raphson utilizaban un método de resolución de ecuaciones no lineales de la forma f(x) = 0 que hoy es conocido con el nombre de ambos. En cada iteración del método de Newton-Raphson13, se determina una aproximación xi+1 de la raíz a partir de la aproximación precedente xi mediante la fórmula: 13 Consúltense los apuntes sobre los métodos de resolución de ecuaciones no lineales 5 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid xi+1 = xi – f(xi) / f’(xi) por lo que x+1 puede considerarse el punto de corte con el eje de abscisas de la recta (polinomio de primer grado) que en xi tiene el mismo valor que la función f(x) y cuya primera derivada tiene el valor f’(xi). Ello constituye uno de los primeros ejemplos de lo que después sería conocido con el nombre de interpolación de Hermite. f(x) xi Precursor de algunos trabajos de Newton fue el matemático escocés James Gregory (1638, Drumaoak (Escocia) – 1675, Edimburgo (Escocia)). Este matemático se anticipó en muchos aspectos a Isaac Newton y otros matemáticos posteriores. Escritos suyos, no publicados aunque recogidos en la correspondencia que mantuvo con otros científicos de su época, parecen indicar que utilizaba técnicas de cálculo infinitesimal en los años en que Newton aún estaba diseñando estas herramientas. Una de sus obras – Optica promota publicada en 1663- fue la base en la que se basó Newton para construir su telescopio de refracción. No obstante una agria disputa que mantuvo con el holandés Christian Huygens le hizo muy retraído a la hora de publicar sus resultados. Gran parte de sus hallazgos son hoy conocidos por la aparición de su correspondencia científica. Entre las cartas encontradas puede resaltarse la que en 1671 dirige a un miembro de la Royal Society y que indica que James Gregory conocía la expresión de los desarrollos en serie de Taylor muchos años antes de que estos fuesen publicados por Brook Taylor en 1715. Asimismo, la correspondencia hallada de él confirman que había demostrado antes de 1670, anticipándose al propio Newton, la fórmula de cálculo de las 6 Programación y Métodos Numéricos Interpolación polinómica potencias de un binomio así como la misma fórmula de interpolación de Newton. Hoy, reconociendo parcialmente ese hecho, se conoce con el nombre de fórmulas de Newton-Gregory a los casos particulares de la fórmula de Newton en la que el soporte de interpolación está formado por puntos en los que cada uno de ellos dista la misma magnitud del que le precede y le sigue (llamados soportes equidistantes) y las diferencias divididas son sustituidas por diferencias finitas progresivas o regresivas. También se debe a Gregory una de las primeras fórmulas de integración numérica hallada por él en 1670. Contemporáneo de Newton fue otro matemático inglés con una producción de resultados mucho menor: Roger Cotes (10 de julio de 1683, Burbage (Inglaterra) – 5 de junio de 1716, Cambridge (Inglaterra) ). Este matemático, que sólo publicó un artículo en vida, trabajó en cálculo integral y fue el encargado de coordinar la publicación de la segunda edición de la principal obra de Newton, Philosophie Naturalis Principia Matemática (abreviadamente conocida como Principia). Por publicaciones posteriores que recogían algunos de sus trabajos, editadas por Thomas Simpson, se pudo conocer el gran trabajo que desarrolló en el cálculo de tablas de diferencias divididas y su aplicación al cálculo de integrales. Reconociéndole este esfuerzo hoy se conocen como fórmulas de NewtonCotes a aquellas fórmulas de integración numérica que utilizan soportes equidistantes. De la misma época y también inglés, es el matemático James Stirling (nacido en mayo de1692 en Garden (Escocia) y fallecido en Edimburgo (Escocia) el 5 de Diciembe de 1770). Este matemático es fundamentalmente recordado por la fórmula de Stirling que proporciona una expresión de n! utilizando el número e. En el año 1730 publicó una obra, también titulada Methodus Differentialis, en la que aborda el estudio de métodos de interpolación y de cuadratura. Por sus aportes en este campo y el uso de los factoriales que en ella aparecen, una de las fórmula de interpolación en la que se utilizan deferencias finitas centradas con un soporte equidistante se conoce hoy en día con el nombre de fórmula de Stirling. Ligeramente posterior a los anteriores y entusiasta seguidor de las ideas introducidas por Newton, es el matemático inglés Thomas Simpson (20 de agosto de 1710 Market Bosworth (Inglaterra) – 14 de mayo de 1761, Bosworth (Inglaterra)). Simpson, que ejerció como profesor particular de matemáticas y logró ser miembro de la Royal Society, trabajó fundamentalmente en teoría de 7 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid probabilidades, en interpolación y en integración numérica. Él es el que da nombre a una de las fórmulas más populares de integración numérica en la que el área bajo un tramo de curva es aproximada por el área bajo un tramo parabólico que coincide con la función a integrar al menos en los extremos del intervalo de integración así como en el punto medio de dicho intervalo. Antes de abandonar la Inglaterra de comienzos del siglo XVIII debemos mencionar a otro matemático de esa época: Brook Taylor (18 de agosto de 1685, Edmonton (Inglaterra) – 29 de diciembre de 1731, Londres (Inglaterra)). En el año 1715 Taylor publicó su obra Methodus incrementorum directa e inversa en la que usa profusamente las diferencias finitas y proporciona, sin demostrar su convergencia, el desarrollo en serie de una función en un punto que hoy se conoce con el nombre de desarrollo en serie de Taylor y que es una de las herramientas más utilizadas en el análisis que involucra funciones diferenciables. Recordemos que la fórmula de Taylor es: (x − x*)i (i ·f (x*) i! i=1 n f(x) ≈ pn (x) = f(x*) + ∑ El uso de este desarrollo en serie permite aproximar una función por un polinomio de grado n en el que tanto la función como sus n primeras derivadas coinciden en un punto dado con el valor del polinomio y los de sus n primeras derivadas. En su honor se denomina interpolación de Taylor al proceso mediante el que, conocidos los valores f(x0), f’(x0) , ...., f(n(x0), se determina una función p(x) verificando que p(x0) = f(x0), p’(x0) = f’(x0), ...., p(n(x0) = f(n(x0). Muchos otros matemáticos continuaron ocupándose de temas relativos a la interpolación. Pero hubo que esperar hasta finales del siglo XVIII para que Joseph Louis Lagrange (25 de enero de 1736, Turín (Italia) – 10 de abril de 1813, París (Francia)) dedicase algunos de sus trabajos a la interpolación polinómica de funciones y diseñara un método diferente al basado en las tablas de diferencias finitas para construir el polinomio interpolador de una función. Al igual que en el caso de Newton, los trabajos de Lagrange sobre interpolación son considerados como trabajos menores dentro de su magna obra. En efecto, Lagrange fue, al igual que muchos de los científicos de su época, un matemático y físico muy polifacético. A él se le deben, en el campo matemático, métodos de resolución de ecuaciones diferenciales, técnicas de optimización con restricciones, la introducción del cálculo simbólico en el 8 Programación y Métodos Numéricos Interpolación polinómica cálculo infinitesimal, la revalorización de la fórmula de Taylor, ... Pero sin duda su obra mayor es la Mécanique Analitique en la que introduce un enfoque entonces novedoso y riguroso en el estudio de la mecánica: el cálculo de variaciones y los sistemas de coordenadas generalizadas. En uno de sus tratados sobre astronomía, publicado en 1792, Lagrange desarrolla su método de interpolación para obtener polinomios de grado n que tomen en (n+1) puntos diferentes valores prefijados. El enfoque novedoso que adopta Lagrange para diseñar su método puede describirse diciendo que él busca el polinomio interpolador pn(x) que pasa por los puntos (x0, f0), (x1, f1), ...., (xn, fn) expresándolo en la forma: pn(x) = a0·(x-x1)·(x-x2)· ..... ·(x-xn) + a1·(x-x0)·(x-x2)· ..... ·(x-xn) + ...... + +an·(x-x0)·(x-x1)· ..... ·(x-xn-1) = n n i=0 j= 0 j≠ i ∑ ai·∏ (x − x j ) De esta forma, de las igualdades pn(xk) = fk (k = 0, 1, ..., n) obtiene que: n p(x0) = f0 ⇔ a0 ·∏ (x 0 − x j ) = f0 ⇒ a0 = f0 · j=1 1 n ∏ (x 0 − xj ) j=1 n p(x1) = f1 ⇔ a1·∏ (x1 − x j ) = f1 ⇒ a1 = f1· j=0 j≠1 1 n ∏ (x 1 − xj) j=0 j≠1 ……. ………………………………….. n −1 p(xn) = fn ⇔ an ·∏ (xn − x j ) = fn ⇒ an = fn · n−1 1 ∏ (x j= 0 n − xj ) j=0 Con ello Lagrange proporciona como expresión del polinomio interpolador: ⎛ n ⎞ (x − x j ) ⎟ ⎜ pn (x) = ∑ fi ·∏ ⎜ j=0 (xi − x j ) ⎟⎟ i= 0 ⎜ ⎝ j≠ i ⎠ n 9 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Esta fórmula es conocida desde entonces con el nombre de fórmula de interpolación de Lagrange. En ella se expresa el polinomio interpolador pn(x) como una combinación lineal de los polinomios: n (x − x ) j Li (x) = ∏ j=0 (x i − x j ) j≠i que son denominados polinomios de base de Lagrange (ya que constituyen una base del espacio vectorial formado por todos los polinomios de grado menor o igual que n). La fórmula de Lagrange fue ganándole terreno poco a poco a la fórmula de Newton y su uso se mostró más adecuado para el análisis de problemas de interpolación con funciones de varias variables. Técnicas numéricas posteriores, como la de elementos finitos, se apoyaron en la fórmula de Lagrange. Por todo ello, en honor a este matemático, hoy se denomina interpolación lagrangiana al proceso de obtención de funciones que en un conjunto de puntos tomen valores dados. La interpolación sería objeto de atención de otro de los grandes matemáticos que vivieron en el siglo XIX, llamado a menudo El Príncipe de los Matemáticos. Nos referimos a Johan Carl Friedrich Gauss (30 de abril de 1777, Brunswick (Alemania) – 23 de febrero de 1855, Göttingen (Alemania)) que también tuvo una producción científica excepcional no escapándose a su influjo prácticamente ninguna de las áreas de la Matemática entonces existentes: estadística, teoría de números, análisis complejo, series, análisis de funciones reales, cálculo integral y diferencial, ecuaciones diferenciales, álgebra, geometría, .... A él se le debe el estudio de la mejor manera para tomar los (n+1) puntos de un soporte de forma que se minimice el error de las fórmulas de integración numérica. Y en su honor a tales fórmulas se las denomina hoy en día fórmulas de cuadratura gaussiana (o fórmulas de integración de Gauss). El último de los matemáticos del siglo XIX en quien nos detendremos es el francés Charles Hermite (24 de diciembre de 1822, Dieuze, Lorena (Francia) – 14 de enero de 1901, París (Francia)). Hermite fue un matemático muy creativo, continuador en buena medida de los trabajos de Abel, Galois y Liouville sobre estructuras algebraicas vinculadas a la resolución de ecuaciones. Fue Hermite 10 Programación y Métodos Numéricos Interpolación polinómica el primero en demostrar que el número e no era un número algebraico y el que allanó el camino para que poco después Lindemann demostrase que π tampoco lo era (poniendo, de esta forma, el broche final al problema de la cuadratura del círculo que desde la época de los griegos ocupó a numerosos matemáticos). Junto a ello Hermite destacó notablemente en áreas matemáticas menos aplicadas (en invariantes algebraicos, funciones elípticas, ...). Pero afortunadamente, a pesar de las críticas que muchos matemáticos le han dirigido por ello, Hermite también dedicó un corto periodo de su vida, tres años hacia 1870, al estudio de problemas de aproximación e interpolación introduciendo técnicas que permiten calcular funciones interpoladoras que, en los puntos de un soporte, coinciden tanto ellas como sus primeras derivadas con los valores de la función que se interpola y las derivadas correspondientes. De forma más concreta, Hermite se ocupó, entre otros tópicos, de un problema de interpolación más general que los de interpolación de Lagrange e interpolación de Taylor pues Hermite consideró que en cada uno de los (n+1) puntos x0 < x1 < .... < xn se conocían los valores de una función f(x) y los de su primera derivada f’(x), buscando el polinomio p2·n+1(x), de grado menor o igual que (2·n+1), que verificaba que: p2·n+1(xi) = f(xi) (i = 0, 1, …, n) p'2·n+1(xi ) = f '(xi ) (i = 0, 1, …, n) Dicho polinomio, que también puede demostrarse que es único, fue obtenido por Hermite expresándolo como una combinación lineal de polinomios en la forma: n n i= 0 i=0 p2·n+1(x) = ∑ f(xi )·Hi,0 (x) + ∑ f '(xi )·Hi,1(x) donde los polinomios {H0,0(x), H1,0(x), ..., Hn,0(x), H0,1(x), Hn,1(x), ...., Hn,1(x)} forman una base del espacio formado por todos los polinomios de grado menor o igual que (2·n+1) y son denominados polinomios de base de Hermite (y cuya expresión se obtendrá en apartados posteriores). A la fórmula que proporciona p2·n+1(x) en función de esta base se la conoce con el nombre de fórmula de interpolación de Hermite. El problema de interpolación de Hermite se generalizó en años posteriores dando cabida a que en cada punto xi del soporte se supusieran conocidos el valor de una función f(x) y los de sus mi primeras derivadas, buscándose 11 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid entonces un polinomio pα(x) de grado menor o igual que α, y donde el entero α está dado por α = n + n ∑ m , verificando: i =0 p(αj (xi ) = f ( j (xi ) i (j = 0, 1, ..., mi) (i = 0, 1, ..., n) En honor a Charles Hermite este proceso se conoce con el nombre de interpolación de Hermite. Obsérvese que la interpolación de Lagrange es un caso particular de la de Hermite en el que se toman nulos todos los valores mi. Asimismo, la interpolación de Taylor es un caso particular de la de Hermite en la que el soporte de interpolación se reduce a un único punto x0. En el tintero se nos han quedado muchos otros matemáticos de los siglos XVII, XVIII y XIX que obtuvieron resultados que conformaron una sólida teoría sobre los métodos de interpolación. El siglo XX, y especialmente su segunda mitad en la que las técnicas de interpolación pudieron implementarse sobre ordenadores, conoció un auténtico estallido en el uso de la interpolación, derivación e integración numéricas. Los métodos numéricos de resolución de ecuaciones diferenciales, ordinarias o parciales -que rigen numerosos problemas de la física, la química o la ingeniería- están basados en estas técnicas. Así los métodos en diferencias finitas o elementos finitos que se estudian en otras asignaturas pueden ser considerados como continuadores de las técnicas de interpolación desarrolladas por Newton, Lagrange, Gauss, Hermite y muchos otros. Y baste recordar que la existencia de tales métodos, junto a las máquinas de cálculo, están presentes hoy en día en el estudio y diseño de aviones, cohetes, vehículos, edificios, prótesis, hornos industriales, estabilidad de galerías y taludes, .... Esperamos que esta breve introducción a las técnicas de interpolación permita al lector tener una visión general sobre el tema del que se ocupan estos apuntes. Muchos y muy buenos matemáticos han contribuido al desarrollo que ahora tiene. Y muy numerosos son los campos en los que se encuentran sus aplicaciones. 12 Programación y Métodos Numéricos Interpolación polinómica 2. Interpolación polinómica de Lagrange Consideraremos en esta sección el problema de interpolación de Lagrange formulado de la manera siguiente: Problema de Interpolación Polinómica de Lagrange “Dados (n+1) puntos distintos {x0 , x1 , ... , xi ,... , xn} y (n+1) valores {f0, f1, ..., fi, ..., fn}, encontrar un polinomio pn(x), de grado menor o igual que n, verificando las igualdades: pn(xi) = fi (i = 0, 1, ...., n) “ En tal problema denominaremos soporte de interpolación al conjunto de puntos {x0 , x1 , ... , xi ,... , xn}. En los soportes que consideraremos supondremos que el índice n es un entero estrictamente positivo (es decir que al menos hay 2 puntos en el soporte) y que los (n+1) puntos del soporte son distintos entre sí. Cuando la distancia entre puntos consecutivos sea siempre la misma se dirá que el soporte es un soporte equidistante. Al polinomio pn(x) se le denominará polinomio interpolador de Lagrange sobre el soporte {x0 , x1 , ... , xi ,... , xn} para los valores {f0, f1, ..., fi, ..., fn}. Cuando estos valores sean los valores que toma una cierta función f(x) en los puntos del soporte, se dirá que pn(x) es el polinomio interpolador de Lagrange de la función f(x) sobre el soporte {x0 , x1 , ... , xi ,... , xn}. No obstante, cuando consideremos que no hay confusión sobre los puntos del soporte utilizados así como sobre los valores en ellos, nos referiremos a pn(x) diciendo simplemente que es el polinomio interpolador de Lagrange. Ejemplos: 30 − 24· 2 2 16· 2 − 23 ·x + ·x + 1 es el polinomio 2·π π2 interpolador de Lagrange de la función f(x) = cos(x) sobre el soporte14 ⎧ π π⎫ ⎨0, , ⎬ . En efecto, es un polinomio de grado menor o igual que 2 verificando: ⎩ 4 3⎭ ⎛ 1 ⎛π⎞ 1 ⎛ ⎛ π ⎞⎞ ⎛π⎞ ⎛ π ⎞⎞ p2(0) = 1 (=cos(0)), p2 ⎜ ⎟ = ⎜ =cos ⎜ ⎟ ⎟ ⎜ =cos ⎜ ⎟ ⎟ , p2 ⎜ ⎟ = 2 ⎝ ⎝3⎠ 2 ⎝ ⎝ 3 ⎠⎠ ⎝4⎠ ⎝ 4 ⎠⎠ 1º) El polinomio p2(x) = 14 Adoptaremos en todo cuanto sigue el convenio de que, salvo que se especifique lo contrario, los argumentos de las funciones trigonométricas se consideran dados siempre en radianes. 13 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 2º) El polinomio p3(x) = -x3 + 2·x2 – 3·x + 2 es el polinomio interpolador de Lagrange de la función f(x) = x4 – 3·x3 + x2 – x + 2 sobre el soporte de 4 puntos {-1, 0, 1, 2}. En efecto, habiendo 4 puntos el polinomio dado es un polinomio de grado 3 que, además, verifica que: p3(-1) = 8 (= f(-1)), p3(0) = 2 (= f(0)), p3(1) = 0 (= f(1)), p3(2) = -4 (= f(2)) • En este apartado presentaremos diferentes técnicas para resolver el problema de interpolación de Lagrange anteriormente formulado. Una primera forma de determinar el polinomio buscado consiste en considerar que pn(x) es un polinomio de la forma pn(x) = α0 + α1·x + α2·x2 + ... + αn·xn para, a continuación, obtener un sistema de (n+1) ecuaciones lineales a partir de las igualdades entre los valores conocidos en el soporte y los valores que debe tomar el polinomio interpolador en los puntos del soporte. Más concretamente: pn(x0) = f0 ⇔ α0 + α1·x 0 + α 2 ·x 02 + .... + αn ·xn0 = f0 pn(x1) = f1 ⇔ α0 + α1·x1 + α 2 ·x12 + .... + αn ·x1n = f1 pn(x2) = f2 ⇔ α0 + α1·x 2 + α 2 ·x 22 + .... + αn ·xn2 = f2 ……….. ………………….. … 2 n pn(xn) = fn ⇔ α0 + α1·xn + α 2 ·xn + .... + αn ·xn = fn El sistema anterior puede escribirse con notación matricial en la forma: ⎡1 ⎢ ⎢1 ⎢1 ⎢ ⎢... ⎢1 ⎣ x0 x1 x2 ... xn x 02 ... x n0 ⎤ ⎧α 0 ⎫ ⎧ f0 ⎫ ⎥⎪ ⎪ ⎪ ⎪ x12 ... x1n ⎥ ⎪ α1 ⎪ ⎪ f1 ⎪ ⎪ ⎪ ⎪ ⎪ x 22 ... xn2 ⎥·⎨α 2 ⎬ = ⎨ f2 ⎬ ⎥ ... ... ... ⎥ ⎪ ... ⎪ ⎪...⎪ ⎪ ⎪ ⎪ ⎪ x n2 ... xnn ⎥⎦ ⎪⎩αn ⎭⎪ ⎩⎪ fn ⎭⎪ Si, como se ha supuesto, los puntos del soporte son distintos entre sí, la matriz del sistema anterior es una matriz regular y por tanto el sistema anterior admite una única15 solución (es decir que el polinomio buscado queda definido de forma única a través de sus coeficientes obtenidos como solución del sistema planteado). 15 No nos detenemos a demostrar esta afirmación pues la existencia y unicidad del polinomio interpolador de Lagrange será demostrada posteriormente. 14 Programación y Métodos Numéricos Interpolación polinómica Ejemplo: Determinemos la expresión del polinomio interpolador de Lagrange de la función f(x) = x4 – 3·x3 + x2 – x + 2 sobre el soporte {-1, 0, 1, 2}. En estos puntos se tiene que: f0 = f(-1) = 8, f1 = f(0) = 2, f2 = f(1) = 0 y f3 = f(2) = -4. Denotando al polinomio buscado por: p3(x) = α0 + α1·x + α2·x2 + α3·x3 , se tiene que: p3(-1) = f0 ⇔ α0 - α1 + α2 - α3 = 8 p3(0) = f1 ⇔ α0 =2 p3(1) = f2 ⇔ α0 + α1 + α2 + α3 = 0 p3(2) = f3 ⇔ α0 + 2·α1 + 4·α2 + 8·α3 = -4 es decir: ⎡1 −1 ⎢ ⎢1 0 ⎢1 1 ⎢ ⎣1 2 1 −1⎤ ⎧α 0 ⎫ ⎧ 8 ⎫ ⎪ ⎪ 0 0 ⎥⎥ ⎪ α1 ⎪ ⎪⎪ 2 ⎪⎪ ·⎨ ⎬ = ⎨ ⎬ 1 1 ⎥ ⎪α 2 ⎪ ⎪ 0 ⎪ ⎥ 4 8 ⎦ ⎩⎪α 3 ⎭⎪ ⎩⎪−4 ⎭⎪ de donde: α0 = 2, α1 = -3, α2 = 2, α3 = -1 por lo que: p3(x) = 2 – 3·x + 2·x2 – 1·x3. La figura siguiente recoge la gráfica de f(x) y de p3(x). f(x) p3(x) • 15 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Ejercicio propuesto: Plantéese el sistema de ecuaciones que permite calcular el polinomio ⎧ π π⎫ interpolador de Lagrange de la función f(x) = sen(x) sobre el soporte ⎨0, , ⎬ . ⎩ 4 2⎭ Resuélvase dicho sistema y escríbase la expresión del polinomio interpolador. • Esta forma de calcular el polinomio interpolador de Lagrange, mediante la resolución de un sistema de (n+1) ecuaciones con (n+1) incógnitas, es útil cuando se trabaja con un soporte formado por un número de puntos relativamente bajo. En el caso de que no sea así es necesario realizar un gran esfuerzo computacional para resolver el sistema de ecuaciones al que se llega. Pero además, esta forma de proceder tiene menos interés que otras que analizaremos a continuación cuando se piensa en aplicarlas a los métodos de resolución numérica de problemas de contorno (y en concreto al método de elementos finitos) que se aborda en otras asignaturas. Por ello, en los subapartados que siguen, se estudiarán otras técnicas de cálculo del polinomio interpolador de Lagrange. 16 Programación y Métodos Numéricos Interpolación polinómica 2.1. La fórmula de interpolación de Lagrange Teorema 1 (Existencia y unicidad del polinomio interpolador de Lagrange) Dados (n+1) valores {f0, f1, ..., fi, ..., fn}, y siendo Li(x) (i= 0, …, n) los polinomios de base de Lagrange asociados al soporte formado por las (n+1) abscisas distintas {x0, x1, ... , xi, ..., xn}, existe un único polinomio de grado menor o igual que n, pn(x), verificando las (n+1) igualdades: pn(xi) = fi (i = 0, 1, 2, ..., n) (1) Demostración: Como se ha visto en el apartado anterior, el sistema (1) puede escribirse con notación matricial en la forma: ⎡1 ⎢ ⎢1 ⎢1 ⎢ ⎢... ⎢1 ⎣ x0 x1 x2 ... xn x 02 ... xn0 ⎤ ⎧α 0 ⎫ ⎧ f0 ⎫ ⎥⎪ ⎪ ⎪ ⎪ x12 ... x1n ⎥ ⎪ α1 ⎪ ⎪ f1 ⎪ ⎪ ⎪ ⎪ ⎪ x 22 ... xn2 ⎥·⎨α 2 ⎬ = ⎨ f2 ⎬ ⎥ ... ... ... ⎥ ⎪ ... ⎪ ⎪...⎪ ⎪ ⎪ ⎪ ⎪ x n2 ... xnn ⎥⎦ ⎩⎪αn ⎭⎪ ⎩⎪ fn ⎭⎪ [X]·{α} = {f} La matriz del sistema, habida cuenta de que las abscisas x0, x1, …., xn son todas ellas distintas, tiene su determinante del tipo Vandermonde y por ello distinto de 0. En otros téminos es una matriz regular que admitirá inversa [X]-1 . Por ello existirá un único juego de coeficientes, dado por la expresión: {α} = [X]-1·{f} Que identifique al polinomio interpolador pn(x). c.q.d. Definición Se denominan polinomios de base de Lagrange asociados al soporte formado por las (n+1) abscisas distintas {x0, x1, ... , xi, ..., xn}, y los denotaremos por Li(x) (i= 0, …, n) , a los (n+1) polinomios de grado menor o igual a n definidos por las expresiones: Si n = 0: L0(x) = 1 Si n > 0: n ⎛ x−x ⎞ j Li (x) = ∏ ⎜ ⎟⎟ ⎜ j=0 ⎝ x i − x j ⎠ j≠i (i = 0, 1, 2, ..., n) (2) ● 17 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid El método diseñado por Lagrange para el cálculo del polinomio interpolador, utiliza los polinomios de base de Lagrange que se acaban de definir. La forma en que se utilizan, se recogen en el siguiente teorema. Teorema 2 (Fórmula de Lagrange para el polinomio interpolador) Dados (n+1) valores {f0, f1, ..., fi, ..., fn}, y siendo Li(x) (i= 0, …, n) los polinomios de base de Lagrange asociados al soporte formado por las (n+1) abscisas distintas {x0, x1, ... , xi, ..., xn}, se verifica que el polinomio interpolador de Lagrange sobre el soporte considerado y para los valores dados puede expresarse como: n pn (x) = ∑ fi ·Li (x) (3) i =0 Demostración: Basta con observar que los polinomios de base de Lagrange dados por la expresión (1) son polinomios de grado n verificando, sobre los puntos del soporte, que verifican: ⎧0 si i ≠ k Li (xk ) = δik = ⎨ ⎩ 1 si i = k Por tanto, el polinomio dado por la fórmula de interpolación de Lagrange (3) es un polinomio de grado menor o igual que n (al ser una combinación lineal de polinomios de grado n) que además verificará que: pn(xk) = n ∑ f ·L (x i=0 i i k ) = fk·Lk(xk) = fk (k = 0, 1, ..., n) Es, por ello, el polinomio interpolador de Lagrange sobre el soporte considerado y para los valores dados en el enunciado. c.q.d. NOTA: La expresión (3) se conoce como fórmula de interpolación de Lagrange. Consecuencia inmediata del teorema anterior es el siguiente corolario Corolario 1 Si p(x) es una función polinómica de grado m, y n es un entero estrictamente positivo tal que m < n, el polinomio interpolador de Lagrange pn(x) de la función p(x) sobre cualquier soporte formado por (n+1) puntos es la propia función p(x). 18 Programación y Métodos Numéricos Interpolación polinómica Demostración: El grado del polinomio interpolador de Lagrange sobre un soporte formado por (n+1) puntos debe ser menor o igual que n. La función p(x) se ha supuesto que es un polinomio de grado m < n por lo que verifica la condición sobre el grado exigido al polinomio interpolador de Lagrange. Puesto que obviamente el valor de la función p(x) en los puntos del soporte coincide con el valor p(xi) se puede concluir que p(x) es el polinomio interpolador de Lagrange de ella misma. Y como en virtud del teorema anterior el polinomio interpolador de Lagrange es único, puede concluirse que pn(x) ≡ p(x). c.q.d. Ejemplo: Utilicemos la fórmula de Lagrange para determinar el polinomio interpolador de ⎧ π π⎫ Lagrange de la función f(x) = sen(x) sobre el soporte ⎨0, , ⎬ . ⎩ 4 2⎭ En primer lugar calculemos los valores de la función f(x) en los puntos del soporte: 1 ⎛π⎞ ⎛π⎞ ⎛π⎞ ⎛π⎞ f0 =f(0) = sen(0) = 0, , f2 = f ⎜ ⎟ = sen ⎜ ⎟ = 1 f1 = f ⎜ ⎟ = sen ⎜ ⎟ = 2 ⎝4⎠ ⎝4⎠ ⎝2⎠ ⎝2⎠ Procedamos a continuación a calcular (y representar gráficamente) los polinomios de base de Lagrange asociados a este soporte. π⎞⎛ π⎞ ⎛ ⎜ x − 4 ⎟·⎜ x − 2 ⎟ 8·x 2 − 6·π·x + π2 ⎠⎝ ⎠= L0 (x) = ⎝ π π π2 ⎛ ⎞⎛ ⎞ − − 0 · 0 ⎜ 4 ⎟⎠ ⎜⎝ 2 ⎟⎠ ⎝ π⎞ 2 ⎟⎠ −16·x 2 + 8·π·x ⎝ = L1(x) = π2 ⎛π ⎞⎛ π π⎞ − − 0 · ⎜4 ⎟⎜ 4 2⎟ ⎝ ⎠⎝ ⎠ π ( x − 0 )·⎛⎜ x − ⎞⎟ 8·x 2 − 2·π·x 4⎠ ⎝ = L 2 (x) = π2 ⎛π ⎞⎛ π π⎞ − − 0 · ⎜2 ⎟⎜2 4⎟ ⎝ ⎠⎝ ⎠ ( x − 0 )·⎛⎜ x − 19 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid L0(x) L1(x) L2(x) π/4 π/2 Con ayuda de estos polinomios de base se calcula el polinomio interpolador utilizando la fórmula de interpolación de Lagrange: 2 1 ( −16·x + 8·π·x ) 8·x 2 − 2·π·x p2(x) = f0·L0(x) + f1·L1(x) + f2·L2(x) = · + 1· = π2 π2 2 ⎛ 8· 2 − 16 ⎞ 2 ⎛ 8 − 2· 2 ⎞ = ⎜⎜ ⎟·x + ⎜⎜ ⎟·x 2·π2 ⎟⎠ 2·π ⎟⎠ ⎝ ⎝ La figura siguiente recoge, además de las gráficas de los tres polinomios de base, la gráfica de la función f(x) = sen(x) y la gráfica del polinomio interpolador que se acaba de determinar. π/4 π/2 Una aproximación del valor de sen(1) puede obtenerse entonces evaluando p2(1): sen(1) ≈ p2(1) = 0.82863992... 20 Programación y Métodos Numéricos Interpolación polinómica Puede compararse esta aproximación del valor de sen(1) con el valor exacto que es 0.841470984..... • Examinemos alguna de las propiedades de los polinomios de base de Lagrange. Propiedad 1 Dado el soporte {x0, x1, ... , xi, ..., xn}, el i-ésimo polinomio de base de Lagrange: n ⎛ x−x ⎞ j Li (x) = ∏ ⎜ ⎟⎟ ⎜ j= 0 ⎝ x i − x j ⎠ j≠ i (i = 0, 1, ....,n) es el único polinomio de grado menor o igual que n que verifica que: ⎧0 si i ≠ k Li (xk ) = δik = ⎨ ⎩ 1 si i = k (i, k = 0, 1, ..., n) Demostración: Es evidente -sin más que sustituir en la expresión del polinomio Li(x) la variable x por la abscisa xk (k = 0, 1, ...., i, .., n) - que Li(x) es un polinomio de grado menor o igual que n que se anula en todos los puntos del soporte salvo en el punto xi en el que toma el valor unidad. La unicidad se infiere del hecho de que, en virtud del teorema de existencia y unicidad del polinomio interpolador, sólo puede haber un polinomio de grado menor o igual que n pasando por los (n+1) puntos (x0, 0), (x1, 0), ...., (xi-1, 0), (xi, 0), (xi+1, 0), ...., (xn, 0). c.q.d. La gráfica siguiente representa el hecho que se acaba de demostrar recogiendo los grafos de los 5 polinomios de base asociados al soporte formado por las abscisas {0.25, 1.12, 4.56, 8.33, 11.45}. 21 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Propiedad 2 Dado el soporte {x0, x1, ..., xi, ..., xn}, los polinomios de base de Lagrange asociados a dicho soporte: n ⎛ x−x ⎞ j Li (x) = ∏ ⎜ ⎟⎟ ⎜ j=0 ⎝ x i − x j ⎠ j≠i (i = 0, 1, ...., n) verifican que: n ∑ L (x) = 1 i=0 i ∀x Demostración: La función unidad, p(x) = 1, es un polinomio de grado 0. Por tanto pertenece al conjunto de polinomios de grado menor o igual que n para cualquier elección del número natural n que se haga. Puesto que, en virtud del corolario 1, el polinomio interpolador de Lagrange pn(x) de esta función p(x) sobre el soporte de abscisas distintas {x0, x1, ..., xi, ... , xn} ha de coincidir con p(x), se verificará que: 1 = p(x) = pn(x) = n n n i=0 i= 0 i=0 ∑ p(xi )·Li (x) = ∑1·Li (x) = ∑ Li (x) c.q.d. Ejercicios propuestos: 22 Programación y Métodos Numéricos Interpolación polinómica 1º) Demostrar que siendo Π(x) el polinomio de grado (n+1) dado por la n expresión: Π(x) = ∏ (x − x j ) , se puede escribir el i-ésimo polinomio de base de j=0 Lagrange sobre el soporte {x0, x1, ..., xi, ..., xn} como: Li (x) = Π(x) (x − xi )·Π '(xi ) 2º) Demostrar que siendo L0(x), L1(x), ...., Ln(x) los (n+1) polinomios de base asociados al soporte {x0, x1, ..., xi, ..., xn} se verifica que: n ∑x i=0 m i ·Li (x) = xm ∀m ≤ n 3º) Justificar la veracidad o falsedad de la afirmación siguiente: “Para cualquier polinomio de base de Lagrange Li(x) asociado a un soporte genérico {x0, x1, ..., xi, ..., xn} se verifica que: Li (x) ≤ 1 ∀x ∈ ( x 0 ,xn ) (i = 0, 1, ...., n) “ 4º) Utilícese la fórmula de Lagrange para determinar el polinomio interpolador ⎧ π π π⎫ de Lagrange de la función cos(x) sobre el soporte ⎨0, , , ⎬ . ⎩ 6 3 2⎭ Represéntense las gráficas de los polinomios de base asociados a este soporte e indíquese el valor interpolado que aproximaría cos(π/4). 5º) Determínese el polinomio interpolador de Lagrange, p5(x) , de la función f(x) = x3 sobre el soporte {0, 1, 2, 3, 4, 5}. ¿Cuál es el error de interpolación en el punto x = 2.5, es decir cual es el valor de |f(2.5) – p5(2.5)| ?. n ⎛ x−x ⎞ j 6º) Demuéstrese que los polinomios Li (x) = ∏ ⎜ ⎟⎟ ⎜ j= 0 ⎝ x i − x j ⎠ j≠ i (i = 0, 1, ..., n) asociados al soporte {x0, x1, ..., xi, ..., xn} forman una base del espacio vectorial Pn formado por todos los polinomios (de variable y coeficientes reales) de grado menor o igual que n. 23 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 2.2. Fórmula del error en la interpolación de Lagrange Las técnicas de interpolación de Lagrange descritas hasta ahora (y las que se describirán en subapartados siguientes) permiten encontrar un polinomio de grado menor o igual que n que coincide con los valores de una función f(x) en los puntos del soporte de interpolación {x0, x1, ..., xn}. Pero esta coincidencia de valor no tiene por qué producirse en puntos no pertenecientes al soporte. Es por ello que se puede definir una función error de interpolación de la forma siguiente: Definición Siendo pn(x) el polinomio interpolador de Lagrange de la función f(x) sobre el soporte {x0 , x1, .... , xn}, se denomina error de interpolación (de Lagrange) a la función E(x) que a todo punto x le asocia el valor E(x) = f(x) – pn(x). f(x) p2(x) p2(x*) E(x*) f(x*) x0 x1 x* x2 En general, si no se tiene información adicional sobre la función f(x) que se está interpolando, poco se puede decir sobre el error de interpolación (salvo que será nulo en los puntos del soporte). Pero si se admite una cierta regularidad de la función f(x), más concretamente, si se admite que tanto la función f(x) como sus primeras derivadas son continuas y acotadas, es posible obtener cotas de la función error de interpolación en el intervalo (a, b) al que pertenezcan los puntos del soporte. Dedicaremos este subapartado a concretar esta afirmación. 24 Programación y Métodos Numéricos Interpolación polinómica Teorema 3 Siendo f(x) una función continua de clase C(n+1)((a, b)) y denotando por pn(x) al polinomio interpolador de Lagrange de la función f(x) sobre el soporte {x0, x1, ..., xn}, formado por (n+1) puntos distintos de (a, b), para todo punto x*∈(a, b) se puede encontrar algún punto ξ * ∈(a, b), dependiente del punto x* que se escoja, verificando que: E(x*) = f(x*) − pn (x*) = f (n+1 ( ξ * ) (n + 1)! n ·∏ (x * − xi ) i= 0 Demostración: Si el punto x* coincidiera con alguno de los puntos del soporte la igualdad anterior es evidente pues el error sería nulo y el productorio que aparece en la expresión del error también se anularía. Consideremos pues el caso en que x* ∉{x0, x1,..., xn}. En esta situación se puede definir el polinomio: f(x*) − pn (x*) n q(x) = pn(x) + n ·∏ (x − xi ) ∏ (x * − xi ) i=0 i= 0 El polinomio q(x) es un polinomio de grado menor o igual que (n+1), pues es la suma de un polinomio de grado menor o igual que n (pn(x)) más otro polinomio n de grado (n+1) (dado por ∏ (x − x ) ) i multiplicado por la constante i=0 f(x*) − pn (x*) n ∏ (x * − x ) . i i=0 Además dicho polinomio verifica que: q(xk) = pn(xk) + f(x*) − pn (x*) n ·∏ (x k − x i ) = pn(xk) = f(xk) n ∏ (x * − xi ) i=0 (k = 0, 1, ..., n) i=0 q(x*) = pn(x*) + f(x*) − pn (x*) n ·∏ (x * − xi ) = pn(x*)+ f(x*) - pn(x*) = f(x*) n ∏ (x * − xi ) i=0 i=0 Por tanto q(x) es el polinomio interpolador de Lagrange de la función f(x) sobre el soporte formado por los (n+2) puntos: {x0, x1,..., xn, x*} . 25 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Definimos entonces la función F(x) = f(x) – q(x). Esta función es continua y será de clase C(n+1)((a, b)) pues es la diferencia de dos funciones de dicho espacio. Además la función F(x) se anula en los (n+2) puntos distintos {x0, x1,..., xn, x*}. Aplicando sucesivamente el teorema de Rolle16 se tiene entonces que F’(x) se anulará en al menos (n+1) puntos de (a, b), F”(x) lo hará en al menos n puntos de (a, b), F’’’(x) será nula en al menos (n-1) puntos de (a, b), ...... y F(n+1(x) se anulará en al menos un punto del intervalo (a, b). Denotemos por ξ * a alguno de los puntos de (a, b) en los que se anula F(n+1(x). Se tiene así que: 0 = F(n+1( ξ * ) = f(n+1( ξ * ) – q(n+1( ξ * ) = =f (n+1 (ξ *) – p (n +1 n ⎞ f(x*) − pn (x*) ⎛ n (ξ*) − n ·⎜ ∏ (x − xi ) ⎟ ⎠ ∏ (x * − xi ) ⎝ i=0 (n +1 = i= 0 = f(n+1( ξ * ) – 0 – f(x*) − pn (x*) ·(n + 1)! ⇒ n ∏ (x * −xi ) i=0 f (n+1(ξ*) n ⇒ f(x*) – pn(x*) = ·∏ (x * − x i ) (n + 1)! i=0 c.q.d. Una consecuencia inmediata del teorema anterior es el hecho, ya conocido por el corolario 1 demostrado en el apartado anterior, de que si f(x) es una función polinómica de grado menor o igual que n, al interpolarla con (n+1) abscisas distintas de soporte el error que se comete es nulo (pues la derivada de orden (n+1) de un polinomio de grado menor o igual que n es la función nula). Pero el teorema anterior, tal cual está formulado, tiene una aplicación práctica escasa pues su uso en la determinación del error de interpolación de Lagrange cometido en un punto x* exige el conocimiento previo de la (n+1)-ésima derivada de la función f(x) (cuando lo habitual es que ni tan siquiera se conozca la expresión de f(x)) y además la abscisa ξ * en la que evaluar dicha derivada. Pero sin embargo sí que nos ofrece información cualitativa sobre el proceso de 16 Teorema de Rolle: “Si una función g(x) continua en el intervalo [a, b] es derivable en (a, b) y además verifica que f(a) = f(b), entonces existe al menos un punto c∈(a, b) en el que se verifica que f’(c) = 0”. 26 Programación y Métodos Numéricos Interpolación polinómica interpolación. En efecto, una consecuencia inmediata de dicho teorema es que si se denota por M al valor: M = Sup f (n+1(x) x∈( a,b ) se verificará que: ∀x ∈ (a,b) : |E(x)| = |f(x) – pn(x)| ≤ n M · ∏ (x − xi ) (n + 1)! i=0 de donde: ∀x ∈ (a,b) : |E(x)| = |f(x) – pn(x)| ≤ n M · Sup ∏ (x − xi ) (n + 1)! x∈( x0 ,xn ) i=0 Si se denota por h a la longitud del intervalo (a,b) es evidente que, para todo punto x interior a dicho intervalo se verificará que: |x-xi| < h. Ello nos permite expresar la cota de error en la forma: M ·h(n+1) ∀x ∈ (a,b) : |E(x)| = |f(x) – pn(x)| ≤ (n + 1)! Las desigualdades anteriores recogen cotas superiores del máximo del valor absoluto de la función de error de interpolación. Tales cotas pueden ser alcanzadas o no por la función de error (siendo frecuente que el error real de interpolación sea ostensiblemente menor que la cota así calculada). Por ello el interés de estas acotaciones se encuentra cuando la cota calculada es suficientemente pequeña, pues en ese caso se pueden asegurar errores de interpolación pequeños. Cuando la cota tiene un valor alto poco se puede asegurar sobre el error de interpolación. Por otra parte debe señalarse que las desigualdades antes obtenidas pueden inducir al lector que aborda por primera vez el estudio de la interpolación de Lagrange a sacar conclusiones erróneas. Por ejemplo es frecuente que a la vista de esta expresión se piense (erróneamente) que un incremento en el número de puntos del soporte, sin incrementar la longitud del intervalo, conduce a un menor error de interpolación ya que al aumentar n crece el valor de (n+1)!. Ello no siempre sucede así pues, aunque es cierto que el factorial (n+1)! acaba creciendo con n más rápidamente que el valor de hn , debe tenerse en cuenta que el valor de M = Sup f (n+1(x) no es independiente de n. x∈( x0 ,xn ) Además el incremento del número de puntos del soporte puede conducir a polinomios interpoladores de alto grado que presenten oscilaciones muy pronunciadas lo cual no siempre será acorde con la naturaleza de la función 27 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid f(x) que se interpole. Un ejemplo de lo que se acaba de señalar se recoge a continuación. Ejemplo: Sea f la función definida mediante f(x) = sen(π·x2). Si, en el intervalo [0, 4] se considera un soporte equidistante formado por los (n+1) puntos: xi = 4·i/n (i = 0, 1, …, n) una cota del error de interpolación está dada por: ∀x ∈ [0,4 ] : E(x) ≤ 4(n+1) · sup f (n+1(x) (n + 1)! x∈( 0,4 ) ( ) En la tabla siguiente se recogen, para algunos valores de n, el valor de 4(n+1) α= , y los órdenes de magnitud de los valores de M = sup f (n+1(x) y x∈( 0,4 ) (n + 1)! ( Cota= ) 4(n+1) · sup f (n+1(x) . (n + 1)! x∈(0,4 ) ( ) n α O(M) O(Cota) 2 32 3 15875 169335 4 128 15 1 · 107 8 · 107 6 1024 315 6 · 109 2 · 1010 Puede observarse como un incremento en el número de puntos del soporte de interpolación no conduce a una disminución de la cota de error. Pero analicemos si estas cotas de error nos proporcionan alguna información útil. 28 Programación y Métodos Numéricos • Interpolación polinómica Obsérvese que el polinomio interpolador obtenido para n= 2 se obtendría con el soporte {x0 = 0, x1 = 2, x2 = 4} en el que la función toma los valores: f0 = sen(0) = 0, f1 = sen(4·π) = 0 , f2 = sen(16·π) = 0 lo que nos conduce a que p2(x) = 0 y a que el error de interpolación realmente cometido es: E(x) = sen(π·x) – p2(x) = sen(π·x). En otros términos el error real de interpolación toma valores comprendidos entre -1 y 1 por lo que la cota de error obtenida en la tabla anterior es muy superior al máximo del valor absoluto del error. • Para n = 4 los puntos del soporte son {x0 = 0, x1 = 1, x2 = 2, x3 = 3, x4 = 4}. En ellos los valores de la función son: f0 = sen(0) = 0, f1 = sen(π) = 0 , f3 = sen(9·π) = 0 , f2 = sen(4·π) = 0, f4 = sen(16·π) = 0 lo que nos conduce a que p4(x) = 0 y a que el error de interpolación realmente cometido es: E(x) = sen(π·x) – p2(x) = sen(π·x). En otros términos el error real de interpolación toma valores comprendidos entre -1 y 1 por lo que la cota de error obtenida en la tabla anterior es muy superior al máximo del valor absoluto del error. • Para n = 6 el soporte de interpolación está formado por los puntos {x0 = 0, x1 = 2/3 , x2 = 4/3, x3 = 2, x4 = 8/3 , x5 = 10/3 , x6 = 4 ,} siendo los valores (aproximados por sus 4 primeros decimales) de la función en él: f0 = sen(0) = 0, f2 = sen(16·π/9) = -0.6428, f4 = sen(64·π/9) = -0.3420, f6 = sen(16·π) = 0 f1 = sen(4·π/9) = 0.9848 , f3 = sen(4·π) = 0 , f5 = sen(100·π/9) = -0.3420, El dibujo siguiente recoge las gráficas de la función f(x) (punteada) y del polinomio interpolador que se obtendría (en trazo continuo) y permite 29 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid verificar que también ahora la cota de error obtenida supera con mucho el máximo valor absoluto del error de interpolación. No obstante, a pesar de que en los casos anteriores las cotas de error son muy elevadas, nada hace pensar que un incremento del número de puntos pueda mejorar la calidad de la interpolación. Para ilustrar este hecho, los dibujos siguientes recogen las gráficas obtenidas con 13 y con 14 puntos de soporte para esta función. En la segunda de ellas, los tramos no dibujados del polinomio interpolador exceden la escala de las ordenadas consideradas y por ello se recoge en otra figura la gráfica del polinomio interpolador aumentando el rango de las ordenadas representadas. Soporte con 13 puntos 30 Programación y Métodos Numéricos Interpolación polinómica Soporte con 14 puntos Soporte con 14 puntos (ordenadas en [-100, 100]) • NOTAS: 1ª. Cuando en un intervalo [a, b] se elige un soporte equidistante que incluya a los extremos del intervalo, es decir un soporte de la forma: xi = a + i· (b − a) n (i = 0, 1, ..., n) se verifica17 que: 17 Para una demostración detallada puede consultarse M. Crouzeix & A.L. Mignot (1983) “Analyse numérique des équations différentielles”, Ed. Masson. 31 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Sup n ∏ (x − xi ) ≤ C· x∈( x0 ,xn ) i=0 e −n ·(b − a)(n+1) n·ln(n) donde C es una constante positiva. 2ª. La acotación del error anteriormente obtenida n M ∀x ∈ [ x 0 ,x n ] : |E(x)| = |f(x) – pn(x)| ≤ · Sup ∏ (x − xi ) (n + 1)! x∈( x0 ,xn ) i=0 indica que si se quiere minimizar el error de interpolación manteniendo el número de puntos del soporte, estos puntos deberían ubicarse de forma que se n ∏ (x − x ) . minimizase el valor de Sup x∈( x0 ,xn ) i=0 i El cálculo de la posición de estos puntos conduce (tras un proceso algo laborioso) a que en un intervalo [a, b] la mejor elección de los (n+1) puntos de soporte está dada por las fórmulas: ξi = ⎛ (2·i + 1) ⎞ a+b b−a ·cos ⎜ ·π ⎟ + 2 2 ⎝ (2·n + 2) ⎠ (i = 0, 1, ..., n) Los soportes así formados se conocen con el nombre de soportes de Chebyshev18. Con ellos puede demostrarse que: Sup n ∏ (x − xi ) = x∈( x0 ,xn ) i=0 (b − a)(n+1) 2(2·n+1) lo que nos permite establecer la cota de error: E(x) ≤ M·(b − a)(n+1) (n + 1)!·2(2·n+1) 18 En la determinación de los puntos de este tipo de soportes juegan un papel esencial los denominados polinomios de Chebyshev: {T0(x) = 1, T1(x) = x, Ti = 2·x·Ti-1(x) – Ti-2(x) (i = 2, ...,n) }. A partir de ellos pueden construirse los polinomios t0(x) = 1, t1(x) = x, ti(x) = (1/2(i-1))·Ti (i = 2, ..., n), pudiéndose demostrar fácilmente que, en el intervalo [-1, 1], estos polinomios forman una base del espacio de polinomios de grado menor o igual que n y que ademas ti(x) es el polinomio de grado i con coeficiente director unitario con menor norma ||·||∞.. Es por ello que este tipo de soportes se denomina soporte de Chebyshev en honor al matemático ruso Pafnuty Lvovich Chebyshev (16 de mayo de 1821, Okatovo (Rusia) – 8 de diciembre de 1894, San Petersburgo (Rusia)). Para un mayor detalle del proceso de construcción de los soportes de Chebyshev, puede consusltarse F. Michavila & C. Conde (1987) “Métodos de Aproximación”, Ed. Depto. de Matemática Aplicada y Métodos Informáticos – ETSI Minas – Universidad Politécnica de Madrid. 32 Programación y Métodos Numéricos Interpolación polinómica Ejemplos: 1º. Sea f la función f(x) = ex. Si se desea interpolar esta función en un intervalo [a, b] utilizándose un soporte formado por (n+1) puntos, una cota del error de interpolación es: ⎛ n ⎞ (b − a)(n+1) b 1 ∀x ∈ [a,b] : |E(x)| ≤ ·Sup e x ·Sup ⎜ ∏ (x − x i ) ⎟ = ·e x∈(a,b) ⎝ i= 0 (n + 1)! x∈(a,b) (n + 1)! ⎠ ( ) Puesto que la función factorial presenta un crecimiento mayor que la función potencial, el error de interpolación, en este caso, tenderá a cero cuando n tienda a infinito. En otros términos, los polinomios interpoladores de Lagrange pn(x) de la función ex obtenidos para soportes con n puntos cada vez serán más próximos a ex (dicho más correctamente, la sucesión de polinomios pn(x) converge a ex cuando n tiende a infinito). 2º) Si se desea interpolar en el intervalo [0, 1] la función f(x) = ex utilizando 2 puntos de soporte, una cota del error de interpolación será: ∀x ∈ [0,1] : e E(x) ≤ ·Sup((x − x 0 )·(x − x1 )) 2 x∈(0,1) Denotemos por q(x) = (x-x0)·(x-x1) = x2 – (x0+x1)·x + x0·x1. Con esta notación es evidente que la cota del error de interpolación será más pequeña cuanto menor sea el máximo de |q(x)| en [0, 1]. Según lo indicado en el comentario realizado en la 2ª de las “notas” anteriores, ello se logra ubicando los puntos del soporte en las abscisas: 1 1 1 ⎛1 ⎞ 1 + ·cos ⎜ ·π ⎟ = + 2 2 ⎝ 4 ⎠ 2 2· 2 1 1 1 ⎛3 ⎞ 1 ξ1 = + ·cos ⎜ ·π ⎟ = − 2 2 ⎝ 4 ⎠ 2 2· 2 ξ0 = lo que nos conduce a que el soporte de Chebyshev, en este caso, es: 1 1 1 1 x0 = − y x1 = + . 2 2· 2 2 2· 2 La figura siguiente recoge el grafo de la función ex y de los polinomios de grado 1 (rectas) obtenidos con el soporte {0, 1} (recta “superior”), con el soporte {0.499, 0.501} (recta “inferior”) y con el soporte de Chebyshev (recta “intermedia”). 33 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 3º. Siendo f(x) = sen(5·x+2) , x0 = 0 y x1 = π/10 se tiene que los polinomios de base de Lagrange están dados por las expresiones: π x− x 10 L1(x) = L0 (x) = π π − 10 10 L0(x) L1(x) El polinomio interpolador de Lagrange de f(x) sobre este soporte es: π x− 10 + sen(2 + π )· x = p1(x) = f(0)·L0(x) + f(π/10)·L1(x) = sen(2)· π 2 π − 10 10 ⎞ 10 10 ⎛ ⎛4+π⎞ = sen(2) + ·⎜ sen ⎜ − sen(2) ⎟·x = sen(2) + ·( cos ( 2 ) − sen(2) )·x ⎟ π π ⎝ ⎝ 2 ⎠ ⎠ 34 Programación y Métodos Numéricos Interpolación polinómica f(x) p1(x) El error de interpolación en cada punto x* del intervalo [0, π/10], utilizando el teorema que nos proporcionaba dicho error, responde a la expresión: ⎡ π⎤ ∀x* ∈ ⎢0, ⎥ , ∃ξ* = ξ(x*) / ⎣ 10 ⎦ E(x*)=f(x*)-p1(x*) = − 25·sen(5·ξ * +2) π ⎞ ⎛ ·x *·⎜ x * − ⎟ 2 10 ⎠ ⎝ Como en este caso hemos partido de una función f(x) de la que se conoce su expresión analítica, el error de interpolación también se podría obtener mediante: E(x*) = f(x*) – p1(x*) = sen(5·x*+2) - sen(2) − 10 ·( cos(2) − sen(2))·x π Ello nos permitiría, para cada punto x*, encontrar algún punto ξ * en el que se satisfaga la expresión del error obtenida mediante el teorema. Así por ejemplo, para el punto x* = π/20 se tendrá que utilizando la primera expresión del error: E( π 25·sen(5·ξ * +2) π ⎛ π π ⎞ π2 )=− · ·⎜ − ⎟ = ·sen(5·ξ * +2) 20 2 20 ⎝ 20 10 ⎠ 32 y de la segunda: E( π π π π⎞ 1 ⎛ ) = f( ) − p1( ) = sen ⎜ 2 + ⎟ −sen(2) − ·( cos ( 2 ) − sen(2) ) 2 20 20 20 4⎠ ⎝ 35 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Identificando las dos expresiones del error se tiene que en este caso el punto ξ * estará dado por la solución de: π2 π⎞ 1 ⎛ ·sen(5·ξ * +2) = sen ⎜ 2 + ⎟ −sen(2) − ·( cos ( 2 ) − sen(2) ) 2 32 4⎠ ⎝ por lo que: ξ* = − ⎛ 16 ⎛ ⎞⎞ 2 1 ⎛π ⎞ + ·arcsen ⎜ 2 ·⎜ 2·sen ⎜ + 2 ⎟ − sen(2) − cos(2) ⎟ ⎟ 5 5 ⎝4 ⎠ ⎠⎠ ⎝π ⎝ Entre los diferentes ángulos que verifican la expresión anterior, tomaremos el que pertenezca al intervalo [0, π/10] que, aproximado con 10 dígitos decimales, es: ξ* ≈ 0.1608142204 rad. Puede verificarse que para este valor ambas expresiones del error conducen a que: E(π/20) = 0.10213483.... Una cota del error de interpolación en este intervalo puede obtenerse de la forma siguiente: 25 π ⎞ ⎡ π⎤ ⎛ ∀x ∈ ⎢0, ⎥ : E(x) ≤ sup sen(5·x + 2)· sup x·⎜ x − ⎟ 2 x∈⎛ 0, π ⎞ 10 ⎠ ⎛ π ⎞ ⎣ 10 ⎦ ⎝ x∈⎜ 0, ⎟ ⎜ ⎟ ⎝ 10 ⎠ ⎝ 10 ⎠ En el intervalo [0, π/10] el argumento α = (5·x+2) de la función seno que interviene en la acotación anterior toma valores comprendidos entre: αi = 2 α 2≤ α ≤ 2+ π 2 αf = 2+π/2 Por tanto los valores extremos de sen(α) se alcanzarán en 2 y en (2+π/2). Puesto que sen(2) = 0.909297426... y sen(2+π/2) = -0.416146836.... puede concluirse que: M = sup sen(5·x + 2) = 0.909297426... < 0.909298 . ⎛ π ⎞ x∈⎜ 0, ⎟ ⎝ 10 ⎠ 36 Programación y Métodos Numéricos Interpolación polinómica Por otra parte el valor extremo de q(x) = x·(x-π/10) en el intervalo (0, π/10) se alcanza en el punto en que se anule q’(x) (pues en los extremos del intervalo [0, π/10] el polinomio se anula), es decir en el punto obtenido mediante: 2·xm − π π = 0 ⇒ xm = 10 20 en el que q(x) toma el valor: q(xm ) = − π2 = -0.024674011... 400 q(x) Todo lo anterior nos permite tomar como cota del error de interpolación: ⎡ π⎤ ∀x ∈ ⎢0, ⎥ : ⎣ 10 ⎦ E(x) ≤ 25 ·(0.909298)·(0.024675) = 0.280461... 2 En este caso puede verificarse fácilmente el carácter de cota superior del error del valor que se acaba de hallar. En efecto el máximo de la función error de interpolación se produce en el punto en que se anule la expresión: E’(x) = f’(x) – p’1(x) = 5·cos(5·x+2) – (10/π)·(cos(2)-sen(2)) Ello nos conduce al punto: c=− 2 1 ⎛2 ⎞ + ·arccos ⎜ ·( cos(2) − sen(2) ) ⎟ ≈ 0.115025797 5 5 ⎝π ⎠ 37 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid siendo el error máximo cometido en la interpolación: E(c) = f(c) – p1(c) = 0.11265.... es decir menos de la mitad de la cota anteriormente hallada. 4º. Una función con la que frecuentemente se ilustra el buen comportamiento de los soportes de Chebyshev es la denominada función de Runge que está dada por: 1 f(x) = 1+ x2 Las figura siguiente recoge el grafo de f(x) en el intervalo [-6, 6] y el grafo del polinomio interpolador de Lagrange obtenido con el soporte formado por los 7 puntos {-6, -4, -2, 0, 2, 4, 6}. Puede observarse el “alto” valor del error de interpolación máximo. Si en lugar del soporte equidistante se trabajase con un soporte de Chebyshev formado por los 7 puntos dados por la expresión: ⎛ 2·i + 1 ⎞ xi = 6·cos ⎜ ·π ⎟ ⎝ 14 ⎠ (i=0, 1, 2, 3, 4, 5, 6) 38 Programación y Métodos Numéricos Interpolación polinómica el error de interpolación máximo se reduciría notablemente. Ello puede apreciarse en las gráficas de f(x) y del polinomio interpolador hallado de esta forma que se recogen en la figura siguiente: El incremento del número de puntos del soporte no ayuda a mejorar la precisión en el caso de utilizarse soportes equidistantes aunque sí que lo hace en este caso si se utilizan soportes de Chebyshev. Como ilustración de este hecho, la figura siguiente recoge el grafo de f(x) en el intervalo [-6, 6] y el grafo del polinomio interpolador de Lagrange obtenido con el soporte formado por los 13 puntos {-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6}. Puede observarse el “alto” valor del error de interpolación máximo. Si los 13 puntos se hubieran escogido según la fórmula del soporte de Chebyshev: ⎛ (2·i + 1) ⎞ xi = 6·cos ⎜ ·π ⎟ ⎝ 26 ⎠ 39 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid la figura siguiente recoge la gráfica de la función f(x) y del polinomio interpolador de Lagrange. En ella se aprecia la reducción del máximo valor del error de interpolación. Ejercicios propuestos: 1º) Siendo f(x) = 2·x·e-(4·x+2) y considerando el soporte formado por los tres puntos siguientes {x0 = 0.2, x1 = 0.5, x2 = 0.8}, se pide: a) Determinar la expresión de los polinomios de base de Lagrange asociados a dicho soporte y representarlos en el intervalo [0, 1]. b) Utilizar la fórmula de Lagrange para determinar la expresión del polinomio interpolador de Lagrange de f(x) sobre el soporte {x0, x1, x2}. c) Representar gráficamente en [0, 1] la función f(x) y su polinomio interpolador. d) Utilícese el teorema 3 que proporciona la fórmula del error de interpolación para determinar la expresión del error de interpolación en este caso. e) Determínese la expresión del error de interpolación como la diferencia entre la función f(x) y el polinomio interpolador hallado. 40 Programación y Métodos Numéricos Interpolación polinómica f) A partir de las dos expresiones del error calculadas en los apartados anteriores obténgase alguno de los puntos ξ* ∈ [0,1] en los que se verifica que el error de interpolación cometido en x*=0.4 está dado por la fórmula obtenida en el apartado d). g) Obténgase una cota del error de interpolación en cualquier punto x ∈ [0,1] a partir de la expresión del apartado d). h) Determínense, a partir de la expresión del error obtenida en el apartado e) los puntos del intervalo [0, 1] en los que se hace máximo el valor absoluto del error de interpolación y compárese el error máximo con la cota obtenida en el apartado g). 2º) Repítase el ejercicio anterior utilizando un soporte de Chebyshev con tres puntos en el intervalo [0, 1]. 3º) Analícese la evolución de la cota del error de interpolación de Lagrange al incrementar el número de puntos del soporte cuando se interpola en el intervalo la función de Runge f(x) = (1+x2)-1 utilizando un soporte equidistante. 41 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 2.3. La fórmula de interpolación de Newton, Otra forma de calcular el polinomio interpolador de Lagrange de una función f(x) sobre un soporte {x0, x1, ..., xn} es a través de la denominada fórmula de Newton. Dicha fórmula es muy eficiente cuando se persigue calcular el polinomio interpolador o el valor de dicho polinomio en algún punto concreto ya que los coeficientes del polinomio interpolador pueden obtenerse fácilmente a partir de las tablas de diferencias divididas de la función en el soporte de interpolación. Es además una fórmula que además permite actualizar fácilmente la expresión del polinomio interpolador si se añade un nuevo punto al soporte de interpolación. Como ya se señaló en la introducción a este tema, la fórmula de Newton puede obtenerse fácilmente si se expresa el polinomio interpolador de Lagrange de la función f(x) sobre el soporte {x0, x1, ..., xn} mediante la expresión: pn (x) = a0 + a1·(x − x 0 ) + a2 ·(x − x 0 )·(x − x1 ) + ... + an ·(x − x 0 )·(x − x1 )·...·(x − xn−1 ) = i−1 n ⎛ ⎞ = a0 + ∑ ⎜ ai ∏ (x − x j ) ⎟ i=1 ⎝ j =0 ⎠ Con esta expresión, y denotando por fi a los valores f(xi), las (n+1) igualdades que debe verificar el polinomio interpolador de Lagrange, p(xi) = fi, conducen a un sistema de ecuaciones triangular inferior del que es sencillo despejar el valor de los coeficientes a0, a1, ..., an. Observemos que si el soporte estuviera formado por un único punto {x0} el polinomio interpolador sería una constante: p0(x) = a0 y como p(x0) debe coincidir con f0 es obvio que: a0 = f0. Si ahora se considera el soporte {x0, x1} el polinomio interpolador de Lagrange sería un primer grado que tendría la expresión: p1(x) = a0 + a1·(x – x0) y al tener que verificarse que p(x0) = f0 y p(x1) = f1 se verificará que: 42 Programación y Métodos Numéricos a0 = f0 Interpolación polinómica y a1 = Ello nos permite expresar p1(x) en la forma: p1(x) = p0(x) + a1·(x-x0) = p0(x) + f1 − f0 x1 − x 0 f1 − p0 (x1 ) ·(x-x0) x1 − x 0 donde p0(x) es el polinomio interpolador de Lagrange en el soporte {x0}. De forma análoga, si ahora se considera el soporte {x0, x1, x2} el polinomio interpolador de Lagrange será de segundo grado y tendrá la expresión: p2(x) = a0 + a1·(x-x0) + a2·(x-x0)·(x-x1) y de las igualdades p(x0) = f0 , p(x1) = f1 y p(x2) = f2 se obtiene que: a0 = f0 , a1 = f1 − f0 x1 − x 0 a2 = y f2 − (a0 + a1 ( x 2 − x 0 )) ( x 2 − x0 )·(x 2 − x1 ) lo que nos permite escribir el polinomio interpolador en la forma: p2(x) = f0 + f − (a0 + a1 ( x 2 − x 0 )) f1 − f0 ·(x-x0) + 2 ·(x-x0)·(x-x1) = x1 − x 0 ( x 2 − x0 )·(x 2 − x1 ) = p1(x) + f2 − p1(x 2 ) ·(x-x0)·(x-x1) ( x 2 − x0 )·(x 2 − x1 ) donde p1(x) es el polinomio interpolador de Lagrange en el soporte {x0, x1}. En general, siendo pk-1(x) el polinomio interpolador de Lagrange sobre el soporte {x0, x1, ..., xk-1} y denotando por pk(x) al polinomio interpolador de Lagrange sobre el soporte {x0, x1, ..., xk-1, xk} se verifica19 que: k −2 k −1 j=0 j=0 pk (x) = a0 + a1·(x − x 0 ) + ... + ak −1·∏ (x − x j ) +ak ·∏ (x − x j ) = k −1 = pk-1(x) + ak ·∏ (x − x j ) j= 0 y de la igualdad pk(xk) = fk se tendrá que: 19 Esta afirmación se demostrará con mayor detalle un poco más adelante. 43 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid ak = fk − pk −1(xk ) k −1 ∏ (x k − xj ) j= 0 Podemos observar además que en el cálculo de a0 sólo interviene el valor en {x0}, que en el cálculo de a1 intervienen los valores en {x0 , x1}, y que, en general, en el cálculo de ak intervienen los valores en {x0, x1, ..., xk}. Es por ello habitual referirse a estos coeficientes con la notación a0 = f[x0], a1 = f[x0 ,x1], ..., ak = f[x0, x1, ..., xk] (k = 0, 1, ..., n) poniendo así de manifiesto los puntos del soporte que intervienen en su cálculo. Ello tiene especial interés si se observa que el orden en el que se han ido tomando los puntos del soporte ( {x0}, {x0, x1}, ..., {x0, x1, ..., xk}, ...) podría haber sido diferente. En efecto, observemos que, siendo único el polinomio interpolador, podemos expresarlo de múltiples maneras dependiendo de la ordenación del soporte de interpolación. En efecto, si denotamos por {i0, i1, ..., in} a una permutación cualquiera de los índices { 0, 1, ..., n} y consideramos el mismo soporte que antes pero reordenado en la forma xi0 ,xi1 ,...,x in el { } polinomio interpolador de Lagrange se podría expresar como: pn (x) = a0* + a1* ·(x − x i0 ) + a2* ·(x − x i0 )·(x − xi1 ) + .... + an* ·(x − xi0 )·(x − xi1 )·...·(x − xin −1 ) = i−1 n ⎛ ⎞ = a'0 + ∑ ⎜ ai' ·∏ (x − xij ) ⎟ i=1 ⎝ j= 0 ⎠ Obviamente los coeficientes {a0, a1, ...,an-1} y {a0* ,a1* ,...,an* −1} no tienen por qué coincidir y ahora se tendrá que: a0* = f ⎣⎡ xi0 ⎦⎤ = fi0 , ....., a = f ⎡⎣ xi0 ,xi1 ,...,xik ⎤⎦ = * ik fik − pk* −1(xik ) ∏(x k −1 j= 0 ik − x ij ) (k = 1, ...., n) { } donde pk* −1(x) es el polinomio de Lagrange sobre el soporte xi0 ,xi1 ,...,xik −1 . 44 Programación y Métodos Numéricos Interpolación polinómica Pero puesto que el polinomio interpolador de Lagrange es único, ambas expresiones conducen al mismo polinomio interpolador independientemente del orden en que se tomen sus puntos. Por tanto el coeficiente de xi (i = 0, 1, ..., n) en ambas expresiones debe ser el mismo. Ello implica que an* = an o con la notación que hemos introducido anteriormente: f [ x 0 ,x1,...,x n ] = f ⎡⎣ xi0 ,xi1 ,..., xin ⎤⎦ . Concretemos más estos aspectos. Según hemos detallado anteriormente, si en la expresión del polinomio interpolador que estamos considerando en este apartado sólo se consideran sus (k+1) primeros sumandos (con k < n), el polinomio pk(x) correspondiente es el polinomio interpolador de f(x) sobre el soporte {x0, x1, ..., xk} ya que, siendo un polinomio de grado menor o igual que k se verifica que pk(xi) = fi (i = 0, 1, ..., k) . Ello permite interpretar la fórmula anterior como una fórmula “recursiva” en la que a partir del polinomio de grado k-1 que interpola a la función f(x) en el soporte {x0, x1, ..., xk-1}: i−1 k −1 ⎛ ⎞ pk(x) = a0 + ∑ ⎜ ai ∏ (x − x j ) ⎟ i=1 ⎝ j= 0 ⎠ puede obtenerse fácilmente el polinomio interpolador de Lagrange, pk(x), de f(x) sobre el soporte {x0, x1, ..., xk} mediante: k −1 pk(x) = pk-1(x) + ak· ∏ (x − x j ) j=0 Supongamos dado un soporte de n puntos distintos {x0, x1, ...., xn-1} y conocidos los valores fi (i = 0, ..., n-1) que toma una función f(x) en dichos puntos. El polinomio interpolador de Lagrange, pn-1(x), de f(x) en este soporte verificará: pn-1(x) = fi (i = 0, ..., (n-1)) Si al soporte anterior se le añade un nuevo punto xn, disitinto a los que formaban el soporte anterior, obteniendo así el soporte de (n+1) puntos {x0, x1, ...., xn-1, xn} y se denota por fn al valor f(xn), el nuevo polinomio interpolador de Lagrange, pn(x), de la función f(x) sobe este soporte deberá satisfacer las igualdades: (i = 0, …, (n-1), n) pn(x) = fi 45 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Si se denota por qn(x) al polinomio de grado n: qn(x) = pn(x) – pn-1(x) se tendrá verifica que: q(xi) = 0 (i = 0, ..., (n-1)) Se tiene así que {x0, ..., x(n-1)} son n raíces del polinomio de grado qn(x). Ello nos permite escribir este polinomio en la forma: (n −1) qn(x) = an·(x-x0)·(x-x1)·…·(x-x(n-1)) = an· ∏ (x − x j ) j=0 Y puesto que qn(x) = pn(x) – pn-1(x) se obtiene que: ∀x ∈ {x0 ,...,xn−1} : (n −1) pn(x) – pn-1(x) = an· ∏ (x − x j ) ⇒ j=0 ⇒ an = pn (x) − pn−1(x) ∀x ∉ {x 0 ,...,xn−1} (n −1) ∏ (x − x ) j j=0 En particular para x = xn se tiene que: an = pn (xn ) − pn−1(xn ) fn − pn−1(xn ) = (n−1) (n −1) ∏ (xn − x j ) ∏ (xn − x j ) j= 0 j=0 Con esta expresión de an resulta finalmente que: f − p (x ) (n−1) pn (x) = pn−1(x) + (nn−1) n−1 n ·∏ (x − x j ) ∏ (xn − x j ) j=0 j=0 Definición (Diferencias divididas) Se denomina diferencia dividida de la función f(x) en el soporte {x0, ..., xn-1, xn}, y se representa por f[x0, ..., xn-1, xn], al valor del coeficiente an previamente obtenido, es decir: f [ x 0 ,x1,...,xn−1,xn ] = f − pn−1(xn ) n (n −1) ∏ (x n − xj ) j =0 • 46 Programación y Métodos Numéricos Interpolación polinómica Denotemos por f[xi] = fi (i = 0, 1, ..., n). Según el desarrollo anterior, si se considera un soporte formado por el punto {x0} se verifica que p0(x0) = a0 = f0 (= f[x0]). A partir de este polinomio, si se añade un nuevo punto al soporte para tener {x0, x1} se tendrá que: p1(x)= p0(x) + f[x0, x1]·(x-x0) = f[x0] + f[x0, x1]·(x-x0) Añadiendo ahora al soporte el punto x2 para tener {x0, x1, x2} resultará que: p2(x)= p1(x) + f[x0, x1, x2]·(x-x0)·(x-x1) = = f[x0] + f[x0, x1]·(x-x0) + f[x0, x1, x2]·(x-x0)·(x-x1) En general se tendrá que: pn(x)= pn-1(x) + f[x0, x1,…, xn-1, xn]·(x-x0)·(x-x1)·...(x-xn-1) = (i−1) n ⎛ ⎞ = f[x 0 ] + ∑ ⎜ f [ x 0 ,...,xi ]·∏ (x − x j ) ⎟ i=1 ⎝ j= 0 ⎠ La fórmula anterior se conoce como fórmula de interpolación de Newton. Su uso, por el momento, sólo plantearía la dificultad de calcular las diferencias divididas que en ella intervienen. Demostremos algunas propiedades de las diferencias divididas que nos permitirán desarrollar una forma más cómoda de calcularlas. Propiedad 1. Sea {i0, i1, ..., im-1, im} un conjunto de (m+1) índices diferentes del conjunto de (n+1) índices {0, 1, ...., n} y sea {j0, j1, ... , jm-1, jm} cualquier otro conjunto de m índices obtenido como una permutación del conjunto de índices {i0, i1, ..., im-1, im}. Se verifica que: f ⎡⎣ xi1 ,xi2 ,...,xim −1 ,xim ⎤⎦ = f ⎡⎣ x j1 ,x j2 ,....,x jm −1 ,x jm ⎤⎦ Demostración: Según el proceso antes descrito, el cálculo del polinomio interpolador de Lagrange mediante la fórmula de Newton se puede ir realizando, sobre el soporte xi0 ,xi1 ,...,xim , de la forma siguiente: { } 47 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid { } p0(x) = fi0 = f ⎡⎣ xi0 ⎤⎦ Sobre xi0 : { } ( { ) ( p1(x)=p0+ f ⎡⎣ xi0 ,xi1 ⎤⎦· x − xi0 = f ⎡⎣ xi0 ⎤⎦ + f ⎡⎣ xi0 ,xi1 ⎤⎦· x − xi0 Sobre xi0 ,xi1 : ) p2(x) = p1(x) + f ⎡⎣ xi0 ,xi1 ,xi2 ⎤⎦· x − xi0 ·( x − xi1 ) = } ( Sobre xi0 ,xi1 ,xi2 : ) = f ⎡⎣ xi0 ⎤⎦ + f ⎡⎣ xi0 ,xi1 ⎤⎦· x − xi0 + f ⎡⎣ xi0 ,xi1 ,xi2 ⎤⎦· x − xi0 ·( x − xi1 ) ( ) ( ) ........ { } ( ) + Sobre xi0 ,xi1 ,...,xim : pm(x) = f ⎡⎣ xi0 ⎤⎦ + f ⎡⎣ xi0 ,xi1 ⎤⎦· x − xi0 + f ⎡⎣ xi0 ,xi1 ,xi2 ⎤⎦· x − xi0 ·( x − xi1 ) + ( ) +....+ f ⎡⎣ xi0 ,xi1 ,...,x im ⎤⎦· x − x i0 ·( x − xi1 )·...·( x − xim −1 ) ( ) Si ahora se considera el mismo soporte pero reordenado en la forma x j0 ,x j1 ,...,x jm −1 ,x jm puede repetirse el proceso obteniendo como polinomios { } interpoladores: { } q0(x) = f j0 = f ⎡⎣ x j0 ⎤⎦ Sobre x j0 : { } ( { ) ( q1(x)=q0+ f ⎡⎣ x j0 ,x j1 ⎤⎦· x − x j0 = f ⎡⎣ x j0 ⎤⎦ + f ⎡⎣ x j0 ,x j1 ⎤⎦· x − x j0 Sobre x j0 ,x j1 : ) q2(x) = q1(x) + f ⎡⎣ x j0 ,x j1 ,x j2 ⎤⎦· x − x j0 ·( x − x j1 ) = } ( Sobre x j0 ,x j1 ,x j2 : ) = f ⎡⎣ x j0 ⎤⎦ + f ⎡⎣ x j0 ,x j1 ⎤⎦· x − x j0 + f ⎡⎣ x j0 ,x j1 ,x j2 ⎤⎦· x − x j0 ·( x − x j1 ) ( ) ( ) ........ { } ( ) + Sobre x j0 ,x j1 ,...,x jm : qm(x) = f ⎡⎣ x j0 ⎤⎦ + f ⎡⎣ x j0 ,x j1 ⎤⎦· x − x j0 + f ⎡⎣ x j0 ,x j1 ,x j2 ⎤⎦· x − x j0 ·( x − x j1 ) + ( ) +....+ f ⎡⎣ x j0 ,x j1 ,...,x jm ⎤⎦· x − x j0 ·( x − x j1 )·...·( x − x jm −1 ) ( ) En virtud del teorema 1 en el que se demostró la existencia y unicidad del polinomio interpolador de Lagrange, se verifica que qm(x) y pm(x) son el mismo polinomio pues interpolan a f(x) sobre el mismo soporte (aunque ordenado de 48 Programación y Métodos Numéricos Interpolación polinómica formas distintas). Identificando los coeficientes que multiplican a xm en ambos coeficientes se tiene que: f ⎡⎣ xi0 ,xi1 ,...,x im ⎤⎦ = f ⎡⎣ x j0 ,x j1 ,...,x jm ⎤⎦ c.q.d. Propiedad 2 Sea {i0, i1, ..., im-1, im} un conjunto de m índices diferentes del conjunto de (n+1) índices {0, 1, ...., n}. Se verifica que: f ⎡ x i ,...,xim −1 ,xim ⎤⎦ − f ⎡⎣ xi0 ,xi1 ,...,xim −1 ⎤⎦ f ⎡⎣ x i 0 ,x i1 ,...,x im −1 ,x im ⎤⎦ = ⎣ 1 xim − x i0 donde f[xk] = f(xk) (k = i0, i1, ..., im). Demostración: Según los desarrollos realizados para obtener la fórmula de Newton, si se considera el soporte xi 0 ,xi1 ,...,x im −1 ,x im se tendrá que el polinomio interpolador { } de Lagrange de f(x) (que será de grado menor o igual que m) responde a la expresión: pm(x) = pm-1(x) + f ⎡⎣ xi 0 ,xi1 ,...,xim −1 ,xim ⎤⎦ · x − xi0 ·( x − xi1 )·...·( x − xim −1 ) = ( ) = f ⎣⎡ xi0 ⎦⎤ + f ⎣⎡ xi0 ,xi1 ⎦⎤·(x − xi0 ) + f ⎣⎡ xi0 ,xi1 ,xi2 ⎦⎤·(x − xi0 )·(x − xi1 ) + ….+ · x − xim −1 ) + f ⎡⎣ xi 0 ,xi1 ,...,xim −1 ,xim ⎤⎦ · x − xi0 ·( x − xi1 )·...·( x − xim − 2 )( ( ) { } Si el soporte se considera en orden inverso, xi m ,xim −1 ,...,x i1 ,xi0 , los sucesivos polinomios interpoladores que se irán obteniendo serán: Sobre {xim } : q0(x) = fim = f ⎡⎣ xim ⎤⎦ Sobre {xim ,xim −1 } : q1(x) = q0(x) + f ⎡⎣ xim ,xim −1 ⎤⎦·( x − xim ) = 49 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid = f ⎡⎣ xim ⎤⎦ + f ⎡⎣ xim ,xim −1 ⎤⎦·( x − xim ) · x − xim −1 ) = Sobre {xim ,xim −1 ,,xim − 2 } :q2(x) = q1(x)+ f ⎡⎣ xim ,xim −1 ,xim − 2 ⎤⎦·( x − xim )( · x − xim −1 ) = f ⎡⎣ xim ⎤⎦ + f ⎡⎣ xim ,xim −1 ⎤⎦·( x − xim ) + f ⎡⎣ xim ,xim −1 ,xim − 2 ⎤⎦·( x − xim )( ........ { } Sobre xim ,xim−1 ,,xim − 2 ,...,xi0 : qm(x)= f ⎡⎣ xim ⎤⎦ + f ⎡⎣ xim ,xim −1 ⎤⎦·( x − xim ) + f ⎡⎣ xim ,xim −1 ,xim − 2 ⎤⎦·( x − xim )( · x − xim −1 ) + + .... + f ⎡⎣ xim ,xim −1 ,xim − 2 ,...,x i1 ⎤⎦·( x − xim )( · x − xim −1 )·...·( x − xi2 ) + + f ⎡⎣ xim ,xim −1 ,xim − 2 ,...,xi1 ,xi0 ⎤⎦·( x − xim )( · x − xim−1 )·...·( x − xi2 )( · x − xi1 ) En virtud del teorema 1 (de existencia y unicidad del polinomio interpolador de Lagrange) el polinomio interpolador de f(x) sobre el soporte de (m+1) puntos xi 0 ,xi1 ,...,x im −1 ,x im es único y no depende del orden en que se tomen los puntos. { } Por tanto qm(x) = pm(x). Identificando los coeficientes de xm en las expresiones de pm(x) y qm(x) se tiene que: f ⎡⎣ xi 0 ,xi1 ,...,xim −1 ,xim ⎤⎦ = f ⎡⎣ xim ,xim −1 ,xim − 2 ,...,xi1 ,xi0 ⎤⎦ Identificando ahora los coeficientes que multiplican a xm-1 se tiene que: ( ) f ⎡⎣ xi0 ,xi1 ,...,xim −1 ,xim ⎤⎦· − xi0 − xi1 − ... − xim −1 + f ⎡⎣ xi0 ,xi1 ,...,xim −1 ⎤⎦ = = f ⎡⎣ xim ,xim −1 ,...,x i1 ,xi0 ⎤⎦·( − xim − xim −1 − ... − xi1 ) + f ⎡⎣ xim ,xim −1 ,...,xi1 ⎤⎦ Y puesto que, en virtud de la propiedad anterior el orden en que se tomen los puntos no altera el valor de la diferencia dividida, la igualdad anterior se puede rescribir en la forma: f ⎡⎣ xi0 ,xi1 ,...,xim −1 ,xim ⎤⎦ · xim − xi0 = f ⎡⎣ xi1 ,xi2 ,...,x im ⎤⎦ − f ⎡⎣ xi0 ,xi1 ,...,xim −1 ⎤⎦ ( ) 50 Programación y Métodos Numéricos Interpolación polinómica de donde: f ⎡ x i ,...,xim −1 ,xim ⎤⎦ − f ⎡⎣ xi0 ,xi1 ,...,xim −1 ⎤⎦ f ⎡⎣ x i 0 ,xi1 ,...,xim −1 ,xim ⎤⎦ = ⎣ 1 xim − x i0 c.q.d. La propiedad anterior permite calcular fácilmente las diferencias divididas ordenando los cálculos en la forma recogida en la tabla siguiente (construida para un soporte de 5 puntos) en la que los cálculos se irán realizando columna a columna: x0 → f [ x0 ] → x1 → x2 x3 x4 f [ x1 ] → f [ x 0 ,x1 ] → f [ x1,x 2 ] → f [ x 0 , x1, x 2 ] → f [ x 0 ,x1,x 2 , x 3 ] → f [ x 0 , x1, x 2 ,x 3 ,x 4 ] f [ x1,x 2 , x 3 ] → f [ x1, x 2 , x 3 ,x 4 ] → f [ x 2 ] → f [ x 2 ,x 3 ] → f [ x 2 ,x 3 ,x 4 ] → f [ x3 ] → f [ x3 , x 4 ] → f [x4 ] Esta forma de proceder es la que se recoge en el siguiente algoritmo de construcción de la tabla de diferencias divididas sobre un soporte de (n+1) puntos. Algoritmo de construcción de la tabla de diferencias divididas20. Datos: n, {x0, x1, ...., xn } y {f0, f1, ...., fn} Para i desde i = 0 hasta i = n con paso 1 hacer: f[xi] = fi Fin bucle en i. Para j desde j = 1 hasta j = n con paso 1 hacer: Para i desde i = 0 hasta i = (n-j) , con paso 1, hacer: f[xi, ..., xi+j] = (f[xi+1, ..., xi+j]- f[xi, ..., xi+j-1]) /(xi+j – xi) Fin bucle en i. Fin bucle en j. Fin algoritmo. 20 En la programación de este algoritmo es habitual almacenar los valores de las diferencias divididas en una matriz de dimensiones (n+1, n+1) en las que los elementos Ai,1 almacenan los valores f[xi-1] (i= 1, ..., n+1) y los elementos Ai,j almacenan los valores de f[xi-1, ..., xi+j-2] (j = 2, ..., n+1; i = 1, ...., n+2-j). 51 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Ejemplos: 1º) Utilícese la fórmula de Newton para obtener la expresión del polinomio interpolador de Lagrange de la función f(x) = 2·x·e-(4·x+2) sobre el soporte {x0 = 0, x1 = 1/3, x2 = ½, x3 = 1}. Se tiene que: f0 = f(0) = 0 = f[x0], f1 = f(1/3) ≈ 0.02378266 = f[x1], f2 = f(1/2) ≈ 0.01831564 = f[x2] , f3 = f(1) ≈ 0.00495750 = f[x3] Con estos valores y utilizando la relación de recurrencia: f [ xi+1,..., xi+k −1,xi+k ] − f [ xi ,xi+1,..., xi+k −1 ] f [ xi ,...,xi+k ] = x i+k − x i se puede construir la tabla de diferencias divididas: i xi f[xi] f[xi,xi+1] f[xi,xi+1,xi+2] f[xi,xi+1,xi+2, xi+3] 0 0 0 0.07134799 -0.20830025 0.21742906 1 1/3 0.02378266 -0.03280214 0.00912881 2 1/2 0.01831564 -0.02671627 3 1 0.00495750 por lo que utilizando la fórmula de Newton se tiene que: p3(x) = 0 + 0.07134799·(x-0) + (-0.20830025)·(x-0)·(x – 1/3) + + 0.21742906·(x-0)·(x-1/3)·(x-1/2) = = 0.1770195813· x - 0.3894911370·x2 + 0.2174290601·x3 La figura siguiente recoge la gráfica de la función f(x) (en trazo discontinuo) y del polinomio interpolador de Lagrange. 52 Programación y Métodos Numéricos Interpolación polinómica f(x) p3(x) 2º) Calcúlese la expresión del polinomio interpolador de Lagrange de la misma función que en el ejercicio anterior, f(x) = 2·x·e-(4·x+2) sobre el soporte { 0, 1/3, 1/2 , 2/3, 1}. El soporte de interpolación es el del ejercicio anterior añadiéndole el punto 2/3. Si denotamos por x0 = 0, x1 = 1/3, x2 = ½, x3 = 1 y x4 = 2/3 puede completarse la tabla de diferencias divididas como sigue (se han escrito en cursiva los nuevos valores que ha sido necesario calcular): i xi f[xi] f[xi,xi+1] f[xi,xi+1,xi+2] f[xi,xi+1,xi+2, xi+3] f[x0,x1,x2, x3, x4] 0 0 0 0.07134799 -0.20830025 0.21742906 1 1/3 0.02378266 -0.03280214 0.00912881 0.044155155 2 1/2 0.01831564 -0.02671627 0.02384719 3 1 0.00495750 -0.02274174 4 2/3 0.01253808 -0.25991085 por lo que f[x0, x1,x2, x3, x4] = - 0.25991085 y el nuevo polinomio interpolador estará dado por: 53 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid p4(x) = p3(x) + (-0.25991085)·(x-0)·(x-1/3)·(x-1/2)·(x-1) = = 0.1770195813· x - 0.3894911370·x2 + 0.2174290601·x3 – -0.25991085 · (x-0)·(x-1/3)·(x-1/2)·(x-1) = = 0.22033805·x – 0.64940199·x2 + 0.69393230·x3 –0.25991085·x4 f(x) p4(x) Propiedad 3 Si f ∈ Cn ( ( a,b ) ) , para todo soporte de (n+1) puntos distintos {x0, x1, ..., xn} pertenecientes al intervalo [a, b] existe un punto ξ ∈ ( a,b ) verificando que: f (n (ξ) f [ x 0 ,x1,...,xn ] = n! Demostración: Consideremos el soporte {x0, x1, ..., xn-1} y designemos por pn-1(x) al polinomio interpolador de f(x) sobre él. Según la fórmula del error de interpolación de Lagrange (proporcionada en el teorema 2 del apartado 2.2.) si f ∈ Cn ((a,b)) se verifica que: ∀x ∈ (a,b) ∃ξ=ξ(x) / f(x)-pn-1(x) = f (n (ξ) n−1 ·∏ (x − x j ) n! j=0 En particular, si con esta fórmula se evalúa el error en el punto xn se tendrá que: f (n (ξ) n−1 ∃ξ=ξ(xn ) / f(x n )-pn-1(xn ) = ·∏ (xn − x j ) n! j=0 de donde: 54 Programación y Métodos Numéricos ∃ξ=ξ(x n ) / Interpolación polinómica f(x n )-pn-1(xn ) n −1 ∏ (x n − xj) = f (n (ξ) n! j=0 siendo el lado izquierdo de la igualdad anterior la diferencia dividida en {x0, .., xn}. En resumen si f ∈ Cn ((a,b)) , para todo soporte de (n+1) puntos distintos {x0, .., xn} de (a, b), se vrifica que: f (n (ξ) ∃ξ / f [ x 0 ,x1,...,xn−1,xn ] = n! c.q.d. Una consecuencia inmediata de la propiedad anterior es que si f(x) es una función polinómica de grado m, las diferencias divididas construidas sobre más de (m+1) puntos serán nulas (pues la derivada de orden (m+1) de un polinomio de grado m siempre es nula)21. El error de interpolación también puede expresarse en términos de diferencias divididas. Esto es lo que se hace en el siguiente teorema Teorema 4 Siendo f ∈ C(n+1) ((a,b)) y denotando por pn(x) al polinomio interpolador de Lagrange de f(x) construido sobre un soporte genérico de (n+1) puntos distintos {x0, ..., xn} pertenecientes al intervalo (a, b), se verifica que: n ∀x* ∈ (a,b) / x* ∉ {x 0 ,...,xn } : E(x*) = f(x*) - pn (x*) = f[x 0 ,x1,...,xn ,x*]·∏ (x * − x j ) j=0 Demostración: Por definición de la diferencia dividida en {x0, ..., xn, x*} se tiene que: f [ x 0 ,...,xn ,x * ] = f(x*) − pn (x*) n ∏ (x * − x ) j j= 0 21 A la misma conclusión podría haberse llegado considerando que el polinomio interpolador de una función polinómica de grado m es ella misma y que por tanto, si se usa la fórmula de Newton para expresar el polinomio interpolador deben ser nulas todas las diferencias divididas construidas sobre (m+1) puntos o más ya que multiplican a productos de más de m binomios. 55 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid de donde: n f(x*) − pn (x*) = f [ x 0 ,...,x n ,x * ]·∏ (x * − x j ) j=0 c.q.d. Ejemplo: Una de las aplicaciones de las técnicas de interpolación polinomial es la búsqueda de expresiones simplificadas de sumatorios (obviamente cuando dichas expresiones sean polinómicas). Ilustraremos este proceso con la determinación de la expresión del sumatorio: n ∑ i·(i − 1)·(i − 2) . La forma de i= 2 proceder se sustenta en considerar que si el sumatorio tiene una expresión polinómica de grado “m”, es decir si n f(n) = ∑ i·(i − 1)·(i − 2) = a0 + a1·n + ... + am·nm i= 2 podemos interpolar el polinomio f(x) en un soporte formado por abscisas enteras y la fórmula buscada se obtendrá evaluándolo en x = n. Además por ser f(x) un polinomio de grado m, todas sus diferencias divididas construidas sobre más de (m+1) puntos se anularán. Por ello si se interpola con más de (m+1) puntos (entendidos aquí como abscisas enteras) se obtendrá el polinomio buscado. El problema “a priori” es conocer cuál es el valor de “m”22. Para ello, puesto que en el sumatorio aparecen tres productos en los que interviene “i” es razonable pensar que el polinomio resultante al menos será de grado 3 por lo que actuaremos en principio con 4 puntos. Tomemos, por ejemplo el soporte {2, 3, 4, 5} y construyamos la tabla de diferencias divididas. xi 2 3 4 5 f[xi] 0 6 30 90 f[xi,xi+1] f[xi,..,xi+2] f[xi,..,xi+3] 6 9 3 24 18 60 22 En el subapartado siguiente veremos la forma en que se puede determinar el valor de “m” sin necesidad de realizar pruebas con distintos valores como aquí se hace. 56 Programación y Métodos Numéricos Interpolación polinómica ¿Será suficientemente alto el número de puntos del soporte? En principio no podemos estar seguros de ello pues las últimas diferencias divididas no se han anulado. Para salir de dudas añadamos uno más y modifiquemos la tabla: xi 2 3 4 5 f[xi] 0 6 30 90 6 210 f[xi,xi+1] f[xi,..,xi+2] f[xi,..,xi+3] 6 9 3 4 24 18 60 30 120 f[xi,..,xi+4] ¼ La tabla anterior nos muestra que, al menos, se necesitan 5 puntos para obtener la expresión exacta del sumatorio (pues la última diferencia dividida obtenida no es nula). Pero ¿serán necesarios más puntos?. Añadamos uno más y reconstruyamos la tabla: xi 2 3 4 5 6 f[xi] 0 6 30 90 210 7 420 f[xi,xi+1] f[xi,..,xi+2] f[xi,..,xi+3] 6 9 3 24 18 4 60 30 5 45 120 210 f[xi,..,xi+4] ¼ ¼ f[xi,..,xi+5] 0 La última de las diferencias divididas halladas ya tiene el valor 0. Ello parece indicar que el polinomio buscado podrá determinarse con 5 puntos de soporte. No obstante para asegurarnos de que lo anterior no es una casualidad podemos variar el último de los puntos escogidos (sustituyendo “7” por ejemplo por “9”). Si así se hace obtenemos que: f[xi] f[xi,xi+1] f[xi,..,xi+2] f[xi,..,xi+3] f[xi,..,xi+4] f[xi,..,xi+5] xi 0 6 9 3 ¼ 0 2 ¼ 3 6 24 18 4 4 30 60 30 11/2 115/2 5 90 120 6 210 350 9 1260 57 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Al volver a ser nula la última diferencia dividida podemos tener alguna esperanza de que el polinomio buscado sea de grado 4 (suposición que deberemos verificar a posteriori). Aplicando la fórmula de Newton se tiene que: f(n) = 0+ 6·(n-2) +9·(n-2)·(n-3) + 3·(n-2)·(n-3)·(n-4) + (¼)·(n-2)·(n-3)·(n-4)·(n-5) = 2·n − n2 − 2·n3 + n4 = 4 En resumen, n 2·n − n2 − 2·n3 + n4 i·(i − 1)·(i − 2) = ∑ 4 i= 2 Para verificar esta expresión se calcularán los valores del sumatorio y de f(n) para diferentes valores de “n”. En la gráfica siguiente se recogen los valores 2·x − x 2 − 2·x 3 + x 4 calculados y el grafo de f(x) = observándose que en las 4 abscisas enteras la función coincide con los valores del sumatorio correspondientes • Ejercicios propuestos: 1º) Demostrar que se verifica que: ⎛ ⎞ ⎜ ⎟ n ⎜ ⎟ fi f [ x 0 ,x1,....,xn−1,xn ] = ∑ ⎜ n ⎟ i= 0 ⎜ ⎟ (x x ) − i j ⎜⎜ ∏ ⎟⎟ j =0 ⎝ j ≠i ⎠ 58 Programación y Métodos Numéricos Interpolación polinómica 2º) a) Utilícese la fórmula de Newton para calcular el polinomio interpolador de Lagrange de la función f(x) = x5 sobre el soporte {-2, -1, 0, 1, 2}. b) Calcúlese el nuevo polinomio interpolador de Lagrange de f(x) = x5, si al soporte anterior se le añade un nuevo punto x5. 3º) Calcúlese la expresión polinómica en la variable entera “n” que proporciona el valor del sumatorio: n ∑ i ·(i − 2) 2 3 i=1 4º) En el método de Gauss para la resolución de sistemas de n ecuaciones lineales con n incógnitas se realizan: (n −1) ∑ (i2 + i) + (n −1) i=1 (n −1) ∑ (i 2 + i) + i=1 ∑ (n − i) sumas, i=1 (n −1) ∑ (n − i) productos y i=1 (n −1) n+ ∑ i divisiones i=1 Obténgase la expresión polinómica en la variable entera n que proporciona el número total de operaciones y demuéstrese que cuando n es elevado el número total de operaciones es del orden de (2·n3/3). 5º) En el método de Cholesky para la resolución de sistemas definidos positivos de n ecuaciones lineales con n incógnitas se realizan: (n −1) (n −1) ∑ i·(n − i) + 2· ∑ (n − i) sumas, i=1 i=1 (n −1) (n −1) ∑ i·(n − i) + 2· ∑ (n − i) productos i=1 i=1 (n −1) 2·n+ ∑ i divisiones y i=1 n raíces cuadradas 59 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Obténgase la expresión polinómica en la variable entera n que proporciona el número total de operaciones y demuéstrese que cuando n es elevado el número total de operaciones es del orden de (n3/3). 6º) En el método LDLT para factorizar una matriz simétrica de n filas y columnas puede programarse realizándose el siguiente número de operaciones: ⎛ (i−1) ⎞ n ( j 1) − ⎜∑ ⎟ + ∑ (i − 1) sumas, ∑ i=1 ⎝ j=1 ⎠ i=1 n n ⎛ (i−1) ⎞ 2·∑ ⎜ ∑ ( j − 1) ⎟ + 2·∑ (i − 1) productos i=1 ⎝ j=1 i=1 ⎠ n y (n −1) ∑ i divisiones i=1 Obténgase la expresión polinómica en la variable entera n que proporciona el número total de operaciones y demuéstrese que cuando n es elevado el número total de operaciones es del orden de (n3/2). 60 Programación y Métodos Numéricos Interpolación polinómica 2.4. Interpolación con soportes equidistantes: Fórmulas con diferencias finitas. Por la simplicidad que representa es muy frecuente trabajar con soportes de interpolación equidistantes. Recuérdese que se denominaban así aquellos soportes en los que la distancia entre dos puntos consecutivos era siempre la misma. Más concretamente, denotando por h a la distancia entre puntos consecutivos del soporte, se define un soporte equidistante de (n+1) como aquel en el que sus puntos se generan a partir del primero, x0, mediante la expresión: xi = x0 + i·h (i = 1, …, n). Cuando se desea calcular el polinomio interpolador de Lagrange de una función f(x) sobre un soporte equidistante de (n+1) puntos, pueden utilizarse los métodos vistos para el caso general (resolución de un sistema de (n+1) ecuaciones con (n+1) incógnitas, fórmula de Lagrange o fórmula de Newton). Pero el número de cálculos a realizar puede reducirse si en lugar de aquellos se emplean métodos en diferencias finitas como los que desarrollaremos en este subapartado. Comencemos definiendo que entendemos por diferencias finitas. Para ello supondremos en todo este subapartado que el soporte {x0, x1, ...., xn} es un soporte equidistante y que la distancia entre puntos consecutivos del soporte es h. Asimismo denotaremos por fi al valor de la función que se desea interpolar f(x) en el punto xi: fi = f(xi) (i = 0, 1, ..., n). Definición (Diferencia finita progresiva de primer orden) Se denomina diferencia finita progresiva (o en adelanto) de primer orden de la función f(x) en el punto xi, y se representa por Δfi, al valor: (i = 0, 1, ..., (n-1)) Δfi = fi+1 – fi De forma más general se proporciona la siguiente definición: Definición (Diferencia finita progresiva de orden k) Siendo k un entero superior o igual a 1 e inferior a (n+1), se denomina diferencia finita progresiva (o en adelanto) de orden k de la función f(x) en el punto xi, y se representa por Δkfi, al valor: (1 < k < n), (i = 0, 1, ..., (n-k)) Δkfi = Δ(k-1)fi+1 – Δ(k-1)fi donde Δ0fi = fi (i = 0, 1, ..., n) 61 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid De manera análoga pueden definirse diferencias finitas regresivas tal cual se hace en las siguientes definiciones: Definición (Diferencia finita regresiva de primer orden) Se denomina diferencia finita regresiva (o en retroceso) de primer orden de la función f(x) en el punto xi, y se representa por ∇fi, al valor: ∇fi = fi – fi-1 (i = 1, ..., n) Definición (Diferencia finita regresiva de orden k) Siendo k un entero superior o igual a 1 e inferior a (n+1), se denomina diferencia finita regresiva (o en retroceso) de orden k de la función f(x) en el punto xi, y se representa por ∇kfi, al valor: ∇kfi = ∇ (k-1)fi+1 – ∇ (k-1)fi (1 < k < n), (i = k, ..., n) donde Δ0fi = fi (i = 0, 1, ..., n). • Al igual que sucedía para las diferencias divididas, el cálculo de las diferencias finitas (progresivas o regresivas) puede realizarse de forma cómoda mediante tablas como las que se ilustran a continuación (para el caso de soportes con 7 puntos). En ambas tablas los cálculos se desarrollan columna a columna. x0 x1 x2 x3 x4 x5 x6 f0 f1 f2 f3 f4 f5 f6 Δf0 Δf1 Δf2 Δf3 Δf4 Δf5 Δ 2 f0 Δ 2 f1 Δ 2 f2 Δ 2 f3 Δ 2 f4 Δ 3 f0 Δ 3 f1 Δ 3 f2 Δ 3 f3 Δ 4 f0 Δ 4 f1 Δ 4 f2 Δ 5 f0 Δ 5 f1 Tabla de diferencias finitas progresivas 62 Δ 6 f0 Programación y Métodos Numéricos x0 x1 x2 x3 x4 x5 x6 f0 f1 f2 f3 f4 f5 f6 ∇f1 ∇f2 ∇f3 ∇f4 ∇f5 ∇f6 Interpolación polinómica ∇ 2 f2 ∇ 2 f3 ∇ 2 f4 ∇ 2 f5 ∇ 2 f6 ∇3 f3 ∇3 f4 ∇3 f5 ∇3 f6 ∇ 4 f4 ∇ 4 f5 ∇ 4 f6 ∇5 f5 ∇5 f6 ∇ 6 f6 Tabla de diferencias finitas regresivas Ejemplo: Consideremos la función f(x) = x2 + x3 – 2·x4 y calculemos la tabla de diferencias finitas progresivas de esta función en el soporte {0, 1, 2, 3, 4, 5}. xi 0 1 2 3 4 5 fi 0 0 –20 –126 –432 –1100 Δfi Δ2fi Δ3fi Δ4fi 0 -20 -66 -48 -20 -86 -114 -48 -106 -200 -162 -306 -362 -668 Δ5fi 0 Asimismo, la tabla de diferencias finitas regresivas será xi 0 1 2 3 4 5 fi 0 0 –20 –126 –432 –1100 ∇fi ∇ 2f i ∇ 3f i ∇ 4f i 0 -20 -106 -306 -668 -20 -86 -66 -200 -114 -48 -362 -162 -48 ∇ 5f i 0 • Como puede apreciarse en las tablas del ejemplo anterior, los valores de las diferencias finitas progresivas y regresivas son los mismos pero colocados de forma diferente. Esto no es una casualidad ya que: 63 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Propiedad 1 Entre las diferencias finitas progresivas y las diferencias finitas regresivas de una función f(x) en un soporte equidistante {x0, x1, ...., xn} se verifican las igualdades: (i = 0, 1, …., (n-1)) Δfi = ∇fi+1 Δkfi = ∇kfi+k (2 < k < n), (i = 0, 1, ..., (n-k)) Demostración: Demostremos en primer lugar la primera igualdad. Según las definiciones de diferencia progresiva y regresiva de primer orden se verifica que: Δfi = fi+1 - fi = ∇fi+1 (i = 0, 1, …, (n-1)) Para demostrar la segunda igualdad dada en la propiedad procederemos por inducción. Para ello supongamos que para algún valor (k-1) se verifique que: Δ (k-1)fi = ∇(k-1)fi+k-1 (i = 0, 1, ..., (n-k+1)) Obsérvese que, al menos para (k-1) = 1 la igualdad es cierta pues se reduce a la primera de las igualdades recogidas en la propiedad y que hemos demostrado previamente. Con esta hipótesis se tiene que para todo entero i tal que 0 < i < (n-k) se verifica: Δkfi = Δ(k-1)fi+1 - Δ(k-1)fi = ∇(k-1)fi+1+k-1 - ∇(k-1)fi+k-1 = = ∇(k-1)fi+k - ∇(k-1)fi+k-1= ∇kfi+k c.q.d. La fórmula de interpolación de Newton presentada en el subapartado 2.3. puede rescribirse en términos de diferencias finitas. Ello se realiza de forma sencilla apoyándose en la siguiente propiedad: 64 Programación y Métodos Numéricos Interpolación polinómica Propiedad 2 Dado el soporte equidistante {x0, x1, ..., xn} y denotando por h a la distancia entre puntos consecutivos del soporte, se verifica que la diferencia progresiva de orden k en el punto xi y la diferencia dividida f[xi, xi+1, …, xi+k] se relacionan mediante la igualdad: Δkfi = k!·hk·f[xi, xi+1, …, xi+k] (0 < k < n), (i = 0, 1, .., (n-k)) Demostración: Procedamos por inducción. Para k = 0 la igualdad anterior queda en la forma: Δ0fi = 0!·h0·f[xi] = fi (i = 0, 1, …, n) por lo que la igualdad es cierta para k = 0. Admitiendo entonces que se verifica la propiedad para algún valor (k-1) demostremos que también es cierta para el valor k. Por verificarse para (k-1) se tendrá que: Δ (k-1)fi = (k-1)!·h(k-1)·f[xi, xi+1, …, xi+k-1] (i = 0,1, …, (n-k+1)) y por tanto, para cualquier valor del índice i tal que 0 < i < (n-k), se tendrá que: Δkfi = Δ (k-1)fi+1 - Δ (k-1)fi = (k-1)!·h(k-1)·f[xi+1, …,xi+k] - (k-1)!·h(k-1)·f[xi, …, xi+k-1] = = (k-1)!·h(k-1)· (f[xi+1, …,xi+k] - f[xi, …, xi+k-1]) = = (k-1)!·h(k-1)·f[xi,xi+1, …,xi+k]·(xi+k – xi) = = (k-1)!·h(k-1)·f[xi,xi+1, …,xi+k]·k·h = = k!·hk· f[xi,xi+1, …,xi+k] c.q.d. Análogamente las diferencias finitas regresivas se relacionan con las diferencias divididas según la igualdad que se recoge en la siguiente propiedad: 65 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Propiedad 3 Dado el soporte equidistante {x0, x1, ..., xn} y denotando por h a la distancia entre puntos consecutivos del soporte, se verifica que la diferencia progresiva de orden k en el punto xi y la diferencia dividida f[xi, xi+1, …, xi+k] se relacionan mediante la igualdad: ∇kfi = k!·hk·f[xi-k, xi-k+1, …, xi] (0 < k < n), (i = k, k+1, .., n) Demostración: Combinando las dos propiedades anteriores se tiene que: ∇kfi = Δkfi-k = k!·hk·f[xi-k, xi-k+1, …, xi] (0 < k < n), (i = k, k+1, .., n) c.q.d. Utilizando la propiedad 2 la fórmula de Newton puede ser escrita en la forma: (i−1) ⎛ ⎞ pn(x) = f0 + ∑ ⎜ f [ x 0 ,...,xi ]·∏ (x − x j ) ⎟ = Δ0f0 + i=1 ⎝ j= 0 ⎠ n ⎛ Δi f0 (i−1) ⎞ ⎜ i ·∏ (x − x j ) ⎟ ∑ i=1 ⎝ i!·h j= 0 ⎠ n La fórmula anterior es utilizada en ocasiones realizando el cambio de variable: x = x0 + t·h con lo que: (x – xj) = (x0 + t·h) – (x0 + j·h) = (t – j)·h y podemos escribir la denominada fórmula de interpolación de NewtonGregory progresiva: pn(x) = ⎛ Δi f0 (i−1) ⎞ n ⎛t⎞ i · (t j)·h − ⎜ i∏ ⎟ = ∑ ⎜ ⎟ Δ f0 ∑ i=0 ⎝ i!·h j= 0 ⎠ i=0 ⎝ i ⎠ n ⎛t⎞ donde se ha utilizado el número combinatorio ⎜ ⎟ dado por: ⎝i⎠ 1 si i = 0 ⎧ ⎛t⎞ ⎪ = ⎜ ⎟ ⎨ t·(t − 1)·(t − 2)·....·(t − i + 1) si i > 0 ⎝i⎠ ⎪ ⎩ i! 66 Programación y Métodos Numéricos Interpolación polinómica Ejemplo: Determinemos el valor del polinomio interpolador de Lagrange de la función ⎧ π π⎫ f(x) = sen(x) sobre el soporte ⎨0, , ⎬ en el punto x = π/3. En este soporte se ⎩ 4 2⎭ 1 y f2 = 1. Por tanto la tabla de diferencias tiene que h = π/4 y f0 = 0, f1 = 2 finitas progresivas será: i xi Δ0fi 0 0 0 1 π/4 2 π/2 Δ2fi Δfi 1 (1 - 2 ) 2 1 (1 - 2 1 2 ) 1 por lo que el polinomio interpolador, utilizando la fórmula de Newton, será: 1 (1 − 2) π⎞ 4· 2 − 2 8·(1 − 2) 2 ⎛ p2(x) = 0 + 2 ·(x-0) + · x − 0 )·⎜ x − ⎟ = ·x + ·x 2 ( 2 π 4 π π ⎝ ⎠ π ⎛ ⎞ 1!· 2!·⎜ ⎟ 4 ⎝4⎠ por lo que: sen(π/3) ≈ p2(π/3) = 2·(1 + 2· 2) = 0.85076158... 9 Si se deseara utilizar la fórmula de Newton-Gregory hubiéramos procedido de la forma siguiente: π π π 4 = 0 + t· ⇒ t = 3 = π 3 3 4 4 por lo que: 2 ⎛4 / 3⎞ i ⎛ 4 / 3⎞ ⎛ 4 / 3⎞ 1 ⎛ 4 / 3⎞ +⎜ p2(π/3) = ∑ ⎜ ⎟·0 + ⎜ ⎟· ⎟·(1 − 2) = ⎟ Δ f0 = ⎜ i= 0 ⎝ i ⎠ ⎝ 0 ⎠ ⎝ 1 ⎠ 2 ⎝ 2 ⎠ ⎛4⎞ ⎛ 4⎞⎛ 1⎞ ⎜ 3 ⎟ 1 ⎜ 3 ⎟·⎜ 3 ⎟ 4 1 4 2·(1 + 2· 2) = ⎝ ⎠· + ·(1 − 2) = + ⎝ ⎠ ⎝ ⎠·(1 − 2) = · 3 2 18 1! 2! 9 2 67 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid De forma análoga, utilizando la propiedad 3 la fórmula de Newton puede ser escrita en la forma: pn(x) = f0 + (i−1) ⎛ ⎞ 0 f x ,...,x · [ ] ⎜ ∑ 0 i ∏ (x − x j ) ⎟ = Δ f0 + i=1 ⎝ j=0 ⎠ n ⎛ ∇i fi (i−1) ⎞ ⎜ i ·∏ (x − x j ) ⎟ ∑ i=1 ⎝ i!·h j= 0 ⎠ n La fórmula anterior es utilizada en ocasiones realizando el cambio de variable: x = x0 + t·h con lo que: (x – xj) = (x0 + t·h) – (x0 + j·h) = (t – j)·h y podemos escribir la denominada fórmula de interpolación de NewtonGregory regresiva: ⎛ ∇i fi (i−1) ⎞ n ⎛t⎞ pn(x) = ∑ ⎜ i ·∏ (t − j)·h ⎟ = ∑ ⎜ ⎟ ∇i fi i= 0 ⎝ i!·h j=0 ⎠ i=0 ⎝ i ⎠ n ⎛t⎞ donde nuevamente se utiliza el número combinatorio ⎜ ⎟ dado por: ⎝i⎠ 1 si i = 0 ⎧ ⎛t⎞ ⎪ ⎜ ⎟ = ⎨ t·(t − 1)·(t − 2)·....·(t − i + 1) si i > 0 ⎝i⎠ ⎪ ⎩ i! Ejemplo: De una función f(x) se conoce la siguiente tabla de valores: i 0 1 2 3 4 5 xi 0 2 4 6 8 10 fi 0 5 30 91 204 385 Determinemos, usando la fórmula de Newton-Gregory regresiva, el valor de su polinomio interpolador de Lagrange en el punto x = 3. Para ello comenzamos construyendo la tabla de diferencias finitas regresivas: 68 Programación y Métodos Numéricos ∇ 2f i Interpolación polinómica xi ∇ 0f i 0 0 2 5 5 4 30 25 20 6 91 61 36 16 8 204 113 52 16 0 10 385 181 68 16 0 ∇fi ∇ 3f i ∇ 4f i ∇ 5f i 0 Puesto que en el soporte considerado se verifica que h = 2, se tiene que: 3 = 0 + t·2 ⇒ t = 3/2 = 1.5 por lo que: ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ p(5) = 0·⎜ ⎟ + 5·⎜ ⎟ + 20·⎜ ⎟ + 16·⎜ ⎟ + 0·⎜ ⎟ + 0·⎜ ⎟ = ⎝ 0 ⎠ ⎝ 1 ⎠ ⎝ 2 ⎠ ⎝ 3 ⎠ ⎝ 4 ⎠ ⎝ 5 ⎠ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ = 5·⎜ ⎟ + 20·⎜ ⎟ + 16·⎜ ⎟= ⎝ 1 ⎠ ⎝ 2 ⎠ ⎝ 3 ⎠ 1.5 1.5·(1.5 − 1) 1.5·(1.5 − 1)·(1.5 − 2) = = 5· + 20· + 16· 1! 2! 3! = 7.5 + 7.5 + 8 ·(1.5)·(0.5)·( −0.5) = 7.5 + 7.5 – 1 = 14 3 • Una consecuencia de las propiedades 2 y 3 (junto con la propiedad 3 del subapartado anterior) es que si f(x) es una función polinómica de grado m serán nulas las diferencias finitas progresivas o regresivas de orden m y superior, cualquiera que sea el soporte equidistante sobre el que se evalúen. Ejemplo: Calcúlese la expresión polinómica en “n” que proporciona el valor de: n ∑ i·(n − i) i=0 69 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Para conocer “a priori” el grado de la expresión polinómica que se está buscando podemos razonar de la forma que sigue. Siendo m un entero cualquiera se verificará que: m +1 m m +1 m +1 m +1 m m i= 0 i=0 i= 0 i=0 i=0 i=0 i= 0 Δfm = fm+1 − fm = ∑ i·(m + 1 − i) − ∑ i·(m − i) = ∑ m·i + ∑ i − ∑ i2 − ∑ m·i + ∑ i2 = m m +1 ⎛ m+1 m ⎞ m+1 ⎛ m+1 ⎞ = m·⎜ ∑ i − ∑ i ⎟ + ∑ i − ⎜ ∑ i2 − ∑ i2 ⎟ = m·(m + 1) + ∑ i − (m + 1)2 = i= 0 i=0 ⎝ i = 0 i =0 ⎠ i =0 ⎝ i= 0 ⎠ = m2 + m + (m +1) ∑ i − m2 − 2·m − 1 = i= 0 (m + 2) ∑ ∑ i − m −1 i=0 Sustituyendo m por (m+1) se tendrá que: Δfm+1 = Δ 2 fm = Δfm+1 − Δfm = (m +1) i−m−2− i=0 (m + 2) ∑ i − m − 2 , y por tanto: i= 0 (m +1) ∑ i + m + 1 = (m + 2) − 1 = m + 1 i= 0 Sustituyendo m por (m+1) se tiene que: Δ 2 fm+1 = m + 2 por lo que: Δ 3 fm = m + 2 − m − 1 = 1 Luego, en un soporte formado por los números naturales, todas las diferencias finitas progresivas de orden 3 toman valor 1. Ello nos indica que las de orden mayor o igual a 4 serán todas nulas. Por tanto la expresión polinómica buscada es de grado 3 y con cuatro puntos de soporte será suficiente para determinarla. Consideremos por ello el soporte {0, 1, 2, 3}. Los valores de f(n) = n ∑ i·(n − i) i=0 en estos puntos son: f0 = 0, f1 = 0, f2 = 1 y f3 = 4 y la tabla de diferencias finitas progesivas es: xi ∇ 0f i ∇fi ∇ 2f i ∇ 3f i 0 0 0 1 1 1 0 1 2 2 1 3 3 4 Usando la fórmula de Newton-Gregory progresiva, el valor interpolado en el entero “n” es ⎛n⎞ ⎛n⎞ ⎛n⎞ ⎛ n ⎞ n·(n-1) n·(n-1)·(n-2) n3 − n 0· ⎜ ⎟ +0· ⎜ ⎟ +1· ⎜ ⎟ +1· ⎜ ⎟ = + = 2! 3! 6 ⎝0⎠ ⎝ 1⎠ ⎝ 2⎠ ⎝3⎠ 70 Programación y Métodos Numéricos Interpolación polinómica lo que nos permite concluir que: n ∑ i·(n − i) = i=0 n3 − n 6 • En ocasiones los soportes equidistantes se toman, además, centrados. Más concretamente, un soporte equidistante centrado con (2·n+1) puntos se genera a partir de un punto x0 considerándose los demás puntos del soporte en la forma: xi = x 0 + i·h (i = -n, -n+1, ...., -2, -1, 1, 2, …, n-1, n) y donde h es la distancia entre dos puntos consecutivos del soporte. Cuando se trabaja con este tipo de soportes puede tener ventajas utilizar un tercer tipo de diferencias finitas, llamado diferencias finitas centradas, que definimos a continuación. Definición (Diferencia finita centrada de primer orden) Se denomina diferencia finita centrada (o central) de primer orden de la función f(x) en el punto xi+1/2, y se representa por δfi+1/2, al valor: δfi+1/2 = fi+1 - fi (i = -n, -n+1, ..., -1, 0, 1, …, n-1) • La definición de las diferencias finitas centradas de mayor orden se realiza a continuación. Definición (Diferencia finita centrada de orden k) Siendo k un número natural tal que 1 < k < 2·n: • Si k es par se denomina diferencia finita centrada (o central) de orden k de la función f(x) en el punto xi, y se representa por δkfi, al valor: δkfi = δ(k-1)fi+1/2 - δ(k-1)fi-1/2 (i = -n+(k/2), ..., 0, …, n-(k/2)) • Si k es impar se denomina diferencia finita centrada (o central) de orden k de la función f(x) en el punto xi+1/2, y se representa por δkfi+1/2, al valor: δkfi+1/2 = δ(k-1)fi+1 - δ(k-1)fi-1 (i = -n+(k-1)/2,...,0,…, n-(k+1)/2) En el caso k = 0 se define δ0fi = fi (i = -n, ...., 0, ..., n). 71 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid El cálculo de las diferencias finitas centradas puede organizarse también en una tabla como la que se recoge a continuación para un soporte con 9 puntos y en la que los cálculos se realizan columna a columna. x-4 f-4 δf-7/2 x-3 δ2f-3 f-3 δ3f-5/2 δf-5/2 x-2 δ2f-2 f-2 δ4f-2 δ3f-3/2 δf-3/2 x-1 δ2f-1 f-1 δ4f-1 δ4f0 δ4f1 δ7f1/2 δ5f3/2 δ2f2 f2 δ8f0 δ6f1 δ3f3/2 δ4f2 δ3f5/2 δf5/2 x3 δ5f1/2 δ2f1 f1 δ7f-1/2 δ6f0 δ3f1/2 δf3/2 x2 δ5f-1/2 δ2f0 f0 δf1/2 x1 δ6f-1 δ3f-1/2 δf-1/2 x0 δ5f-3/2 δ2f3 f3 δf7/2 x4 f4 Ejemplo: La tabla de diferencias finitas centradas de la función f(x) = x7 –2·x3 +x2 – 1 en el soporte {-2, -1, 0, 1, 2} es la siguiente -2 -109 110 -1 1 -112 -2 0 -1 114 2 0 1 -1 0 114 116 116 2 115 72 Programación y Métodos Numéricos Interpolación polinómica Los valores de las diferencias finitas centradas son los mismos que los que se obtendrían en las tablas de diferencias finitas progresivas o regresivas (aunque ordenados y denotados de diferente manera). Más concretamente: Propiedad 4 Entre las diferencias finitas progresivas y las diferencias finitas centradas de una misma función f(x) sobre un soporte equidistante centrado de la forma {x-n, ...., x0, ..., xn} se verifica la relación: δkfi+k/2 = Δkfi (0 < k < 2·n) ,(i = -n, ..., n-k) Demostración: Según las definiciones de diferencia finita progresiva y centrada de orden 0, para k = 0 se tiene que: δ0fi = fi =Δ0fi (i = - n, ….., n) por lo que la propiedad es cierta para k = 0. Procedamos entonces por inducción suponiendo que para algún valor entero (k-1), no negativo y menor que 2·n, se verifica la igualdad que queremos demostrar y comprobemos que en ese caso también es cierta para el entero k. En efecto, si la igualdad es cierta para (k-1) se tendrá que: δ(k-1)fi+(k-1)/2 = Δ(k-1)fi (i = -n, ..., n-k+1) y, para cualquier valor del índice i comprendido entre –n y (n-k) se tendrá que: Δkfi = Δ(k-1)fi+1 - Δ(k-1)fi = δ(k-1)fi+1+(k-1)/2 - δ(k-1)fi+(k-1)/2 = = δ(k-1)fi+(k+1)/2 - δ(k-1)fi+(k-1)/2 = δ(k-1)fi+k/2 Por tanto, al ser cierta la igualdad para k = 0, también lo será para k = 1. Y ello implica que también lo será para k =2. Y ello a su vez implica que lo sea para el valor k = 3, ..... y para k = 2·n. c.q.d. Asimismo se entre las diferencias finitas regresivas y las centradas existe la relación recogida en la propiedad siguiente: 73 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Propiedad 5 Entre las diferencias finitas regresivas y las diferencias finitas centradas de una misma función f(x) sobre un soporte equidistante centrado de la forma {x-n, ...., x0, ..., xn} se verifica la relación: δκφι+κ/2 = ∇kfi+k (0 < k < 2·n) ,(i = -n, ..., n-k) Demostración: Evidente pues es una combinación de las propiedades 1ª y 4ª demostradas en este subapartado. c.q.d. La propiedad 4ª (o si se prefiere la 5ª) puede utilizarse para, junto a la propiedad 2ª (respectivamente la propiedad 3ª), determinar la relación entre las diferencias finitas centradas y las diferencias divididas. Dicha relación es la que se detalla a continuación Propiedad 6 Entre las diferencias divididas y las diferencias finitas centradas de una misma función f(x) sobre un soporte equidistante centrado de la forma {x-n, ...., x0, ..., xn} se verifica la relación: δkfi+k/2 = k!·hk·f[xi, …, xi+k ] (0 < k < 2·n) ,(i = -n, ..., n-k) Demostración: Es una consecuencia inmediata de las propiedades 2ª y 4ª demostradas anteriormente en este subapartado. c.q.d. La relación anterior nos permite, a partir de la fórmula de interpolación de Newton, obtener distintas fórmulas de interpolación utilizando diferencias finitas centradas. La más típica es la que se obtiene si la fórmula de interpolación de Newton se utiliza sobre el soporte: {x0, x1, x-1, x2, x-2, ..., xn., x-n}. En ese caso: p2·n(x) = f[x0] + f[x0, x1]·(x-x0) + f[x0, x1,x-1]·(x-x0)·(x-x1) + + f[x0, x1,x-1,x2]·(x-x0)·(x-x1)·(x-x-1) + …. + + f[x0, x1,x-1,x2, …, xn, x-n]·(x-x0)·(x-x1)·(x-x-1)·….(x-xn) y puesto que: 74 Programación y Métodos Numéricos f[x0] =δ0f0 , f[x0, x1] = Interpolación polinómica δf1/ 2 δ2 f1/ 2 , f[x0, x1,x-1] = f[x-1,x0, x1] = , ….. h 2!·h2 f[x0, x1,x-1,x2, …, xn, x-n] = f[x-n,…,x-2,x-1,x0, x1,x2, …, xn] = δ2·n f0 (2·n)!·h2·n se tiene que: p2·n(x) = δ0 f0 + δf1/ 2 · + δ3 f1/ 2 · + δ2·n f0 · ( x − x 0 ) + δ2 f ·( x − x0 )·( x − x1 ) + 1!·h 0 ( x − x0 )·( x − x1 )·( x − x −1 ) 3!·h3 2!·h2 + .........+ ( x − x0 )·( x − x1 )·( x − x −1 )·...·(x − x −n ) (2·n)!·h2·n que es la denominada fórmula de interpolación de Gauss progresiva. Otra fórmula equivalente puede obtenerse considerando el soporte ordenado de la forma: {x0, x-1, x1, x-2, x2, ..., x-n., xn}. En este caso la fórmula de Newton será: p2·n(x) = f[x0] + f[x0, x-1]·(x-x0) + f[x0,x-1, x1]·(x-x0)·(x-x-1) + + f[x0, x-1,x1,x-2]·(x-x0)·(x-x-1)·(x-x1) + …. + + f[x0, x-1,x1,x-2, …, x-n, xn]·(x-x0)·(x-x-1)·(x-x1)·….(x-x-n) lo que nos conduciría a la fórmula de interpolación de Stirling (también denominada fórmula de interpolación de Gauss regresiva) siguiente: p2·n(x) = δ0 f0 + δf−1/ 2 · + δ3 f−1/ 2 · + δ2·n f0 · ( x − x0 ) + δ2 f ·( x − x0 )·( x − x −1 ) + 1!·h 0 ( x − x0 )·( x − x −1 )·( x − x1 ) 3!·h3 2!·h2 + .........+ ( x − x0 )·( x − x −1 )·( x − x1 )·...·(x − xn ) (2·n)!·h2·n 75 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Ejemplo: Calculemos mediante la fórmula de interpolación de Stirling el polinomio interpolador de la función f(x) = x7 –2·x3 +x2 – 1 en el soporte {-2, -1, 0, 1, 2}. La tabla de diferencias finitas centradas de esta función fue calculada en uno de los ejemplos anteriores y es la que se recoge a continuación (resaltándose los valores a utilizar en la fórmula de interpolación de Stirling): -2 -109 110 -1 1 -112 -2 0 -1 114 2 0 1 -1 0 114 116 116 2 115 Por tanto: p4(x) = -1 + (-2) · x −0 (x − 0)·(x − ( −1)) (x − 0)·(x − ( −1))·(x − 1) + (2) · + 114· = 2 1!·1 2!·1 3!·13 = 19·x3 + x2 –20·x –1 El mismo polinomio sería calculado mediante la fórmula de interpolación de Gauss progresiva utilizando los valores resaltados en la tabla siguiente: -2 -109 110 -1 1 -112 -2 0 -1 114 2 0 1 -1 0 114 116 116 2 115 lo que nos conduciría a: 76 Programación y Métodos Numéricos p4(x) = -1 + (0) · Interpolación polinómica x −0 (x − 0)·(x − 1) (x − 0)·(x − 1)·(x + 1) + (2) · + 114· = 2 1!·1 2!·1 3!·13 = 19·x3 + x2 –20·x –1 La figura siguiente recoge los grafos de f(x) = = x7 –2·x3 +x2 – 1 (en trazo discontinuo) y de su polinomio interpolador p4(x) = 19·x3 + x2 –20·x –1 en trazo continuo. f(x) p4(x) • Ejercicios propuestos: 1º) Sea f(m) la función definida sobre el conjunto de números enteros no negativos mediante la expresión: m f (m) = ∑ i2 .(m − i)2 i=0 Hállese el polinomio interpolador de Lagrange de dicha función: a) Sobre el soporte {0, 1, 2, 3, 4} usando la fórmula de Newton-Gregory progresiva. b) Sobre el soporte {0, 1, 2, 3, 4, 5} usando la fórmula de Newton-Gregory regresiva 77 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid c) Sobre el soporte {0, 1, 2, 3, 4, 5, 6} usando la fórmula de Gauss progresiva. d) Según los resultados anteriores, señálese si se puede escribir con ellos la m expresión exacta, dependiente sólo de m, del valor que toma ∑ i 2 .(m − i)2 . En i=0 caso afirmativo justifíquese el motivo de ello. Y en caso negativo indíquese cual, entre las obtenidas en las opciones anteriores, se aproximará más a la expresión exacta y cual es la cota del error que se comete. 2º) De una función f(x) se conocen los siguientes valores: x -1 0 1 2 3 f(x) 7 1 -1 -17 -41 Utilícese la fórmula de Stirling para obtener el polinomio interpolador de Lagrange de la función f(x) en el soporte {-1,0,1,2, 3}. Obténgase, además, una 1 cota del error de interpolación de esta función sabiendo que Sup f (v (x) = . x∈( −1,3 ) 2 3º) Para el caso de interpolaciones con soportes equidistantes: a) Obténgase una expresión del error de interpolación en un punto x* en la que intervengan las diferencias finitas progresivas de una función. b) Idem con diferencias finitas regresivas. c) Idem con diferencias centradas. 78 Programación y Métodos Numéricos Interpolación polinómica 3. Interpolación polinómica de Hermite. El problema de interpolación polinómica de Lagrange, tratado en el apartado anterior, consiste en determinar un polinomio pn(x), de grado menor o igual que n, que en los puntos de un soporte de (n+1) puntos tome los valores de la función f(x) que se interpola. Nada obliga a que los valores de las derivadas de f(x) en los puntos del soporte coincidan con los de las derivadas del polinomio interpolador. Es por ello que el problema de interpolación polinomial puede plantearse en un marco más amplio, conocido con el nombre de problema interpolación polinómica de Hermite. Más concretamente, puede formularse el siguiente problema: Problema de Interpolación Polinómica de Hermite “Dados (n+1) puntos distintos {x0 , x1 , ... , xi ,... , xn} y (n+1) valores enteros no negativos {α0, α1, ..., αi, ..., αn}, siendo n m = n + ∑ αi y conocidos los (m+1) valores i= 0 {f (0 0 ,f0(1,...,f0( α0 ,f1(0 ,f1(1,...,f1( α1 ,..........,fn(0 ,fn(1 ,...,fn( αn } encontrar un polinomio pm(x), de grado menor o igual que m, verificando las (m+1) igualdades: (k pm (xi ) = fi(k (i = 0, 1, ...., n) , (k = 0, …, αi) “ Si los valores fi(k se consideran como el valor de la k-ésima derivada de una cierta función f(x) en el punto del soporte xi, fi(k = f (k (xi ) , al polinomio pm(x) solución del problema anterior se le denomina “polinomio interpolador de Hermite sobre el soporte {x0 , x1 , ... , xi ,... , xn} para los enteros {α0, α1, ..., αi, ..., αn} y para los valores f0(0 ,f0(1,...,f0( α0 ,f1(0 ,f1(1,...,f1( α1 ,..........,fn(0 ,fn(1,...,fn( αn ”. { } Cuando esté claro el soporte sobre el que se trabaja y los enteros que se utilizan, simplemente diremos que pm(x) es el polinomio interpolador de Hermite de la función f(x). Obsérvese que el problema de interpolación polinómica de Lagrange es un caso particular de este en el que α0 = α1 = .... = αn = 0. 79 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Ejemplos: 6 2 4 3 ·x + 3 ·x es el polinomio interpolador de Hermite π2 π ⎧ π ⎫ de la función f(x) = cos(x) sobre el soporte ⎨0, , π ⎬ para los enteros {1, 0, 1}. ⎩ 2 ⎭ 1º) El polinomio p4(x) = 1 − En efecto, es un polinomio de grado menor o igual que 4 verificando: p4(0) = 1 (=cos(0)), p’4(0) = 0 (= cos’(0) = -sen(0) ) ⎛π⎞ p4 ⎜ ⎟ = 0 ( = cos(π/2) ) ⎝2⎠ p4(π) = -1 ( = cos(π) ), p’4(π) = 0 (= cos’(π) = -sen(π) ) • Una primera forma de determinar el polinomio interpolador de Hermite consiste en considerar que pm(x) es un polinomio de la forma pm(x) = β0 + β1·x + β2·x2 + ... + βm·xm para, a continuación, obtener un sistema de (m+1) ecuaciones lineales a partir de las igualdades que proporcionan los valores que debe tomar el polinomio interpolador y sus derivadas en los puntos del soporte. Más concretamente: pm(x0) = f0(0 ⇔ β0 + β1·x 0 + β2 ·x 02 + .... +βm ·xm0 p’m(x0) = f0(1 ⇔ p”m(x0) = f0(2 ⇔ = f0(0 β1 + 2·β2 ·x 0 + .... +m·βm ·xm0 −1 = f0(1 2·β2 + .... +m·(m − 1)·βm ·xm0 −2 = f0(2 …….. …………………………………… ( α0 ( α0 pm (x0)= f0 ⇔ α0 !·βα0 + ... + m·(m − 1)·...·(m − α 0 + 1)·βm ·xm0 −α0 = f0( α0 pm(x1) = f1(0 ⇔ β0 + β1·x1 + β2 ·x12 + .... +βm ·x1m p’m(x1) = f1(1 ⇔ p”m(x1) = f1(2 ⇔ = f1(0 β1 + 2·β2 ·x1 + .... +m·βm ·x1m−1 = f1(1 2·β2 + .... +m·(m − 1)·βm ·x1m−2 = f1(2 …….. …………………………………… p(mα1 (x1)= f1( α1 ⇔ α1 !·βα1 + ... + m·(m − 1)·...·(m − α1 + 1)·βm ·x1m−α1 = f1( α1 …….. …………………………………… …….. …………………………………… pm(xn) = fn(0 ⇔ β0 + β1·xn + β2 ·xn2 + .... +βm ·xnm = fn(0 p’m(xn) = fn(1 ⇔ p”m(xn) = fn(2 ⇔ β1 + 2·β2 ·xn + .... +m·βm ·xnm−1 = fn(1 2·β2 + .... +m·(m − 1)·βm ·xnm−2 = fn(2 …….. …………………………………… ( αn ( αn pm (xn)= fn ⇔ αn !·βαn + ... + m·(m − 1)·...·(m − αn + 1)·βm ·xnm−αn = fn( αn 80 Programación y Métodos Numéricos Interpolación polinómica Si, como se ha supuesto, los puntos del soporte son distintos entre sí, la matriz del sistema anterior es una matriz regular y por tanto el sistema anterior admite una única23 solución (es decir que el polinomio buscado queda definido de forma única a través de sus coeficientes obtenidos como solución del sistema planteado). Ejemplo: Determinemos la expresión del polinomio interpolador de Hermite de la función ⎧ π ⎫ f(x) = cos(x) sobre el soporte ⎨0, , π ⎬ para los enteros {1, 0, 1}. ⎩ 2 ⎭ En x0 =0 se tiene que: f0(0 = f(0) = 1 y f0(1 = f '(0) = 0 π ⎛π⎞ : f1(0 = f ⎜ ⎟ = 0 2 ⎝2⎠ (0 Y en x2 = π: f2 = f( π) = −1 y f2(1 = f '( π) = 0 En x1 = Al haber 5 condiciones se podrán determinar 5 coeficientes y por ello se interpolará mediante un polinomio de grado menor o igual a 4 que es de la forma: p4(x) = β0 + β1·x + β2·x2 + β3·x3 + β4·x4 y debe verificar: p4(x0) = f0(0 ⇔ β0 p’4(x0) = f0(1 ⇔ (0 1 p4(x1) = f =1 β1 =0 2 π ⇔ β0 + β1· + 2 ⎛π⎞ ⎛π⎞ β 2· ⎜ ⎟ + β 3· ⎜ ⎟ ⎝2⎠ ⎝2⎠ p4(x2) = f2(0 ⇔ β0 + β1·π + p’4(x2) = f2(1 ⇔ β1 β2·π2 + 2·β2·π 3 + β3· π3 + 3·β3· π2 23 ⎛π⎞ + β 4· ⎜ ⎟ ⎝2⎠ 4 + β4· π4 + 4·β4· π3 =0 = -1 =0 No nos detenemos a demostrar esta afirmación pues la existencia y unicidad del polinomio interpolador de Hermite será demostrada posteriormente por otros métodos. No obstante el lector interesado en conocer esta demostración puede encontrarla, por ejemplo, en la referencia F. Michavila & C. Conde (1987) “Métodos de Aproximación”, Ed. Depto. de Matemática Aplicada y Métodos Informáticos – ETSI Minas – Universidad Politécnica de Madrid 81 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Del sistema anterior se obtiene que: β0 = 1, β1 = 0, β2 = Por tanto: p4(x) = 1 − −6 4 , β3 = 3 , β3 = 0. 2 π π 6 2 4 3 ·x + 3 ·x π2 π La figura siguiente recoge las gráficas de f(x) y de p4(x) en el intervalo [-1, 4] pudiendo observarse la “buena concordancia” entre la función f(x) y p4(x) en el intervalo [0, π]. f(x) p4(x) • Ejercicio propuesto: Plantéese el sistema de ecuaciones que permite calcular el polinomio ⎧ π π⎫ interpolador de Hermite de la función f(x) = sen(x) sobre el soporte ⎨0, , ⎬ y ⎩ 4 2⎭ para los enteros {0, 1, 2}. Resuélvase dicho sistema y escríbase la expresión del polinomio interpolador. • Esta forma de calcular el polinomio interpolador de Hermite, mediante la resolución de un sistema de (m+1) ecuaciones con (m+1) incógnitas, es útil cuando se trabaja con un soporte formado por un número de puntos relativamente bajo. En caso de no ser así exige realizar un gran esfuerzo computacional para resolver el sistema de ecuaciones al que se llega. Pero además, esta forma de proceder tiene menos interés que otras que analizaremos a continuación cuando se piensa en aplicarlas a los métodos de resolución numérica de problemas de contorno (y en concreto al método de elementos finitos) que se aborda en otras asignaturas. Por ello, en los subapartados que siguen, se estudiarán otras técnicas de cálculo del polinomio interpolador de Hermite. 82 Programación y Métodos Numéricos Interpolación polinómica 3.1. Interpolación de Hermite de primer orden: la fórmula de interpolación de Hermite. Por simplicidad en la exposición, comenzaremos ocupándonos del problema de determinar un polinomio p2·n+1(x) de grado menor o igual a (2·n+1) que en los puntos de un soporte formado por (n+1) puntos distintos {x0, x1, ..., xn} verifique las (2·n+2) condiciones siguientes: p2·n+1(xi) = fi(0 (i = 0, 1, ..., n) (i = 0, 1, ..., n) p'2·n+1(xi ) = fi(1 { } donde f0(0 ,f0(1,f1(0 ,f1(1,...,fn(0 ,fn(1 son valores conocidos (y que supondremos que los que tienen superíndice “(0” se corresponden con los valores de una cierta función f(x) en los puntos del soporte y los que tienen superíndice “(1” son los valores de la primera derivada de esta función, f’(x), en los puntos del soporte). El problema anterior se denomina problema de interpolación polinómica de Hermite de primer orden y podemos resumirlo en la búsqueda de un polinomio de grado menor o igual a (2·n+1) que tanto él como su primera derivada tome valores predeterminados en los puntos del soporte. Este problema admite una solución única, hecho este que, junto a una forma de determinar el polinomio buscado, se demuestra en el teorema siguiente: Teorema 5 Siendo {x0, x1, ... , xi, ..., xn} un soporte formado por (n+1) puntos distintos y dados (2n+2) valores f0(0 ,f0(1,f1(0 ,f1(1,...,fn(0 ,fn(1 , existe un único polinomio p2·n+1(x) { } de grado menor o igual que (2·n+1) verificando las (2·n+2) igualdades: p2·n+1(xi) = fi(0 , p'2·n+1(xi ) = fi(1 (i = 0, 1, 2, ..., n) (1) Además dicho polinomio interpolación de Hermite: puede calcularse mediante la n n n ⎛ 1 ⎞ p2·n+1(x) = ∑ fi(0 ·H0,i (x) + ∑ fi(1·H1,i (x) = ∑ ⎜ ∑ fi(k ·Hk,i (x) ⎟ i= 0 i=0 i= 0 ⎝ k = 0 ⎠ fórmula de (2) donde los polinomios H0,i(x) y H1,i(x) se denominan polinomios de base de Hermite y están dados por las expresiones: 2 H0,i (x) = (1 − 2·(x − x i )·L'i (x i ) )·(Li (x) ) (i = 0, 1, ..., n) (3) H1,i (x) = (x − xi )·(Li (x)) 2 (i = 0, 1, ..., n) siendo Li(x) el i-ésimo polinomio de base de Lagrange: n (x − xj ) Li (x) = ∏ j=0 ( x i − x j ) j≠i 83 (4) Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Demostración: a) Comencemos demostrando que el polinomio dado por la expresión (2) es el polinomio interpolador de Hermite de f(x). Para ello, en primer lugar, observemos que puesto que los polinomios de base de Lagrange, Li(x), son polinomios de grado n, los polinomios de base de Hermite, H0,i(x) y H1,i(x), son todos ellos polinomios de grado (2·n+1). Por tanto el polinomio p2·n+1(x) dado por la expresión (2) es un polinomio de grado menor o igual que (2·n+1) ya que es una combinación lineal de los anteriores. Por otra parte, remplazando en (3) y (4) “x” por “xk” y recordando que: ⎧0 si i ≠ k Li(xk) = δik = ⎨ (i, k = 0, 1, …, n), ⎩ 1 si i = k es evidente que los polinomios de base de Hermite satisfacen que: ⎧0 si i ≠ k H0,i(xk) = δik = ⎨ (i, k = 0, 1, …, n) ⎩ 1 si i = k H1,i(xk) =0 (i, k = 0, 1, …, n) Por tanto: n n i=0 i= 0 p2·n+1(xk ) = ∑ fi(0 ·H0,i (xk ) + ∑ fi(1·H1,i (xk ) = fk(0 Además, para cualquier par de índices 0 < i, k < n se tiene que : 2 H'0,i (x) = −2·L'i (xi )·(Li (x) ) + 2·(1 − 2·(x − x i )·L'i (x i ) )·Li (x)·L'i (x) ⇒ ( ) ( ) ⇒ H'0,i (x k ) = −2·L'i (xi )·(Li (x k ) ) + 2· 1 − 2·(x k − xi )·L'i (x i ) ·Li (x k )·L'i (x) ⇒ 2 ⇒ H'0,i (x k ) = −2·L'i (x i )·(Li (xk ) ) + 2· 1 − 2·(xk − x i )·L'i (xi ) ·Li (xk )·L'i (xk ) ⇒ 2 ⇒ H'0,i (xk ) = 0 y: H1,i' (x) = (Li (x) ) + 2·(x − xi )·Li (x)·L'i (x) ⇒ 2 ⇒ H1,i' (xk ) = (Li (x k ) ) + 2·(x k − x i )·Li (x k )·L'i (xk ) ⇒ 2 ⎧0 si i ≠ k ⇒ H1,i' (xk ) = δik = ⎨ ⎩ 1 si i = k 84 Programación y Métodos Numéricos Interpolación polinómica por lo que: n n i=0 i=0 ' p'2·n+1(xk ) = ∑ fi(0 ·H0,i (xk ) + ∑ fi(1·H1,i' (xk ) = fk(1 Ello demuestra que el polinomio p2·n+1(x) dado por (2) es el polinomio interpolador de Hermite. b) Demostremos ahora, por reducción al absurdo, la unicidad del polinomio interpolador de Hermite. Supongamos que hubiera dos polinomios distintos, p2·n+1(x) y q2·n+1(x), de grado menor o igual que (2·n+1) verificando: p2·n+1(xi) = fi(0 , p'2·n+1(xi ) = fi(1 (i = 0, 1, 2, ..., n) q2·n+1(xi) = fi(0 , q'2·n+1(xi ) = fi(1 (i = 0, 1, 2, ..., n) Denotemos entonces por r(x) al polinomio definido mediante: r(x) = p2·n+1(x) - q2·n+1(x) Este polinomio será de grado menor o igual a (2·n+1) ya que es la diferencia de dos polinomios de grado menor o igual a (2·n+1). Además este polinomio verificará que: r(xi) = p2·n+1(xi) – q2·n+1(xi) = 0 (i = 0, 1, ..., n) r '(xi ) = p'2·n+1(xi ) − q'2·n+1(xi ) = 0 (i = 0, 1, ..., n) lo que nos indica que cada punto del soporte es una raíz, al menos de multiplicidad doble, del polinomio r(x). Contando cada raíz tantas veces como su multiplicidad, lo anterior nos indica que r(x) tiene, al menos, (2·n+2) raíces. Pero el único polinomio de grado menor o igual a (2·n+1) que posee más de (2·n+1) raíces es el polinomio idénticamente nulo. Ello nos conduce a que: r(x) ≡ 0 ⇔ p2·n+1(x) − q2·n+1(x) ≡ 0 ⇔ p2·n+1(x) ≡ q2·n+1(x) en contra de la suposición inicial de que eran dos polinomios distintos. Por tanto es absurdo suponer que exista más de un polinomio interpolador de Hermite. c.q.d. 85 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Ilustremos el método de cálculo que proporciona el teorema anterior con un ejemplo. Ejemplo: Calculemos el polinomio interpolador de Hermite de una función f(x) de la que se sabe que: f(0) = 0, f(1) = 1, f(2) = f’(0) = 0, 3 f’(1) = , 2 f’(2) = 8 3 2 En primer lugar se tiene que los polinomios de base de Lagrange sobre el soporte {0, 1, 2} son: L0 (x) = x 2 − 3·x + 2 , 2 L1(x) = − x 2 + 2·x , L 2 (x) = x2 − x 2 L’0(0) = −3 , 2 L’1(1) = 0, L’2(2) = 3 2 y: Con estos valores podemos calcular los polinomios de base de Hermite como sigue: 3·x 5 − 17·x 4 + 33·x 3 − 23·x 2 + 4 H0,0 (x) = (1 − 2·(x − 0)·L0 (0))·(L0 (x)) = 4 ' 2 4 3 H0,1(x) = (1 − 2·(x − 1)·L1(1))·(L1(x)) = x − 4·x + 4·x 2 ' 2 H0,2 (x) = (1 − 2·(x − 2)·L'2 (2))·(L 2 (x))2 = −3·x 5 + 13·x 4 − 17·x 3 + 7·x 2 4 y: H1,0 (x) = (x − 0)·(L0 (x))2 = x 5 − 6·x 4 + 13·x 3 − 12·x 2 + 4·x 4 H1,1(x) = (x − 1)·(L1(x))2 = x 5 − 5·x 4 + 8·x 3 − 4·x 2 H1,2 (x) = (x − 2)·(L 2 (x))2 = 86 x 5 − 4·x 4 + 5·x 3 − 2·x 2 4 Programación y Métodos Numéricos Interpolación polinómica Las figuras siguientes recogen los gráficos de estos polinomios de base de Hermite. H0,0(x) H0,1(x) H0,2(x) π/4 rad H1,0(x) H1,1(x) H1,2(x) Con estos polinomios de base de Hermite se tiene finalmente que el polinomio interpolador de Hermite está dado por: n n i=0 i=0 p5 (x) = ∑ fi(0 ·H0,i (x) + ∑ fi(1·H1,i (x) = 0·H00 (x) + 1·H01(x) + 8·H02 (x) + 3 3 +0·H10 (x) + ·H11(x) + ·H12 (x) = 2 2 9 ⎞ 5 ⎛ 13 ⎞ 52 ⎞ 3 ⎛ 11 ⎛3 ⎛ ⎞ − 2 ⎟·x 2 ·x + ⎜ 5· 2 − ⎟·x 4 + ⎜ 8 − ·x + ⎜ =⎜ − ⎟ ⎟ 2 ⎠ 4· 2 ⎠ ⎝ ⎝ 2 4· 2 ⎠ ⎝ ⎝ 2· 2 ⎠ 87 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Una función f(x) para la que se toman los valores de los que se ha partido en este ejercicio es la función f(x) = x3/2 .La figura siguiente recoge esta función f(x) junto al polinomio interpolador p5(x). f(x) p5(x) • Demostremos algunas propiedades del los polinomios de base de Hermite Propiedad 1 • El polinomio de base H0,i(x) definido sobre el soporte {x0, ..., xi, ... ,xn} es el único polinomio de grado menor o igual que (2·n+1) que verifica: ⎧0 si i ≠ k H'0,i (xk ) = 0 (k = 0, .., n) H0,i(xk) = δik = ⎨ , ⎩ 1 si i = k • El polinomio de base H1,i(x) definido sobre el soporte {x0, ..., xi, ... ,xn} es el único polinomio de grado menor o igual que (2·n+1) que verifica: ⎧0 si i ≠ k (k = 0, .., n) H1,i(xk) = 0 , H1,i' (xk ) = δik = ⎨ ⎩ 1 si i = k Demostración: Es una consecuencia inmediata del teorema anterior, pues sólo habrá un polinomio interpolador de Hermite (H0,i(x)) de grado menor o igual a (2·n+1) que en el soporte {x0, ..., xi, ... ,xn} tome los valores: Abscisa f(0 f(1 x0 ... xi-1 0 ... 0 0 ... 0 xi 1 0 xi+1 .... xn 0 .... 0 0 .... 0 88 Programación y Métodos Numéricos Interpolación polinómica Análogamente sólo habrá un polinomio de grado menor o igual a (2·n+1) que en el soporte {x0, ..., xi, ... ,xn} tome los valores: x0 ... xi-1 0 ... 0 0 ... 0 Abscisa f(0 f(1 xi 0 1 xi+1 .... xn 0 .... 0 0 .... 0 c.q.d. Propiedad 2 Si p(x) es una función polinómica de grado m, y n es un entero estrictamente positivo tal que m < (2·n+1), el polinomio interpolador de Hermite p2·n+1(x) de la función p(x) sobre cualquier soporte formado por (n+1) puntos distintos es la propia función p(x). Demostración: El grado del polinomio interpolador de Hermite sobre un soporte formado por (n+1) puntos debe ser menor o igual que (2·n+1). La función p(x) se ha supuesto que es un polinomio de grado m < (2·n+1) por lo que verifica la condición sobre el grado exigido al polinomio interpolador de Hermite. Puesto que obviamente el valor de la función p(x) en los puntos del soporte coincide con el valor p(xi) y el valor de la primera derivada p’(x) en los puntos del soporte también coincide con p’(xi) se puede concluir que p(x) es el polinomio interpolador de Hermite de ella misma. Y como, en virtud del teorema anterior, el polinomio interpolador de Hermite es único puede concluirse que p2·n+1(x) ≡ p(x). c.q.d. Propiedad 3 Dado el soporte {x0, x1, ..., xi, ..., xn}, los polinomios de base de Hermite asociados a dicho soporte: ( ) H0,i (x) = 1 − 2·(x − x i )·L'i (x i ) ·(Li (x) ) 2 (i = 0, 1, ...., n) verifican que: n ∑H i=0 i,0 (x) = 1 Demostración: 89 ∀x Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Sea f(x) la función unidad: f ≡ 1. Obviamente en los puntos de cualquier soporte se verifica que: fi(0 = f(xi ) = 1 y fi(1 = f '(xi ) = 0 (i = 0, 1, ..., n). Además como esta función es un polinomio de grado 0 (perteneciente a cualquier espacio formado por los polinomios de grado menor o igual que (2·n+1) sea cual sea n) se verifica que el polinomio interpolador de Hermite, p2·n+1(x), de f(x) es la propia función. Por tanto: ∀x : n n n i=0 i=0 i= 0 1 ≡ p2·n+1(x) = ∑ 1·H0i (x) + ∑ 0·H1i (x) = ∑ H01(x) c.q.d. Ejercicios propuestos: 1º) Demostrar que siendo H0,i(x) y H1,i(x) (i = 0, 1, ..., n) los polinomios de base de Hermite asociados al soporte {x0, ..., xn} se verifica que: n n i=0 i=0 ∑ xi·H0,i (x) + ∑ H1,i (x) = x 2º) Demostrar que siendo H0,i(x) y H1,i(x) (i = 0, 1, ..., n) los polinomios de base de Hermite asociados al soporte {x0, ..., xn} y dado el entero m cumpliendo la condición 0 < m < 2·n+1, se verifica que: n ∑x i=0 m i n ·H0,i (x) + m·∑ xi(m−1) ·H1,i (x) = xm i= 0 3º) Determínese el polinomio interpolador de Hermite de la función f(x) = x4 sobre el soporte {0, 1, 3} a partir de los valores de la función y de su primera derivada en los puntos del soporte. ¿Cuál es el error de interpolación en el punto x = 2.5, es decir cual es el valor de |f(2.5) – p5(2.5)| ?. 4º) Utilícese la fórmula de interpolación de Hermite para determinar el polinomio interpolador de Hermite de la función cos(x) sobre el soporte ⎧ π π⎫ ⎨0, , ⎬ a partir de los valores de la función de su primera derivada en los ⎩ 6 2⎭ puntos del soporte. Represéntense las gráficas de los polinomios de base asociados a este soporte e indíquese el valor interpolado que aproximaría cos(π/4). 5º) Demuéstrese que los polinomios de base de Hermite asociados al soporte {x0, x1, ..., xi, ..., xn} forman una base del espacio vectorial P2·n+1 formado por todos los polinomios (de variable y coeficientes reales) de grado menor o igual que (2·n+1). 90 Programación y Métodos Numéricos Interpolación polinómica 3.2. Interpolación polinómica de Hermite: caso general. Ocupémonos ya del problema general de interpolación polinómica de Hermite. Este problema, según se describió anteriormente, puede formularse en la forma: Problema de Interpolación Polinómica de Hermite “Dados (n+1) puntos distintos {x0 , x1 , ... , xi ,... , xn}, (n+1) valores enteros no negativos {α0, α1, ..., αi, ..., αn}, siendo n m = n + ∑ αi y conocidos los (m+1) valores i= 0 {f (0 0 ,f0(1,...,f0( α0 ,f1(0 ,f1(1,...,f1( α1 ,..........,fn(0 ,fn(1 ,...,fn( αn } encontrar un polinomio pm(x), de grado menor o igual que m, verificando las (m+1) igualdades: (k pm (xi ) = fi(k (i = 0, 1, ...., n) , (k = 0, …, αi) “ En otros términos buscamos un polinomio de grado menor o igual que m y tal que en cada punto xi del soporte él y sus αi primeras derivadas tomen valores predeterminados. La existencia y unicidad del polinomio interpolador de Hermite, así como una manera de construirlo, se justifican con el siguiente teorema. Teorema 6 Dados: • Un soporte formado por (n+1) puntos distintos {x0, x1, ..., xn} • Los (n+1) enteros no negativos {α0, α1, ..., αn} • Los (m+1) valores, con m = n + n ∑ α , {f i=0 i (0 0 ,...,f0( α0 ,f1(0 ,...,f1( α1 ,...,fn(0 ,...,fn( αn } existe un único polinomio de grado menor o igual que m verificando las (m+1) igualdades: (k p(k (i = 0, 1, ..., n), (k = 0, ..., αi) (1) m (x i ) = fi Además dicho polinomio está dado por la expresión: 91 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid ⎛ αi (k ⎞ pm (x) = ∑ ⎜ ∑ fi ·Hk,i (x) ⎟ i=0 ⎝ k =0 ⎠ n donde los polinomios Hk,j(x), llamados polinomios de base de Hermite, pueden construirse mediante el proceso recursivo siguiente: Hαi ,i (x) = hαi ,i (x) Hk,i (x) = hk,i (x) − αi ∑h j=k +1 (j k,i (i = 0, 1, ..., n) (xi )·Hj,i (x) (k = αi-1, αi-2, …, 0), (i = 0, 1, …, n) siendo denotados por hk,j(x) los polinomios dados por: (x − xi )k n ⎛ x − x j ⎞ hk,i (x) = ·∏ ⎜ ⎟⎟ ⎜ k! j=0 ⎝ x i − x j ⎠ α j +1 (k = 0, 1, …,αi), (i = 0, 1, …, n) j≠i y por h(k,ij (xi ) al valor en el punto xi de la j-ésima derivada del polinomio hk,i(x). Demostración: a) Demostremos que el polinomio dado en el enunciado de este teorema es solución del problema de interpolación de Hermite. Para ello, en primer lugar observemos que, para 0 < i < n, el polinomio hk,i(x) es un polinomio de grado: k + n + n ∑α j=0 j≠i j = m – αi + k , y como 0 < k < ai se puede concluir que todos los polinomios hk,i(x) son de grado menor o igual que m. Más concretamente: grado(hαi ,i (x)) = m , grado(hαi −1,i (x)) = m − 1, .... , grado(h0,i (x)) = m − αi Ello, a su vez implica que, para 0 < i < n, los polinomios Hαi ,i (x) = hαi ,i (x) sean de grado: grado(Hαi ,i (x)) = m . En cuanto a los polinomios Hαi −1,i (x) = hαi −1,i (x) − h(ααi −i 1,i (x i )·Hαi ,i (x) su grado será menor o igual que m pues son una combinación lineal del polinomio hαi −1,i (x) (cuyo grado es m-1) y del polinomio Hαi ,i (x) (cuyo grado es m). 92 Programación y Métodos Numéricos Interpolación polinómica Por el mismo motivo, para i = 0, 1, 2, ..., n, todos los polinomios: Hαi −2,i (x) = hαi − 2,i (x) − h(ααi −i −2,i1 (x i )·Hαi −1,i (x) − h(ααi −i 2,i (x i )·Hαi ,i (x) tienen grado menor o igual que m pues son una combinación lineal del polinomio hαi −2,i (x) (cuyo grado es m-2), del polinomio Hαi −1,i (x) (cuyo grado es menor o igual que m) y del polinomio Hαi ,i (x) (cuyo grado es m). Razonando de forma recursiva se concluye que todos los polinomios Hk,i (x) , con 0 < k < αi y 0 < i < n, son polinomios de grado menor o igual que m. Y puesto que pm(x) es a su vez una combinación lineal de los polinomios Hk,i (x) puede concluirse que grado(pm(x)) < m. Por otra parte, fácilmente se verifica por inducción que: ⎧ 1 si i = j y j = k H(k,ij (x s ) = δis ·δ jk = ⎨ ⎩0 en otro caso (0 < j, k < αs) , (0 < i, s < n) lo que implica que: ⎛ αi (k ( j ⎞ p (x s ) = ∑ ⎜ ∑ fi ·Hk,i (x s ) ⎟ = fs( j ·H(j,sj (x s ) =fs( j i= 0 ⎝ k =0 ⎠ (j m n (0 < j < αs) , (0 < s < n) y por tanto que pm(x) es solución del problema de interpolación de Hermite. b) Demostremos ahora, por reducción al absurdo, que el polinomio pm(x) es la única solución del problema de Hermite. Supongamos que hubiera dos polinomios distintos, pm(x) y qm(x), de grado menor o igual que m y verififcando: (k p(k m (x i ) = fi (k q(k m (x i ) = fi (0 < k < αi) , (0 < i < n) (0 < k < αi) , (0 < i < n) 93 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Denotando por r(x) al polinomio definido mediante: r(x) = pm(x) – qm(x) se tiene que r(x) es otro polinomio de grado menor o igual que m para el que se verifica que: r (k (xi ) = 0 (0 < k < αi) , (0 < i < n) En otros términos cada punto xi del soporte es una raíz de multiplicidad (αi +1) de r(x). Ello implica que, contando cada raíz tantas veces como su multiplicidad, el polinomio r(x) tiene, al menos, (m+1) raíces. Puesto que el único polinomio de grado menor o igual que m con más de m raíces es el polinomio idénticamente nulo, se puede concluir que r(x) ≡ 0. De ello se infiere que p(x) ≡ q(x) en contra de lo inicialmente supuesto. Por tanto es absurdo suponer que existe más de un polinomio interpolador de Hermite. c.q.d. Ejemplo: Calculemos el polinomio interpolador de Hermite de la función de Runge f(x) = (1 + x2)-1 sobre el soporte {-8, 0, 10} para los enteros { 3, 0, 2}. Comencemos evaluando la función y sus derivadas en los puntos del soporte • En x0 = -8: f0(0 = f( −8) = f0(2 = f "( −8) = • En x1 = 1: • En x2 = 10: f2(0 = f(10) = 1 , 65 f0(1 = f '( −8) = 382 , 274625 16 , 4225 f0(3 = f '''( −8) = 12096 17850625 f1(0 = f(0) = 1 1 , 101 f2(1 = f '(10) = −20 , 10201 f2(2 = f "(10) = 598 1030301 Evaluemos ahora los polinomios hk,i(x) dados en el teorema anterior: 94 Programación y Métodos Numéricos Interpolación polinómica “Asociados a x0”: 3 3 ⎛ x − x1 ⎞ ⎛ x − x 2 ⎞ x ⎛ x − 10 ⎞ 1 ·⎜ = h0,0(x) = ⎜ ·x·(x − 10)3 = ⎟·⎜ ⎟ = ⎟ −8 ⎝ −18 ⎠ 46650 ⎝ x 0 − x1 ⎠ ⎝ x 0 − x 2 ⎠ = 1 5 25 2 125 ·x 4 − ·x 3 + ·x − ·x 46656 7776 3888 5832 3 ⎛ x − x1 ⎞ ⎛ x − x 2 ⎞ h1,0(x) = (x − x 0 )·⎜ ⎟·⎜ ⎟ = x x x x − − 1⎠⎝ 0 2 ⎠ ⎝ 0 3 x ⎛ x − 10 ⎞ 1 = ·(x + 8)·x·(x − 10)3 = = (x + 8)· ·⎜ ⎟ −8 ⎝ −18 ⎠ 46650 = 1 11 5 175 2 125 ·x 5 − ·x 4 + ·x3 + ·x − ·x 46656 23328 3888 5832 729 3 (x − x 0 )2 ⎛ x − x1 ⎞ ⎛ x − x 2 ⎞ ·⎜ h2,0(x) = ⎟·⎜ ⎟ = 2! x x x x − − 1 ⎠⎝ 0 2 ⎠ ⎝ 0 3 (x + 8)2 x ⎛ x − 10 ⎞ 1 · ·⎜ = ·(x + 8)2 ·x·(x − 10)3 = = ⎟ 93912 2 −8 ⎝ −18 ⎠ = 1 7 29 235 3 25 2 500 ·x 6 − ·x 5 − ·x 4 + ·x + ·x − ·x 93312 46656 23328 11664 729 729 3 (x − x 0 )3 ⎛ x − x1 ⎞ ⎛ x − x 2 ⎞ ·⎜ h3,0(x) = ⎟·⎜ ⎟ = 3! x x x x − − 1⎠⎝ 0 2 ⎠ ⎝ 0 3 (x + 8)3 x ⎛ x − 10 ⎞ 1 · ·⎜ = ·(x + 8)3 ·x·(x − 10)3 = = ⎟ 279936 6 −8 ⎝ −18 ⎠ = 1 1 19 119 4 95 3 100 2 4000 ·x 7 − ·x 6 − ·x 5 + ·x + ·x − ·x − ·x 279936 46656 23328 34992 1458 729 2187 95 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid “Asociados a x1”: ⎛ x − x0 ⎞ h0,1(x) = ⎜ ⎟ ⎝ x1 − x 0 ⎠ =− 4 3 ⎛ x − x2 ⎞ ⎛x+8⎞ ·⎜ ⎟ =⎜ ⎟ ⎝ 8 ⎠ ⎝ x1 − x 2 ⎠ 4 3 1 ⎛ x − 10 ⎞ ·⎜ = ·(x + 8)4 ·(x − 10)3 = ⎟ 4096000 ⎝ −10 ⎠ 1 1 69 109 101 3 21 2 1 ·x 7 − ·x 6 + ·x 5 + ·x 4 − ·x − ·x + ·x + 1 4096000 2048000 1024000 512000 16000 800 5 “Asociados a x2”: 4 ⎛ x − x 0 ⎞ ⎛ x − x1 ⎞ ⎛ x + 8 ⎞ h0,2(x) = ⎜ ⎟ ·⎜ ⎟ =⎜ ⎟ ⎝ x 2 − x 0 ⎠ ⎝ x 2 − x1 ⎠ ⎝ 18 ⎠ = 4 1 ⎛ x ⎞ ·⎜ ⎟ = ·(x + 8)4 ·x = ⎝ 10 ⎠ 1049760 1 1 4 64 128 ·x 5 + ·x 4 + ·x 3 + ·x 2 + ·x 1049760 32805 10935 32805 32805 ⎛ x − x0 ⎞ h1,2(x) = (x − x 2 )·⎜ ⎟ ⎝ x2 − x0 ⎠ 4 ⎛ x − x1 ⎞ ·⎜ ⎟= ⎝ x1 − x1 ⎠ 4 1 ⎛x+8⎞ x = (x − 10)·⎜ · = ·(x − 10)·(x + 8)4 ·x = ⎟ ⎝ 18 ⎠ 10 1049760 = 1 11 2 56 512 2 256 ·x 6 + ·x 5 + ·x 4 − ·x 3 − ·x − ·x 1049760 524880 32805 32805 32805 6561 (x − x 2 )2 ⎛ x − x 0 ⎞ ·⎜ h2,2(x) = ⎟ 2! ⎝ x2 − x0 ⎠ (x − 10)2 ⎛ x + 8 ⎞ = ·⎜ ⎟ 2 ⎝ 18 ⎠ = 4 4 ⎛ x − x1 ⎞ ·⎜ ⎟= x x − ⎝ 2 1⎠ 1 ⎛ x ⎞ ·⎜ ⎟ = ·(x − 10)2 ·(x + 8)4 ·x = ⎝ 10 ⎠ 2099520 1 1 13 38 8 128 2 1280 ·x 7 + ·x 6 − ·x 5 − ·x 4 + ·x 3 + ·x + ·x 2099520 174960 174960 32805 10935 2187 6561 96 Programación y Métodos Numéricos Interpolación polinómica Evaluemos ahora los valores de las derivadas que intervendrán en el cálculo de los polinomios de base de Hermite: h'''2,0 (x 0 ) = h'''2,0 ( −8) = h"1,0 (x 0 ) = h"1,0 ( −8) = h'0,0 (x 0 ) = h'0,0 ( −8) = −7 , 12 h'''1,0 (x 0 ) = h'''1,0 ( −8) = −7 , 24 h"0,0 (x 0 ) = h"0,0 ( −8) = h'''0,0 (x 0 ) = h'''0,0 ( −8) = 29 , 90 13 72 13 , 216 −31 3888 h"1,2 (x 2 ) = h''1,2 (10) = h'0,2 (x 2 ) = h'0,2 (10) = −7 8 29 45 h"0,2 (x 2 ) = h''0,2 (10) = 11 135 Tras los cálculos previos anteriores ya se pueden determinar los polinomios de base de Hermite utilizando las expresiones dadas en el teorema anterior: “Asociados” a x0 = -8: H3,0(x) = h3,0(x) = = 1 1 19 119 4 95 3 100 2 4000 ·x 7 − ·x 6 − ·x 5 + ·x + ·x − ·x − ·x 279936 46656 23328 34992 1458 729 2187 H2,0 (x) = h2,0 (x) − h'''2,i (x 0 )·H3,0 (x) = = 7 1 161 485 25 3 125 2 5000 ·x 7 − ·x 6 − ·x 5 + ·x 4 + ·x − ·x − ·x 2239488 124416 186624 279936 324 1458 2187 97 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid H1,0 (x) = h1,0 (x) − h"1,0 (x 0 )·H2,0 (x) − h'''1,0 (x 0 )·H3,0 (x) = = 95 11 2249 755 3625 3 125 2 23125 ·x 7 − ·x 6 − ·x 5 − ·x 4 + ·x + ·x − ·x 80621568 13436928 6718464 10077696 104976 26144 19683 H0,0 (x) = h0,0 (x) − h'0,0 (x 0 )·H1,0 (x) − h"0,0 (x 0 )·H2,0 (x) − h'''0,0 (x 0 )·H3,0 (x) = = 3205 215 75763 168865 ·x 7 + ·x 6 − ·x 5 − ·x 4 + 17414258688 2902376448 1451188224 2176782336 + 120275 3 67375 2 128125 ·x + ·x − ·x 22674816 5668704 531441 “Asociado” a x1 = 0: H0,1(x) = h0,1(x) = =− 1 1 69 109 101 3 21 2 1 ·x 7 − ·x 6 + ·x 5 + ·x 4 − ·x − ·x + ·x + 1 4096000 2048000 1024000 512000 16000 800 5 “Asociados” a x2 = 10: H2,2(x) = h2,2(x) = = 1 1 13 38 8 128 2 1280 ·x 7 + ·x 6 − ·x 5 − ·x 4 + ·x 3 + ·x + ·x 2099520 174960 174960 32805 10935 2187 6561 H1,2 (x) = h1,2 (x) − h"1,2 (x 2 )·H2,2 (x) = = −29 43 271 1192 1072 3 5248 2 9728 ·x 7 − ·x 6 + ·x 5 + ·x 4 − ·x − ·x − ·x 94478400 15746400 3936600 1476225 492075 98415 59049 H0,2 (x) = h0,2 (x) − h'0,2 (x 2 )·H1,2 (x) − h"0,2 (x 2 )·H2,2 (x) = = 511 587 10753 8989 ·x 7 + ·x 6 − ·x 5 − ·x 4 + 8503056000 1417176000 708588000 66430125 + 22324 63616 2 109184 ·x 3 + ·x + ·x 22143375 4428675 2657205 98 Programación y Métodos Numéricos Interpolación polinómica Antes de construir el polinomio interpolador verifiquemos que los polinomios de base de Hermite satisfacen: ⎧ 1 si i = s y j = j H(k,ij (x s ) = δ jk ·δis = ⎨ ( 0 < j,k < αs) , ( 0 < i, s < 2) ⎩0 en otro caso Ello se puede comprobar en las tablas siguientes que recogen los valores de las funciones Hk,i(x) y de sus tres primeras derivadas en los puntos del soporte. En ella los valores que se muestran resaltados se corresponden con aquellos que permiten verificar las igualdades anteriores. Tabla de valores de H00(x) Función 1ª derivada x0 1 0 x1 0 −128125 531441 x2 0 0 2ª derivada 3ª derivada 0 67375 2834352 0 0 120275 3779136 23725 248832 Tabla de valores de H10(x) Función 1ª derivada x0 0 1 x1 0 −23125 19683 x2 0 0 2ª derivada 3ª derivada 0 125 13122 0 0 3625 17496 1925 3456 Tabla de valores de H20(x) Función x0 0 x1 0 x2 0 1ª derivada 0 −5000 2187 0 99 2ª derivada 3ª derivada 1 0 −125 729 25 54 0 125 96 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Tabla de valores de H30(x) Función x0 0 x1 0 x2 0 1ª derivada 0 −4000 2187 0 2ª derivada 3ª derivada 0 −200 729 0 1 95 243 5 4 Tabla de valores de H01(x) Función x0 0 x1 1 x2 0 1ª derivada 0 2ª derivada 0 −21 400 1 5 0 0 3ª derivada 0 −303 8000 −19683 128000 Tabla de valores de H02(x) Función 1ª derivada x0 0 0 x1 0 109184 2657205 x2 1 0 2ª derivada 0 127232 4428675 0 3ª derivada 0 44648 7381125 7099 121500 Tabla de valores de H12(x) Función x0 0 x1 0 x2 0 1ª derivada 0 −9728 59049 1 100 2ª derivada 0 −10496 98415 0 3ª derivada 0 −2144 164025 −511 1350 Programación y Métodos Numéricos Interpolación polinómica Tabla de valores de H22(x) Función 1ª derivada x0 0 0 x1 0 1280 6561 x2 0 0 2ª derivada 3ª derivada 0 256 2187 1 0 16 3645 29 30 Las figuras siguientes recogen los grafos de estos polinomios de base (en el intervalo [-11, 11]: H0,0(x) H0,1(x) H0,2(x) H1,0(x) H1,2(x) 101 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid H2,0(x) H2,2(x) H3,0(x) Por último, con los polinomios de base de Hermite y los valores de la función f(x) y sus derivadas en los puntos del soporte se puede calcular el polinomio interpolador de Hermite mediante: 3 2 k =0 k =0 p7 (x) = ∑ f0(k ·Hk,0 (x) + f1(0 ·H0,1(x) + ∑ f2(k ·Hk,2 (x) = =1+ + 27699871744 19112886821 2 21826921472 3 ·x − ·x − ·x + 147132134305 735660671525 3678303357625 3908797597 1162926472 9254121 4204394 ·x 4 + ·x 5 − ·x 6 − ·x 7 18391516788125 18391516788125 18391516788125 18391516788125 La figura siguiente recoge, en el intervalo [-11, 11] el grafo de la función de Runge (en trazo discontinuo) y del polinomio interpolador de Hermite hallado (en trazo continuo). Como puede apreciarse, después de los largos cálculos anteriores, existe una buena aproximación entre el polinomio hallado y la 102 Programación y Métodos Numéricos Interpolación polinómica función que se interpola en los entornos de los puntos del soporte no sucediendo lo mismo en puntos alejados de los del soporte. Y al estar los puntos del soporte “alejados” entre sí se aprecian zonas en las que la precisión del polinomio interpolador es bastante pobre. En los ejercicios propuestos se encontrarán casos en los que el polinomio interpolador tiene un comportamiento más parecido a la función que interpola. • Ejercicios propuestos 1º) Determínese, sobre el soporte {0, 1, 2} y para los enteros {2, 1, 2}, el polinomio interpolador de Hermite de la función f(x) = 1 + 3·x . Represéntense gráficamente, en el intervalo [0, 2], los polinomios de base de Hermite, el polinomio interpolador de Hermite y la función f(x). 2º) Constrúyase el polinomio interpolador de Hermite de la función de Runge f(x) = (1+x2)-1 sobre el soporte {-2, 0, 2} para los enteros {2, 2, 2}. Represéntense gráficamente, en el intervalo [-2, 2], los polinomios de base de Hermite, el polinomio interpolador de Hermite y la función f(x). 3º) Demuéstrese que siendo Hk,i(x) (k = 0, ..., αi), (i = 0, ..., n) los polinomios de base de Hermite construidos sobre el soporte {x0, ..., xn} y para los enteros {α0, ..., αn}, se verifica que: n ∑H i=0 0,i (x) = 1 103 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 4º) Demuéstrese que el polinomio de base de Hermite Hk,i(x) (0 < k < αi) , (0 < i < n), construido sobre el soporte {x0, ..., xn} y para los enteros {α0, ..., αn}, es los único polinomio de grado menor o igual que m = n + n ∑α i=0 i para el que se verifican las igualdades: ⎧ 1 si s = i y j = k H(k,ij (x s ) = ⎨ ⎩0 en caso contrario (0 < j < as) , (0 < s < n) 5º) Demuéstrese que siendo Hk,i(x) (k = 0, ..., αi), (i = 0, ..., n) los polinomios de base de Hermite construidos sobre el soporte {x0, ..., xn} y para los enteros {α0, ..., αn}, y siendo j un entero no negativo inferior o igual a m = n + n ∑ α , se i=0 verifica que: ⎛ inf( j,αi ) ⎛ j ⎞ ( j−k ) ⎞ j ⎜ ∑ k!·⎜ ⎟·x i ·Hk,i (x) ⎟ = x ∑ i=0 ⎝ k = 0 ⎝k ⎠ ⎠ n 104 i Programación y Métodos Numéricos Interpolación polinómica 3.3. Análisis del error en la interpolación de Hermite. Al igual que se señaló en el caso de la interpolación de Lagrange puede definirse el error de interpolación de Hemite como sigue: Definición Siendo pm(x) el polinomio interpolador de Hermite de la función f(x) sobre el soporte {x0, x1, ...., xn} y para los enteros {α0, α1, ..., αn}, se denomina error de interpolación (de Hermite) a la función E(x) que a todo punto x le asocia el valor E(x) = f(x) – pm(x). • En general, si sobre la función f(x) que se está interpolando sólo se conocen los valores de ella y algunas de sus derivadas en los puntos del soporte, poco se puede decir sobre el error de interpolación (salvo que será nulo en los puntos del soporte). Pero si se admite una cierta regularidad de la función f(x), más concretamente, si se admite que tanto la función f(x) como sus primeras derivadas son continuas y acotadas, es posible obtener cotas de la función error de interpolación en el intervalo (a, b) al que pertenezcan los puntos del soporte. De forma más concreta, demostremos el siguiente: Teorema 7 Dados el soporte de (n+1) puntos distintos {x0, x1, ...., xn} de un intervalo (a, b) y los enteros no negativos {α0, α1, ..., αn}, denotando por m = n + n ∑α i=0 i y por pm(x) al polinomio interpolador de Hermite, sobre el soporte considerado y para los enteros dados, de una función f(x) de clase C(m+1)((a, b)), para todo punto x*∈(a, b) se puede encontrar algún punto ξ * ∈(a, b), dependiente del punto x* que se escoja, verificando que el error de interpolación de Hermite en x* está dado por la expresión: E(x*) = f(x*) − pn (x*) = f (m+1 ( ξ * ) (m + 1)! n ·∏ (x * − xi )αi +1 i=0 Demostración: Si el punto x* coincidiera con alguno de los puntos del soporte la igualdad anterior es evidente pues el error sería nulo y el productorio que aparece en la expresión del error también se anularía. Consideremos pues que x* ∉{x0, x1,..., xn}. En ese caso se puede definir el polinomio: 105 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid q(x) = pm(x) + f(x*) − pm (x*) n ∏ (x * − x ) n ·∏ (x − x i )αi +1 αi +1 i=0 i i= 0 El polinomio q(x) es un polinomio de grado menor o igual que (m+1), pues es la suma de un polinomio de grado menor o igual que m (pm(x)) más otro polinomio n de grado (m+1) (el polinomio ∏ (x − x ) i αi +1 ) multiplicado por la constante i=0 f(x*) − pm (x*) n ∏ (x * − x ) i . αi +1 i=0 Además dicho polinomio verifica que: q(j(xi) = p(jm(xi) = f(j(xi) q(x*) = pn(x*) + (i = 0, ..., n), (j = 0, ..., αi) f(x*) − pn (x*) n ·∏ (x * − xi ) = pn(x*)+ f(x*) - pn(x*) = f(x*) n ∏ (x * − xi ) i=0 i=0 Por tanto q(x) es el polinomio interpolador de Hermite de la función f(x) sobre el soporte formado por los (n+2) puntos: {x0, x1,..., xn, x*} y para los enteros {α0, α1, ..., αn, 0}. Definimos entonces la función F(x) = f(x) – q(x). Esta función es continua y será de clase C(m+1)((a, b)), pues es la diferencia de dos funciones de dicho espacio. Además la función F(x) admite a cada punto del soporte xi como una raíz de multiplicidad, al menos, αi y al punto x* como una raíz, al menos, simple. Es decir que, contando cada raíz tantas veces como su multiplicidad indique, la función F(x) admite en (a, b), al menos, (m+2) raíces. Aplicando sucesivamente el teorema de Rolle24 se tiene entonces que F’(x) admitirá, al menos, (m+1) raíces en (a, b), F”(x) admitirá, al menos, m raíces en (a, b), F’’’(x) admitirá, al menos, (m-1) raíces en (a, b), ...... y F(m+1(x) admitirá, al menos, una raíz en (a, b). Denotemos por ξ * a alguna de dichas raíces de F(m+1(x) en (a, b). Se tiene entonces que: 0 = F(m+1( ξ * ) = f(m+1( ξ * ) – q(n+1( ξ * ) = 24 Teorema de Rolle: “Si una función g(x) continua en el intervalo [a, b] es derivable en (a, b) y además verifica que f(a) = f(b), entonces existe al menos un punto c∈(a, b) en el que se verifica que f’(c) = 0”. 106 Programación y Métodos Numéricos =f (m+1 (ξ *) – p (m +1 m Interpolación polinómica ⎞ f(x*) − pm (x*) ⎛ n (ξ*) − n ·⎜ ∏ (x − xi )αi +1 ⎟ ⎠ ∏ (x * −xi )αi +1 ⎝ i=0 (m +1 = i=0 = f(m+1( ξ * ) – 0 – f(x*) − pm (x*) n ∏ (x * − x ) i ·(m + 1)! ⇒ αi +1 i= 0 f (m+1(ξ*) n ⇒ f(x*) – pm(x*) = ·∏ (x * − x i )αi +1 (m + 1)! i=0 c.q.d. Con la misma notación que la utilizada en el teorema precedente, una consecuencia inmediata es que si f(x) es una función polinómica de grado menor o igual que m, el error que se comete al interpolarla es nulo (pues la derivada de orden (m+1) de un polinomio de grado menor o igual que m es la función nula). En la práctica el teorema anterior se utiliza para obtener cotas del error de interpolación. En efecto, una consecuencia inmediata de dicho teorema es que si se denota por M al valor: M = Sup f (n+1(x) x∈( a,b ) se verificará que: ∀x ∈ (a,b) : |E(x)| = |f(x) – pm(x)| ≤ n M · ∏ (x − xi )αi +1 (m + 1)! i=0 de donde: ∀x ∈ (a,b) : |E(x)| = |f(x) – pm(x)| ≤ n M ·Sup ∏ (x − xi )αi +1 (m + 1)! x∈(a,b ) i=0 Si se denota por h a la longitud del intervalo (a, b) es evidente que, para todo punto x interior a dicho intervalo se verificará que: |x-xi| < h. Ello nos permite expresar la cota de error en la forma: M ·h(m+1) ∀x ∈ (a,b) : |E(x)| = |f(x) – pm(x)| ≤ (m + 1)! Las desigualdades anteriores recogen cotas superiores del máximo del valor absoluto de la función de error de interpolación. Tales cotas pueden ser 107 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid alcanzadas o no por la función de error (siendo frecuente que el error real de interpolación sea ostensiblemente menor que la cota así calculada). Por ello el interés de estas acotaciones se encuentra cuando la cota calculada es suficientemente pequeña, pues en ese caso se pueden asegurar errores de interpolación pequeños. Cuando la cota tiene un valor alto poco se puede asegurar sobre el error de interpolación. Por otra parte debe señalarse que las desigualdades anteriores pueden inducir al lector que aborda por primera vez el estudio de la interpolación de Hermite a sacar conclusiones erróneas. Por ejemplo es frecuente que a la vista de esta expresión se piense (erróneamente) que un incremento en el número de puntos del soporte o del número de derivadas de f(x) y del polinomio interpolador que se hacen coincidir en cada punto del soporte, sin incrementar la longitud del intervalo, conduce a un menor error de interpolación ya que al aumentar m crece el valor de (m+1)!. Ello no siempre sucede así pues, aunque es cierto que el factorial (m+1)! acaba creciendo con m más rápidamente que el valor de hm, debe tenerse en cuenta que el valor de M = Sup f (m+1(x) no es x∈( a,b ) independiente de m. Por otra parte el incremento del número de puntos del soporte puede conducir a polinomios interpoladores de alto grado que presenten oscilaciones muy pronunciadas lo cual no siempre será acorde con la naturaleza de la función f(x) que se interpole. Ejemplo: Consideremos la función de Runge f(x) = (1+x2)-1 , el soporte {-1, 1} y los enteros {1, 1}. El polinomio interpolador de Hermite en esta situación será de grado m = 3. El error de interpolación, según el teorema precedente, estará dado por la expresión: ∀x* ∈ [ −1,1] ∃ξ*=ξ(x*) / E(x*) = f (iv (ξ*) ·(x * +1)2 ·(x * −1)2 4! Busquemos una cota del error. Para ello se tiene que: 384·x 4 288·x 2 24 f (x) = − + 2 5 2 4 (1 + x ) (1 + x ) (1 + x 2 )3 (iv cuyo máximo valor absoluto se alcanza en x = 0 y es: |f(iv(0)| = 24. Por tanto: 108 Programación y Métodos Numéricos ∀x ∈ [ −1,1] : E(x) ≤ Interpolación polinómica 24 · sup (x + 1)2 ·(x − 1)2 = sup ⎡⎣(x + 1)2 ·(x − 1)2 ⎤⎦ x∈( −1,1) 4! x∈( −1,1) Determinemos el máximo de q(x) = (x+1)2·(x-1)2 =(x2 – 1)2.Puesto que: q’(x) =4·x·(x2 –1) se tiene que la primera derivada de q(x) se anula en los puntos x(1) = -1, x(2) = 0 y x(3) = 1. Puesto que q(-1) = q(1) = 0 y q(0) = 1 puede concluirse que: sup ⎡⎣(x + 1)2 ·(x − 1)2 ⎤⎦ = 1 x∈( −1,1) lo que nos conduce a la acotación de error siguiente: ∀x ∈ [ −1,1] : E(x) ≤ 1 Pero esta acotación es muy “pobre” si se tiene en cuenta que el máximo valor de la función f(x) es 1. Determinemos el error realmente cometido y su máximo valor. Para ello debemos determinar el polinomio interpolador de Hermite. Dejamos al lector la tarea de realizar los cálculos detallados que nos conducen a que: 1 ·(3 – x2) 4 Por tanto, al disponer de la expresión de la función que se está interpolando, la función de error es: p3(x) = E(x) = f(x) − p3 (x) = 1 1 − ·(3 − x 2 ) 2 1+ x 4 Su primera derivada está dada por: E’(x) = −2·x x 1 ·x·((1 + x 2 )2 − 4) + = 2 2 2 2 (1 + x ) 2 2·(1 + x ) que se anula en x = 0 y en la solución de (1+x2)2 – 4 = 0, es decir: (1+x2)2 – 4 = 0 ⇒ (1 + x2) = ±2 109 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid lo que proporciona como raíces rales los valores x = -1 y x = 1. Puesto que 3 1 E(-1) = E(1) = 0 y E(1) = 1 − = puede concluirse que: 4 4 max E(x) = E(0) = x∈( −1,1) 1 4 Los razonamientos anteriores demuestran que el máximo valor del error de interpolación es, en este caso, la cuarta parte de la cota obtenida. La figura siguiente recoge los grafos de f(x) y de p3(x). f(x) = (1+x2)-1 p3(x) = (¼)·(3-x2) Ejercicio propuesto: a) Dertermínese la expresión del error de interpolación de Hermite que se comete al interpolar f(x) = sen(x) en el soporte {0, π/2 , π} y para los enteros {1, 0, 1}. b) Obténgase a partir de la expresión anterior una cota del error en el intervalo [0, π]. c) Determínese el polinomio interpolador de Hermite, p(x), que interpola a f(x) en el soporte {0, π/2 , π} y para los enteros {1, 0, 1}. d) Hállese el máximo valor de |f(x) – p(x)| y comparese este resultado con la cota obtenida en el apartado b). 110 Programación y Métodos Numéricos Interpolación polinómica 3.4. Interpolación de Hermite: la fórmula de interpolación de Newton. 3.4.1. Planteamiento Las dos maneras presentadas anteriormente para determinar el polinomio interpolador de Hermite (a través de la resolución del correspondiente sistema de ecuaciones o mediante la fórmula de interpolación de Hermite en la que se utilizan los polinomios de base de Hermite) no son los únicos caminos posibles. En efecto, la fórmula de Newton que se presentó en el subapartado 2.3. para el cálculo del polinomio interpolador de Lagrange puede generalizarse al caso de la interpolación de Hermite. Pero para ello es necesario generalizar el concepto de diferencia dividida. Todo ello es el objetivo de este subapartado. En todo cuanto sigue se considerará que se trabaja en un soporte formado por (n+1) puntos distintos {x0, x1, .., xn} y que en cada punto xi se conoce el valor de una cierta función f(x) así como el de sus αi primeras derivadas. A tales valores, se les denotará indistintamente por fi(0 , fi(1 , ..., fi( αi o por f(xi), f’(xi), ..., f ( αi (xi ) . Además denotaremos por m al valor obtenido mediante: m = n + n ∑α . i=0 i Este número entero no negativo indica, como se ha visto en apartados anteriores, el grado del polinomio interpolador de Hermite de f(x) sobre el soporte {x0, x1, .., xn} y para los enteros {α 0 , α1,..., αn } . La idea básica de la fórmula de Newton consiste en expresar el polinomio interpolador de Hermite, pm(x), en la forma: ( α0 ) (1) (2) 2 pm(x) = a(0) ·(x − x 0 )α0 + 0 + a0 ·(x − x 0 ) + a 0 ·(x − x 0 ) + ... + a0 ( ) + a1(0) + a1(1) ·(x − x1 ) + a1(2) ·(x − x1 )2 + ... + a1( α1 −1) ·(x − x1 )α1 ·(x − x 0 )( α0 +1) + + …….. + ( ) n −1 αn αn (1) (2) 2 a(0) ·∏ (x − x j ) n + an ·(x − x n ) + an ·(x − x n ) + ... + an ·(x − x n ) = ( α j +1) = j=0 (i−1) n ⎛ α j +1 ⎞ ⎛ αi (k ) k k ⎞ (k ) a · x x a · x x · − + − ⎜⎜∑ i ( ⎟ ∑ ∑ 0 ( i) i ) ⎟ ∏(x − xj ) k =0 i=1 ⎝ ⎝ k = 0 ⎠ j=0 ⎠ α0 ) De esta manera los coeficientes a(k ((k = 0, .., αi) , (i = 0, ..., n) ) pueden i determinarse fácilmente a partir de las igualdades que debe satisfacer el polinomio interpolador. Antes de continuar con este proceso, ilustremos lo anterior con dos sencillos ejemplos en los que se esboza el proceso de cálculo de los coeficientes del polinomio. 111 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Ejemplos: 1º) Considérese el problema de interpolación de Hermite planteado sobre un soporte de 2 puntos {x0, x1} y para los enteros {1, 1}. La fórmula de Newton consistiría básicamente en buscar el polinomio interpolador p3(x) en la forma: (1) (0) 2 (1) 2 p3(x) = a(0) 0 + a0 ·(x − x 0 ) + a1 ·(x − x 0 ) + a1 ·(x − x 0 ) ·(x − x1 ) lo que nos permitirá razonar como sigue: (0 p3(x0) = f0(0 ⇒ a(0) ( que denotaremos como f[x0]) 0 = f0 (1 (que denotaremos como f[x0, x0] ) p’3(x0) = f0(1 ⇒ a(1) 0 = f0 p3(x1) = f1(0 ⇒ a1(0) f1(0 − f0(0 − f0(1 f[x 0 ,x1 ] − f [ x 0 ,x 0 ] f1(0 − f0(0 f0(1 (x1 − x 0 ) = − = = 2 (x1 − x 0 ) (x1 − x 0 ) (x1 − x 0 ) (x1 − x 0 ) (que denotaremos como f[x0, x0, x1] ) p’3(x1) = f1(1 ⇒ a1(1) = f1(1 − f[x 0 ,x 0 ] 2·f [ x 0 ,x 0 ,x1 ] − (x1 − x 0 )2 ( x1 − x 0 ) lo que, denotando por f[x1, x1] al valor f1(1 se puede expresar como: a1(1) = f[x1,x1 ] − f[x 0 ,x 0 ] ( x1 − x 0 ) (x1 − x 0 ) = = 2· − f[x1,x1 ] − f[x 0 ,x1 ] ( x1 − x 0 ) (x1 − x 0 ) f[x 0 ,x1 ] − f[x 0 ,x 0 ] ( x1 − x 0 ) ( x1 − x 0 ) − f[x 0 ,x1 ] − f[x 0 ,x 0 ] ( x1 − x 0 ) ( x1 − x 0 ) = = f[x 0 ,x1,x1 ] f [ x 0 ,x 0 ,x1 ] = f[x0, x0, x1, x1] − (x1 − x 0 ) ( x1 − x0 ) El procedimiento de cálculo de estos coeficientes puede realizarse de forma simple si se organizan en una tabla como la que a continuación se detalla. En ella, los valores resaltados en letra negrita se corresponden con los coeficientes y los valores que se proporcionan en cursiva se corresponden con 112 Programación y Métodos Numéricos Interpolación polinómica datos del problema. El resto se calcula de forma similar a como se detalló para las diferencias divididas x0 f0( 0 x0 --- x1 f1( 0 x1 -- f0( 1 = f[x0, x0] f[x0, x1] f[x0, x0, x1] f1(1 = f[x1, x1] f[x0, x1, x1] f[x0, x0, x1, x1] 2º) Consideremos ahora el problema de interpolación de Hermite planteado sobre un soporte de 2 puntos {x0, x1} y para los enteros {2, 1}. La fórmula de Newton consistiría básicamente en buscar el polinomio interpolador p4(x) en la forma: (1) (2) 2 (0) 3 (1) 3 p4(x) = a(0) 0 + a0 ·(x − x 0 ) + a0 ·(x − x 0 ) + a1 ·(x − x 0 ) + a1 ·(x − x 0 ) ·(x − x1 ) lo que nos permitirá razonar como sigue: (0 p4(x0) = f0(0 ⇒ a(0) ( que denotaremos como f[x0]) 0 = f0 (1 (que denotaremos como f[x0, x0] ) p’4(x0) = f0(1 ⇒ a(1) 0 = f0 f0(2 (que denotaremos como f[x0, x0, x0] ) 2 f0(2 (0 (0 (1 f − f0 f0 2 = 1 − − = 3 (x1 − x 0 ) (x1 − x 0 )2 (x1 − x 0 ) p”4(x0) = f0(2 ⇒ a(2) 0 = p4(x1) = f1(0 ⇒ a1(0) f1(0 − f0(0 f0(2 − f0(1 (x − x 0 ) 2 = 1 − = 2 (x1 − x 0 ) (x1 − x 0 ) = f [ x 0 ,x1 ] − f [ x 0 ,x 0 ] (x1 − x 0 ) 2 = − f [ x 0 ,x 0 ,x 0 ] (x1 − x 0 ) = f [ x 0 ,x 0 ,x1 ] − f [ x 0 ,x 0 ,x 0 ] (x1 − x 0 ) (que denotaremos como f[x0, x0, x0, x1] ) 113 Interpolación polinómica. (1 1 p’4(x1) = f ⇒a (1) 1 Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid f1(1 − f[x 0 ,x 0 ] 2·f [ x 0 ,x 0 ,x 0 ] 3·f [ x 0 ,x 0 ,x 0 ,x1 ] = − − = 2 (x1 − x 0 )3 (x1 − x 0 ) ( x1 − x0 ) f [ x 0 ,x 0 ,x1 ] − f [ x 0 ,x 0 ,x 0 ] f [ x1,x1 ] − f[x 0 ,x 0 ] 2·f [ x 0 ,x 0 ,x 0 ] (x1 − x 0 ) − − 3· = 2 3 (x1 − x 0 ) (x1 − x 0 ) ( x1 − x 0 ) = f [ x1,x1 ] − f[x 0 ,x 0 ] (x1 − x 0 )3 f [ x 0 ,x 0 ,x 0 ] + ( x1 − x0 ) 2 − 3·f [ x 0 ,x 0 ,x1 ] (x1 − x 0 )2 = f [ x 0 ,x1 ] − f [ x 0 ,x 0 ] f [ x1,x1 ] − f[x 0 ,x 0 ] f [ x 0 ,x 0 ,x 0 ] (x1 − x 0 ) = + − 3· = 2 3 (x1 − x 0 ) (x1 − x 0 )2 ( x1 − x 0 ) = = = = f [ x1,x1 ] − f[x 0 ,x1 ] (x1 − x 0 )3 f [ x 0 ,x1,x1 ] (x1 − x 0 ) 2 + + f [ x 0 ,x 0 ,x 0 ] ( x1 − x0 ) f [ x 0 ,x 0 ,x 0 ] ( x1 − x0 ) 2 f [ x 0 ,x1,x1 ] − f [ x 0 ,x 0 ,x1 ] (x1 − x 0 )2 f [ x 0 ,x 0 ,x1,x1 ] (x1 − x 0 ) − − 2· − 2 − 2· f [ x 0 ,x1 ] (x1 − x 0 )3 f [ x 0 ,x 0 ,x1 ] (x1 − x 0 )2 + 2· f [ x 0 ,x 0 ] (x1 − x 0 )3 = = f [ x 0 ,x 0 ,x1 ] − f [ x 0 ,x 0 ,x 0 ] ( x1 − x0 ) 2 = f [ x 0 ,x 0 ,x 0 ,x1 ] ( x1 − x 0 ) (que denotaremos como f[x0, x0, x0, x1, x1]). Al igual que en el ejemplo anterior, el procedimiento de cálculo de estos coeficientes puede realizarse de forma simple si se organizan en una tabla como la que a continuación se detalla. En ella, los valores resaltados en letra negrita se corresponden con los coeficientes y los valores que se proporcionan en cursiva se corresponden con datos del problema. El resto se calcula de forma similar a como se detalló para las diferencias divididas 114 Programación y Métodos Numéricos Interpolación polinómica x0 f0( 0 x0 --- x0 --- --- x1 f1( 0 f[x0, x1] f[x0, x0, x1] f[x0, x0, x0, x1] x1 -- f1(1 = f[x1, x1] f[x0, x1, x1] f[x0, x0, x1, x1] f0( 1 = f[x0, x0] f0( 2 = f[x0, x0, x0] 2 f[x0, x0, x0, x1, x1] • Las tablas de los ejemplos anteriores permiten vislumbrar la simplicidad del proceso de aplicación la fórmula de Newton al cálculo del polinomio interpolador de Hermite: basta con modificar las “primeras” columnas de la tabla para ir calculando los coeficientes del polinomio interpolador de forma similar al caso de la interpolación de Lagrange. Pero en los ejemplos anteriores han aparecido diferencias divididas en las que aparecen puntos repetidos y que conviene definir adecuadamente. A ello dedicaremos el siguiente subapartado. Como en él consideraremos el caso general, para evitar confusiones con el número de veces que se repite un mismo punto en una diferencia dividida en adelante indicaremos dicho número escribiéndolo entre paréntesis a continuación del punto. Así, por ejemplo escribiremos f[x0(2), x1(3), x2(1)] en lugar de f[x0, x0, x1, x1, x1, x2]. 115 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 3.4.2. Generalización del concepto de diferencia dividida Consideremos, en primer lugar, un soporte de k puntos distintos {x0, x1, ..., xk-1} con k > 0, y supongamos que en cada punto xi se conoce el valor que toman una cierta función f(x) así como sus αi primeras derivadas. Denotemos además k −1 k −1 i=0 i=0 por mk-1 al número entero positivo dado por: mk −1 = ∑ (αi + 1) − 1 = k − 1 + ∑ α i y por pmk −1 (x) al polinomio interpolador de Hermite de la función f(x) sobre el soporte {x0, x1, ..., xk-1} y para los enteros {α0 , α1,..., αk −1} . Se verifica entonces que pmk −1 (x) es un polinomio de grado inferior o igual a mk-1 que satisface las (mk-1 + 1) igualdades: p(mj k −1 (xi ) = f ( j (xi ) ( 0 ≤ j ≤ αi ; 0 ≤ i ≤ k − 1) Procedamos a añadir un nuevo punto, xk, al soporte anterior y denotemos por mk al entero positivo mk = mk −1 + 1 . El nuevo polinomio interpolador de Hermite de f(x) sobre el soporte {x0, x1, ..., xk-1, xk} para los enteros {α0 , α1,..., αk −1,0} , que denotaremos por pmk (x) , será el (único) polinomio de grado inferior o igual a mk que satisfaga las (mk+1) igualdades: p(mj k (xi ) = f ( j (xi ) ( 0 ≤ j ≤ αi ; 0 ≤ i ≤ k − 1) pmk (xk ) = f(xk) (1.1.) (1.2.) La determinación de pm(x) puede realizarse a partir de pm-1(x) según se indica en la propiedad siguiente: Propiedad 1. Con la notación anterior, el polinomio de grado menor o igual a mk que satisface las igualdades (1.1.) y (1.2.) puede expresarse como: k −1 pmk (x) = pmk −1 (x) + C·∏ (x − x i )αi +1 i=0 donde la constante C que aparece en la expresión anterior está dada por: 116 Programación y Métodos Numéricos Interpolación polinómica C= f(xk ) − pmk −1 (xk ) k −1 ∏(x i=0 k − xi ) αi +1 Demostración: El grado del polinomio pmk (x) será, a lo sumo, el mayor de los grados de los dos polinomios cuya suma lo define en el enunciado de la propiedad. El grado de pmk −1 (x) es mk-1. El del segundo polinomio que interviene en la definición es: k −1 k −1 i=0 i= 0 ∑ ( αi + 1) = k + ∑ αi = mk −1 + 1 = mk Por tanto el grado de pmk (x) es el que se afirma en la propiedad. Por otra parte las igualdades (1.1.) son evidentes pues: ∀(s, j) / {0 ≤ j ≤ α s ,0 ≤ i ≤ k − 1} : p(mj k (x s ) = p(mj k −1 (x s ) + C· ⎞ d j ⎛ k −1 (x − xi )αi +1 ⎟ = p(mj k −1 (x s ) = f ( j (x s ) j ⎜∏ dx ⎝ i=0 ⎠ x = xs Además, en el punto xk se verifica la igualdad (1.2) pues: k −1 pmk (xk ) = pmk −1 (xk ) + C·∏ (xk − xi )αi +1 = pmk −1 (xk ) + i=0 f(xk ) − pmk −1 (xk ) k −1 ·∏ (xk − xi )αi +1 = k −1 α +1 ∏ ( x k − x i ) i i=0 i=0 = pmk −1 (xk ) + f(xk ) − pmk −1 (xk ) = f(xk ) c.q.d. Definición 1. Con la notación utilizada anteriormente, se denomina diferencia dividida de la k función f(x) en los puntos {x i }i=0 , repitiendo ( αi +1) veces el punto xi para 0 < i < k-1 y el punto xk una vez, al valor: C= f(xk ) − pmk −1 (xk ) k −1 ∏(x i=0 k − xi ) A esta diferencia dividida la denotaremos por: 117 αi +1 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid f [ x0 (α0 + 1),x1(α1 + 1),...,xk −1(αk −1 + 1),xk (1)] . • Sea ahora {β0 ,.., βk ,..., βr } un conjunto de (r+1) enteros no nulos siendo, al ⎛ r ⎞ menos, jk>0. Denotemos por m al valor m = r + ⎜ ∑ βk ⎟ − 1 y por pm (x) al ⎝ i=0 ⎠ polinomio interpolador de Hermite de funa función f(x) sobre el soporte {x0, ..., xk-1, xk, xk+1, ..., xr} y para los enteros {β0 ,.., βk −1, ( βk − 1) , βk +1,..., βr } . Dicho polinomio es el único de grado menor o igual que m que satisface las (m + 1) igualdades: p(mj (x i ) = f ( j (x i ) p(mj (x k ) = f ( j (x k ) ( 0 ≤ j ≤ βi; i = 0,...,k − 1,k + 1,...,r ) ( 0 ≤ j ≤ βk − 1) Procedamos entonces a determinar el polinomio interpolador de Hermite de f(x) sobre el mismo soporte {x0, ..., xk-1, xk, xk+1, ..., xr} pero añadiendo una condición más en las derivadas que deben hacerse coincidir en xk, es decir para los enteros {β0 ,.., βk −1, βk , βk +1,..., βr } . Dicho polinomio, que denotaremos por pm+1(x), es el único polinomio de grado inferior o igual a (m+1) que satisface las (m+2) condiciones: p(mj +1(xi ) = f ( j (x i ) p(mj +1(x k ) = f ( j (x k ) ( 0 ≤ j ≤ αi; i = 0,...,k − 1,k + 1,...,n ) ( 0 ≤ j ≤ βk − 1) p(mβ+k 1+1(xk ) = f ( βk +1(xk ) (2.1.) (2.2.) (2.3.) La determinación de pm+1(x) puede realizarse según se indica en la siguiente propiedad. Propiedad 2. Con la notación anterior, el polinomio de grado (m+1) que satisface las igualdades (2.1.), (2.2.) y (2.3.) puede expresarse como: 118 Programación y Métodos Numéricos Interpolación polinómica ⎛ r ⎞ β pm+1(x) = pm (x) + C·⎜ ∏ (x − xi )βi +1 ⎟·( x − xk ) k ⎜⎜ i=0 ⎟⎟ ⎝ i≠ k ⎠ donde la constante C que aparece en la expresión anterior está dada por: C= f ( βk (xk ) − p(mβk (xk ) r βk !·∏ ( xk − xi ) αi +1 i =0 i ≠k Demostración: El grado del polinomio pm+1(x) será, a lo sumo, el mayor de los grados de los dos polinomios cuya suma interviene en su expresión dada en el enunciado. El grado de pm(x) es m. El del segundo polinomio que interviene en la definición es: r r r i= 0 i≠ k i= 0 i≠ k i=0 βk + ∑ ( βi + 1) = βk + r + ∑ βi = n + ∑ βi = m + 1 Por tanto el grado de pm+1(x) es el que se afirma en la propiedad. Por otra parte las igualdades (2.1.) son evidentes pues: ∀(s, j) / {0 ≤ j ≤ βs ,s ∈ {0,...,k − 1,k + 1,...,r}} : p (j m +1 ⎛ ⎞ r d( j ⎜ βk βi +1 ⎟ (x s ) = p (x s ) + C· j (x − xk ) ·∏ (x − xi ) = pm( j (x s ) = f ( j (x s ) ⎟ dx ⎜⎜ i=0 ⎟ i≠k ⎝ ⎠ x = xs (j m Asimismo las igualdades (2.2.) también se satisfacen pues: ∀j ∈ {0,..., βk − 1} : p (j m +1 ⎛ ⎞ r dj ⎜ βk βi +1 ⎟ (xk ) = p (xk ) + C· j ( x − xk ) ∏ (x − xi ) = pm( j (x s ) = f ( j (x s ) ⎜ ⎟ dx ⎜ i=0 ⎟ i≠k ⎝ ⎠ x = xk (j m 119 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Además también se verifica la igualdad (2.3.) pues: r p(mβ+k 1(xk ) = pm(βk (xk ) + C·( βk !)·∏ (xk − xi )βi +1 = i= 0 i≠ k ( βk m = p (x k ) + f ( βk (xk ) − p(mβkk−1 (xk ) r βk !·∏ ( xk − xi ) βi +1 r ·(βk !)·∏ (xk − x i )βi +1 = i=0 r ≠k i= 0 r ≠k = p(mβk (xk ) + f (βk (xk ) − p(mβk (xk ) = f (βk (xk ) c.q.d. Definición 2. Con la notación utilizada anteriormente, se denomina diferencia dividida de la r función f(x) en los puntos {x i }i=0 repitiendo ( βi + 1) veces el punto xi para i ∈ {0,...,k − 1,k,k + 1,...,n} , al valor: C= f ( βk (xk ) − p(mβk (xk ) r βk !·∏ ( xk − xi ) βi +1 i=0 i≠k A esta diferencia dividida la denotaremos por: f [ x0 (α0 + 1),...,xk −1(αk −1 + 1),xk (βk + 1),xk +1(αk +1 + 1),...,xn (αn + 1)] • Las propiedades 1 y 2 muestran una forma de calcular el polinomio interpolador de Hermite. De ella nos ocuparemos en el subapartado siguiente. Pero antes de ello será necesario que examinemos algunas de las propiedades de las diferencias divididas. La primera propiedad, que se demuestra en el teorema siguiente, asegura la unicidad del valor de la diferencia dividida con independencia del orden en que se tomen los puntos con que se define. Más concretamente: Teorema 8 Sea {j0, j1, ..., jn} una permutación cualquiera de los índices {0, 1, ..., n}. Se verifica que: 120 Programación y Métodos Numéricos Interpolación polinómica f [ x 0 (α 0 + 1),x1(α1 + 1),...,xn (αn + 1)] = f ⎡⎣ x j0 (α j0 + 1),x j1 (α j1 + 1),...,x jn (α jn + 1)⎤⎦ Demostración: n Si denotamos por m al valor m’ = n − 1 + ∑ αi el polinomio interpolador de i= 0 Hermite de la función f(x) sobre el soporte {x0, x1, ..., xn} para los enteros { α 0 , ..., αn − 1 } será un polinomio pm’(x) de grado m’. Según la propiedad 2 antes demostrada, el polinomio interpolador de Hermite de la función f(x) sobre el soporte {x0, x1, ..., xn} para los enteros { α 0 , ..., αn } será el polinomio pm(x) de grado m = m’+1 dado por la expresión: n pm (x) = pm ' (x) + f [ x 0 (α 0 + 1),...,xn (αn + 1)] ∏ (x − xi )αi +1 i=0 Obsérvese que en este polinomio el coeficiente del término de mayor grado es: f [ x 0 (α 0 + 1),...,x n (αn + 1)] Denotemos ahora por qm’(x) al polinomio interpolador de Hermite de la función f(x) sobre el mismo soporte ordenado en la forma x j0 ,x j1 ,...,x jn y para los enteros {α j0 { } } , α j1 ,..., α jn − 1 . Según la propiedad 2 antes demostrada, el polinomio interpolador de Hermite de la función f(x) sobre el soporte x j0 ,x j1 ,...,x jn para los enteros α j0 , α j1 ,..., α jn será el polinomio qm(x) de grado { } { } m = m’+1 dado por la expresión: n α +1 qm (x) = qm ' (x) + f ⎡⎣ x j0 (α j0 + 1),...,x jn (α jn + 1)⎤⎦ ∏ (x − x ji ) ji i=0 Obsérvese que en este polinomio el coeficiente del término de mayor grado es: f ⎡⎣ x j0 (α j0 + 1),...,x jn (α jn + 1)⎤⎦ Por la unicidad del polinomio interpolador de Hermite puede concluirse que qm (x) ≡ pm (x) y por consiguiente los coeficientes de los términos del mismo grado deben coincidir. Por tanto: f [ x 0 (α 0 + 1),...,x n (αn + 1)] = f ⎡⎣ x j0 (α j0 + 1),...,x jn (α jn + 1)⎤⎦ c.q.d. 121 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid El teorema siguiente nos proporciona una forma cómoda de calcular las diferencias divididas con puntos repetidos y en las que interviene más de un punto. Teorema 9 Sean “i” y “k” dos índices distintos y pertenecientes al conjunto de índices {0, 1, ..., n}. Considérense además los enteros no negativos {j0, ..., ji, ..., jk,..., jn}. Se verifica que: (x k − x i )·f [ x 0 ( j0 + 1),...,xi ( ji + 1),...,xk ( jk + 1),...,x n ( jn + 1)] = = f [ x 0 ( j0 + 1),...,xi ( ji ),...,x k ( jk + 1),...,xn ( jn + 1)] − − f [ x 0 ( j0 + 1),...,x i ( ji + 1),...,xk ( jk ),...,xn ( jn + 1)] Demostración: n Sea m = n + ∑ ji y denotemos por pm-2(x) al polinomio de grado (m-2) que i= 0 interpola en el sentido de Hermite a la función f(x) para los enteros {j0, ... , ji-1 ,(ji-1), ji+1, ..., jk-1, (jk-1), jk+1 ..., jn}. Si incrementamos en una unidad el orden de derivación que se hace coincidir en xi entre f(x) y el polinomio interpolador de Hermite, se tendrá el polinomio: ⎛ ⎞ ⎜ n ⎟ js +1 j j qm−1(x) = pm−2 (x) + Ci ⎜ ∏ ( x − x s ) ⎟·( x − xi ) i ·( x − xk ) k ⎜ s =0 ⎟ ⎜ ss≠≠ik ⎟ ⎝ ⎠ donde: Ci = f [ x 0 ( j0 + 1),..., xi−1(ji−1 + 1),xi ( ji + 1),xi+1( ji+1 + 1),..., xk −1( jk −1 + 1), xk ( jk ), xk +1(jk +1 + 1),..., xn ( jn + 1)] Incrementando ahora en una unidad el orden de derivación que se hace coincidir en xk se tendrá el polinomio: 122 Programación y Métodos Numéricos Interpolación polinómica ⎛ ⎞ ⎛ n ⎞ ⎜ n ⎟ js +1 ji jk js +1 ⎟ j ⎜ qm (x) = pm−2 (x) + Ci ·⎜ ∏ ( x − x s ) ⎟·( x − xi ) ·( x − xk ) + Ck ∏ ( x − x s ) ·( x − xk ) k ⎜⎜ s=0 ⎟⎟ ⎜ s =0 ⎟ ⎜ ss≠≠ik ⎟ ⎝ s ≠k ⎠ ⎝ ⎠ donde: Ck = f [ x 0 ( j0 + 1),..., xi−1( ji−1 + 1),xi ( ji + 1),xi+1( ji+1 + 1),...,xk −1( jk −1 + 1), xk +1( jk +1 + 1),xk +1( jk +1 + 1),..., xn ( jn + 1)] Podemos repetir este mismo proceso, a partir de pm-2(x), pero incrementando primero el orden de derivación en xk y posteriormente en xi. Se tendrían así los polinomios: ⎛ ⎞ ⎜ n ⎟ js +1 j j rm−1(x) = pm−2 (x) + C'k ⎜ ∏ ( x − x s ) ⎟·( x − xi ) i ·( x − xk ) k ⎜ s =0 ⎟ ⎜ ss≠≠ik ⎟ ⎝ ⎠ ⎛ ⎞ ⎛ n ⎞ ⎜ n ⎟ js +1 ji jk js +1 ⎟ j ⎜ rm (x) = pm−2 (x) + C'k ⎜ ∏ ( x − x s ) ⎟·( x − xi ) ·( x − xk ) + C'i ∏ ( x − x s ) ·( x − xi ) i ⎜ ⎟ ⎜ s =0 ⎟ ⎜ s =0 ⎟ ⎜ ss≠≠ik ⎟ ⎝ s ≠i ⎠ ⎝ ⎠ donde: C'k = f [ x 0 ( j0 + 1),..., xi−1( ji−1 + 1), xi ( ji ), xi+1( ji+1 + 1),...,xk −1 ( jk −1 + 1), xk +1 ( jk +1 + 1), xk +1( jk +1 + 1),..., xn ( jn + 1)] C'i = f [ x 0 ( j0 + 1),..., xi−1( ji−1 + 1),xi ( ji + 1),xi+1( ji+1 + 1),..., xk −1( jk −1 + 1),xk +1( jk +1 + 1), xk +1( jk +1 + 1),..., xn ( jn + 1)] Los polinomios qm(x) y rm(x) son el mismo polinomio pues ambos están determinados sobre el mismo soporte y para el mismo juego de grados de derivación. Por tanto los coeficientes de sus términos del mismo grado deben coincidir. Igualando los términos en xm se tiene que Ck = C’i lo que nos indica que el valor de la diferencia dividida de f(x) en x0 repetido (j0+1) veces, x1 repetido (j1+1) veces, .... y xn repetido (jn+1) veces es independiente de cual sea el orden seguido para hacer coincidir en cada punto xi las ji primeras derivadas del polinomio interpolador y de la función que se interpola. Identificando ahora los coeficientes de los términos en xm-1, y teniendo en cuenta que como se acaba de demostrar Ck = C’i, se tiene que: 123 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid ⎛ ⎞ ⎛ ⎞ n n ⎜ ⎟ ⎜ Ci − Ck jk ·xk + ∑ ( js + 1)·x s = C'k − C'i ji ·xi + ∑ ( js + 1)·x s ⎟ ⇒ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ s =0 s =0 s ≠k s ≠i ⎝ ⎠ ⎝ ⎠ ⎛ ⎞ ⎛ ⎞ n n ⇒ C'k − Ci = Ck ⎜ ji ·xi + ∑ ( js + 1)·x s ⎟ − Ck ⎜ jk ·xk + ∑ ( js + 1)·x s ⎟ ⇒ ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ s =0 s =0 s ≠i s ≠k ⎝ ⎠ ⎝ ⎠ ⎛ ⎞ n n ⎜ ⎟ ⇒ C'k − Ci = Ck ⎜ ji ·xi + ( jk + 1)·xk + ∑ ( js + 1)·x s − jk ·xk − ( ji + 1)·xi − ∑ ( js + 1)·x s ⎟ ⇒ s =0 s =0 ⎜ ⎟ s ≠i s ≠i ⎜ ⎟ s ≠k s ≠k ⎝ ⎠ ⇒ C'k − Ci = Ck ( xk − x i ) ⇒ Ck = C'k − Ci (x k − x i ) Sustituyendo Ck, C’k y Ci por sus expresiones como diferencias divididas escritas anteriormente, se tiene demostrado este teorema. c.q.d. Hasta aquí hemos prestado atención a las diferencias divididas definidas sobre más de un punto (repetidos cada uno de ellos (ji + 1) veces). También conocemos de lo desarrollado en la interpolación de Lagrange que las diferencias divididas en un único punto repetido una sóla vez coinciden con el valor que la función toma en dicho punto: f[xi] = f[xi(1)] = f(xi). Pero para acabar de definir las posibles diferencias divididas que se utilizarán es necesario contemplar también las diferencias divididas en un único punto xi repetido (ji+1) veces. Este objetivo puede lograrse de dos formas diferentes. Una de ellas, que desarrollaremos en el anexo a este apartado, consiste en considerar un soporte con (ji+1) puntos, plantearse la expresión de la diferencia dividida en ellos (repetidos una sola vez) y posteriormente hacer tender las distancias entre puntos hacia cero. La segunda forma de proceder, que desarrollamos a continuación, consiste en seguir el mismo proceso con el que se han definido las diferencias divididas en este apartado. Para ello comencemos determinando, en el teorema siguiente, 124 Programación y Métodos Numéricos Interpolación polinómica la expresión del polinomio interpolador cuando se tiene un único punto {xi} en el soporte y se conocen en él los valores de una función f(x) y los de sus βi primeras derivadas. Teorema 1025 El polinomio interpolador de Hermite de f(x) sobre el soporte {xi} para el entero βi es: 1 1 ( βi pβi (x) = f(xi ) + f '(xi )·(x − xi ) + f "(xi )·(x − xi )2 + ... + f (xi )·(x − xi )βi 2! βi ! Demostración: Se verifica fácilmente que: βi 1 f (k (xi )·(x − xi )(k − j) k = j (k − j)! p(βji (x) = ∑ (0 ≤ j ≤ βi ) por lo que: p(βji (xi ) = f ( j (xi ) (0 ≤ j ≤ βi ) c.q.d. El teorema anterior, para el caso en que βi = 0 nos conduce a que p0(x) = f(xi) que, con la notación de diferencias divididas, se expresa en la forma: p0(x) = f[xi(1)] Si ahora contemplamos el caso en que βi = 1 el nuevo polinomio interpolador estará dado por p1(x) = f(xi) + f’(xi)·(x-xi). Si, por analogía con el proceso seguido anteriormente, buscamos expresar este polinomio en la forma: p1(x) = p0(x) + f[xi(2)]·(x-xi) = f(xi) + f[xi(2)]·(x-xi) deberemos definir la diferencia dividida f[xi(2)] como f[xi(2)] = f’(xi), con lo que: p1(x) = f[xi(1)] + f[xi(2)]·(x-xi) 25 El polinomio interpolador que se define en este teorema coincide con el polinomio resultante de considerar los (βi+1) primeros términos del desarrollo en serie de Taylor de f(x) en torno al punto xi. Por ello dicho polinomio se conoce también con el nombre de polinomio de Taylor de la función f(x) de orden βi en xi. Por el mismo motivo el proceso de interpolar con un único punto de soporte en el que se conoce el valor de una función y el de sus βi primeras derivadas se denomina también interpolación de Taylor. 125 Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid Procedamos por recurrencia, admitiendo26 que para algún valor (k-1) el polinomio interpolador de Hermite de f(x) sobre el soporte {xi} para el entero (k-1): pk −1(x) = f(xi ) + f '(xi )·(x − xi ) + ... + 1 f (k −1(xi )·(x − xi )k −1 (k − 1)! puede expresarse en la forma: k −1 pk −1(x) = ∑ f ( j [xi ( j + 1)]·(x − xi ) j j= 0 Se tiene entonces que el polinomio interpolador de Hermite de f(x) sobre el soporte {xi} para el entero k: pk (x) = f(xi ) + f '(xi )·(x − xi ) + ... + 1 1 f (k −1(xi )·(x − xi )k −1 + f (k (xi )·(x − xi )k (k − 1)! k! puede expresarse en la forma: βi pβi (x) = ∑ f ( j [xi ( j + 1)]·(x − xi ) j = pβi −1 + f[xi (βi + 1)]·(x − xi )βi j=0 sin más que denominar diferencia dividida f[xi(k+1)] al valor: f [ xi (k)] = 1 (k f (xi ) k! • Las definiciones y propiedades anteriores justifican el uso de tablas de diferencias divididas análogas a las desarrolladas para el cálculo del polinomio interpolador de Lagrange mediante la fórmula de Newton. En la página siguiente se recoge un ejemplo de tal tipo de tablas, para el caso concreto de una interpolación de Hermite sobre un soporte con tres puntos {x0, x1, x2} y para los valores {3, 1, 2}. En el subapartado siguiente, tras concretar la fórmula generalizada de Newton desarrollaremos algún ejemplo concreto. 26 Obsérvese que, según lo anterior esto sucede, al menos, para k = 2. 126 Programación y Métodos Numéricos Interpolación polinómica x0 f(x0) x0 ---- f’(x0) x0 ---- ---- x0 ---- ---- x1 f(x1) f[x0(1),x1(1)] f[x0(2),x1(1)] f[x0(3),x1(1)] f[x0(4),x1(1)] x1 ---- f’(x1) f[x0(1),x1(2)] f[x0(2),x1(2)] f[x0(3),x1(2)] f[x0(4),x1(2)] x2 f(x2) f[x1(1),x2(1)] f[x1(2),x2(1)] f[x0(1),x1(2),x2(1)] f[x0(2),x1(2),x2(1)] f[x0(3),x1(2),x2(1)] f[x0(4),x1(2),x2(1)] x2 ---- f’(x2) f[x1(1),x2(2)] f[x1(2),x2(2)] f[x0(1),x1(2),x2(2)] f[x0(2),x1(2),x2(2)] f[x0(3),x1(2),x2(2)] f[x0(4),x1(2),x2(2)] x2 ---- ---- 1 f "(x 2 ) 2 f[x1(1),x2(3)] f[x1(2),x2(3)] f[x0(1),x1(2),x2(3)] f[x0(2),x1(2),x2(3)] f[x0(3),x1(2),x2(3)] 1 f "(x 0 ) 2 ---- 1 f "(x 0 ) 3! 127 f[x0(4),x1(2),x2(3)] Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 3.4.3. La fórmula de Newton para el cálculo del polinomio interpolador de Hermite. El uso del teorema 10 del subapartado anterior así como el uso reiterado de las propiedades 1ª y 2ª allí demostradas nos permite expresar el polinomio interpolador de Hermite de una función f(x) sobre el soporte {x0, x1, x2, ..., xn} para los enteros {α 0 , α1, α 2 ,..., αn } en la forma: pm (x) = f [ x 0 (1)] + f [ x 0 (2)]·(x − x 0 ) + f [ x 0 (3)]·(x − x 0 )2 + ... + f [ x 0 (α 0 + 1)]·(x − x 0 )α0 + + f [ x 0 (α 0 + 1),x1(1)]·( x − x 0 ) α0 +1 + f [ x 0 (α 0 + 1),x1(2)]·( x − x 0 ) + f [ x 0 (α 0 + 1),x1(α1 + 1)]·( x − x 0 ) α0 +1 α0 +1 (x − x1 ) + ... + (x − x1 )α1 + + f [ x 0 (α 0 + 1),x1(α1 + 1),x 2 (1)]·( x − x 0 ) α0 +1 (x − x1 )α1 +1 + + f [ x 0 (α 0 + 1),x1(α1 + 1),x 2 (2)]·( x − x 0 ) α0 +1 (x − x1 )α1 +1(x − x 2 ) + + f [ x 0 (α 0 + 1),x1(α1 + 1),x 2 (3)]·( x − x 0 ) α0 +1 (x − x1 )α1 +1(x − x 2 )2 + .... + + f [ x 0 (α 0 + 1),x1(α1 + 1),x 2 (α 2 + 1)]·( x − x 0 ) α0 +1 (x − x1 )α1 +1(x − x 2 )α2 + + ............................................................................................. + n −1 + f [ x 0 (α 0 + 1),x1(α1 + 1),...,xn−1(αn−1 + 1),xn (1)]·∏ ( x − x 0 ) αi +1 + i=0 ⎛ n−1 α +1 ⎞ + f [ x 0 (α 0 + 1),x1(α1 + 1),...,x n−1(αn−1 + 1),xn (2)]·⎜ ∏ ( x − x 0 ) i ⎟·(x − xn ) + ⎝ i=0 ⎠ ⎛ n−1 α +1 ⎞ + f [ x 0 (α 0 + 1),x1(α1 + 1),...,xn−1(αn−1 + 1),xn (3)]·⎜ ∏ ( x − x 0 ) i ⎟·(x − xn )2 + ⎝ i=0 ⎠ + ..................................................................................................+ ⎛ n−1 α +1 ⎞ + f [ x 0 (α 0 + 1),x1(α1 + 1),...,xn−1(αn−1 + 1),xn (αn + 1)]·⎜ ∏ ( x − x 0 ) i ⎟·(x − xn )αn ⎝ i=0 ⎠ 128 Programación y Métodos Numéricos Interpolación polinómica La fórmula anterior puede escribirse más abreviadamente como: α0 pm (x) = ∑ f [ x 0 (k + 1)]·( x − x i ) + k k =0 (i−1) n ⎛ α j +1 ⎞ ⎛ αi k ⎞ + ∑ ⎜⎜ ⎜ ∑ f [ x 0 (α 0 + 1),...,xi−1(αi−1 + 1),xi (k + 1)]·( x − xi ) ⎟·∏ ( x − x j ) ⎟⎟ i=1 ⎝ ⎝ k =0 ⎠ j= 0 ⎠ que se conoce con el nombre de fórmula de Newton para el cálculo del polinomio interpolador de Hermite (o fórmula generalizada de interpolación de Newton). En ella puede apreciarse que los únicos valores de la tabla de diferencias divididas que intervienen son los ubicados en el extremo derecho de cada fila. Los restantes valores de la tabla sólo son utilizados para calcular los que intervienen en esta fórmula. Ilustremos el uso de la fórmula con un ejemplo: Ejemplo: Calculemos el polinomio interpolador de Hermite de la función sen(x) sobre el soporte {-π/2, 0, π/2} para los enteros { 3, 0, 2}. Para ello podemos calcular los valores: f(-π/2) = -1 (= f[x0(1)]), f’(-π/2) = 0 (= f[x0(2)]) , ( 13! ) f '''( −π 2 ) = 0 (½)·f”(-π/2) = ½ (= f[x0(3)]) (= f[x0(4)]) f(0) = 0 (= f[x1(1)]) f(π/2) = 1 (= f[x2(1)]) , f’(π/2) = 0 (= f[x2(2)]), (½)·f”(π/2) = -½ (= f[x2(3)]) Con estos valores podemos calcular las diferencias divididas: f [ x 0 (1),x1(1)] = f [ x 0 (2),x1(1)] = f [ x1(1)] − f [ x 0 (1)] x1 − x 0 = 0 − ( −1) π 2 f [ x 0 (1),x1(1)] − f [ x 0 (2)] x1 − x 0 129 = = 2 π (2π) − 0 = π 2 4 π2 Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid f [ x 0 (3),x1(1)] = f [ x 0 (4),x1(1)] = f [ x1(1),x 2 (1)] = f [ x 0 (2),x1(1)] − f [ x 0 (3)] x1 − x 0 f [ x 0 (3),x1(1)] − f [ x 0 (4)] x1 − x 0 f [ x 2 (1)] − f [ x1(1)] x1 − x 0 f [ x 0 (1),x1(1),x 2 (1)] = f [ x 0 (2),x1(1),x 2 (1)] = f [ x 0 (3),x1(1), x 2 (1)] = f [ x 0 (4),x1(1), x 2 (1)] = 1− 0 π ( )−( ) = = = 2 f [ x 0 (2),x1(1),x 2 (2)] = f [ x 0 (3),x1(1), x 2 (2)] = 1 2 π2 π ( 8 π3 2 − 1π ) − 0 π 8 1 − π3 π = 2 x 2 − x0 ( 2π) − (2π) = 0 = π f [ x 0 (1),x1(1),x 2 (1)] − f [ x 0 (2),x1(1)] x2 − x0 x 2 − x0 x 2 − x0 = ( π3 + 1 π2 = π )−( f [ x 0 (2), x1(1),x 2 (2)] − f [ x 0 (3),x1(1),x 2 (1)] x 2 − x0 f [ x 0 (3), x1(1), x 2 (2)] − f [ x 0 (4), x1(1), x 2 (1)] x 2 − x1 130 16 π4 − 2 = ) = − 12 + π2 = ( 12 − ) = − 28 + 4 π = π3 (− ) − (− ) = 0 4 1 π3 4 π3 1 π2 ) = 12 − π ) − (− 2 π3 π ( − 12 ) − ( − 4 π ) 2 3 π3 π2 28 π5 + 3 π3 π π 1 π2 (− ) − 0 = − 4 π π5 4 4 π2 0 − ( − 12 π4 + = 4 π3 π5 x2 − x0 = 1 π π 2 x2 − x0 f [ x 2 (3)] − f [ x1(1),x 2 (2)] − π3 (0) − ( 2 π ) = − f [ x1(1),x 2 (2)] − f [ x 0 (1),x1(1),x 2 (1)] x2 − x0 8 π π4 =− π π f [ x 2 (2)] − f [ x1(1),x 2 (1)] x 2 − x1 −12 4 0 − ( 4 π2 ) = (− ) − ( = f [ x 0 (1),x1(1),x 2 (2)] − f [ x 0 (2),x1(1),x 2 (1)] f [ x1(1),x 2 (3)] = 16 2 − π 4 π2 2 π f [ x1(1),x 2 (1)] − f [ x 0 (1),x1(1)] f [ x 0 (3),x1(1), x 2 (1)] − f [ x 0 (4), x1(1)] f [ x 0 (1),x1(1),x 2 (2)] = 4 f [ x 0 (2), x1(1),x 2 (1)] − f [ x 0 (3), x1(1)] f [ x1(1),x 2 (2)] = f [ x 0 (4),x1(1), x 2 (2)] = = = = 5 1 π3 ) = 40 − π 8 1 − π3 π 6 4 π4 Programación y Métodos Numéricos f [ x 0 (1),x1(1), x 2 (3)] = f [ x 0 (2),x1(1), x 2 (3)] = f [ x 0 (3),x1(1), x 2 (3)] = f [ x 0 (4),x1(1), x 2 (3)] = Interpolación polinómica f [ x1(1),x 2 (3)] − f [ x 0 (1),x1(1), x 2 (2)] x 2 − x0 = ( 8 π3 − 1π ) − ( − 4 π3 ) = π f [ x 0 (1), x1(1),x 2 (3)] − f [ x 0 (2),x1(1),x 2 (2)] x2 − x0 f [ x 0 (2), x1(1),x 2 (3)] − f [ x 0 (3),x1(1), x 2 (2)] x2 − x0 = f [ x 0 (3), x1(1),x 2 (3)] − f [ x 0 (4), x1(1),x 2 (2)] x2 − x0 ( = = 12 π4 − 1 π2 π ( 12 π5 − 12 1 − π 4 π2 ) − 0 = 12 − π 1 π3 )−( 12 π5 − 5 1 π3 π 0 − ( 30 π6 − 4 π4 π 1 π3 ) =0 ) = − 40 + π7 4 π5 La tabla siguiente recoge los valores numéricos de estas diferencias divididas. −π −π −π −π 0 π π π 2 2 2 2 2 2 2 -1 − 0 − − 12 − − − 0 2 π 4 π2 1 − − 2 π 0 − 0 −4 −1 0 8 π3 −4 π2 −4 8 2 − 1π 16 −12 π3 2 π2 + π4 1 + 3 π3 40 12 - 4 π4 − 1π3 π5 π6 12 0 − 1π3 π5 -28 π2 0 π3 π3 - π4 − 1π 12 π4 − 1 π2 π5 -40 π7 + 4 π5 A partir de la tabla anterior, usando la formula de Newton, se obtiene el polinomio interpolador de Hermite de la función sen(x) sobre el soporte {−π 2 ,0, π 2} y para los enteros {3, 0, 1} : p7 (x) = -1 + 0·( x + π 2 ) + 12·( x + π 2 ) + 0·( x + π 2 ) + ( 16 π4 − 2 + ( -28 π5 + 3 + ( -40 π7 + 4 3 π3 )·( x + ) ·x + ( π5 )·( x + ) ·x·( x − ) π π 4 2 40 4 π2 )·( x + ) π 2 4 + − 4 π4 )·( x + π 2 ) ·x·( x − π 2 ) + 4 π6 π 2 2 2 2 ⇒ ⇒ p7 (x) = -1 + 12·( x + π 2 ) + 2 {( 4 + ( x + π 2 ) ·⎡⎢( 16 π4 − 2 π2 ) + x· ⎣ -28 π5 + 3 π3 )+( 40 131 π6 } 2 − 4 π4 )·( x − π 2 ) + ( 40 π7 − 4 π5 )·( x − π 2 ) ⎤⎥ ⎦ Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid La figura siguiente muestra el grafo de sen(x) y de p7(x) observándose en ella la “buena coincidencia” en el intervalo [ −π 2 , π 2 ] entre la función sen(x) y su polinomio interpolador. sen(x) p7(x) Para poder apreciar mejor la diferencia (sen(x) – p7(x)) se recoge en la figura siguiente la gráfica de este error (inferior en valor absoluto a 3·10-5 en todo el intervalo [ −π 2 , π 2 ] ). • 132 Programación y Métodos Numéricos Interpolación polinómica Ejercicio propuesto: Escribe un programa (en MAPLE, MATLAB, FORTRAN, C++, o en el lenguaje de programación que mejor conozcas) para: a) Calcular la tabla de diferencias finitas generalizadas b) Calcular el polinomio interpolador de Hermite sobre un soporte de (n+1) puntos y para (n+1) enteros no negativos dados c) Utiliza dicho programa para calcular el polinomio interpolador de Hermite de la función de Runge f(x) = (1 + x2)-1 sobre el soporte {-8, -4, 0, 5, 10} para los enteros { 1, 2, 3, 2, 1}. d) Representa en el intervalo [-10, 10] la función de Runge y su polinomio interpolador. e) Obtén una cota del error de interpolación válida en todo punto del intervalo [-10, 10]. 133 Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid 3.4.4. ANEXO: Otra forma de definir las diferencias divididas con puntos repetidos. Como se señaló en el subapartado 3.4.2. las diferencias divididas en las que aparece un punto repetido pueden ser definidas a partir de las diferencias divididas clásicas considerando un soporte formado por puntos distintos y haciendo tender hacia cero la distancia entre algunos de ellos. Por ello dedicaremos este anexo a detallar este proceso. Consideraremos en todo este subapartado que f(x) es una función diferenciable en todos los puntos de un intervalo (a, b). Comencemos considerando un punto x* de (a, b) y, siendo h un valor no nulo, un soporte formado por los dos puntos {x*, x*+h}. Según se definió en el apartado 5º la diferencia dividida (clásica) en este soporte está dada por: f[x*, x*+h] = f(x * +h) − f(x*) h por lo que: f(x * +h) − f(x*) = f '(x*) h→0 h f[x*,x*] = lim f[x*,x * +h] = lim h →0 De esta forma es natural introducir la definición siguiente: Definición Siendo f(x) una función diferenciable en el punto xi, se denomina diferencia dividida de primer orden en el punto xi (o diferencia dividida en xi repetido 2 veces) y se representa por f[xi, xi] (o por f[xi(2)]) al valor: f[xi, xi] = f’(xi) • Generalicemos el proceso anterior suponiendo ahora que la función f(x) es n veces diferenciable en el intervalo (a, b) y, siendo h un valor no nulo, consideremos el soporte formado por los (n+1) puntos {x0 = x*, x1 = x*+h, ...., xn = x*+n·h} todos ellos pertenecientes al intervalo (a, b). Se tiene, por recursión que: 134 Programación y Métodos Numéricos Interpolación polinómica f [ x*,x * +h,...,x * +(n − 1)·h,x * +n·h] = = f [ x * +h,...,x * +(n − 1)·h,x * +n·h] − f [ x*,x * +h,...,x * +(n − 1)·h,] n·h = 1 ⎡ f [ x * +2·h,...,x * +n·h] − f [ x * +h,...,x * +(n − 1)·h] − ·⎢ n·h ⎣ (n − 1)·h − = = f [ x * +h,...,x * +(n − 1)·h] − f [ x*,...,x * +(n − 2)·h] ⎤ ⎥ = (n − 1)·h ⎦ 1 ·⎡ f [ x * +2·h,...,x * +n·h] − 2·f [ x * +h,...,x * +(n − 1)·h] + n·(n − 1)·h2 ⎣ + f [ x*,...,x * +(n − 2)·h]⎤⎦ = = ....... = ⎞ ⎛n⎞ 1 1⎛ n · n ·⎜ ∑ ( −1)i ⎜ ⎟·f(x * +(n − i) * h) ⎟ n! h ⎝ i=0 ⎝i⎠ ⎠ (1) Por otra parte, al haber supuesto que f era n veces continuamente diferenciable, la fórmula del desarrollo en serie de Taylor nos permite escribir que: (n − i) j ·h j (j (n − i)n ·hn (n ·f (x*) + ·f (x*) j! n! j=1 n-1 ∃ξi ∈ [ x*,x * +(n − i)·h] / f(x*+(n-i)·h)=f(x*)+∑ Entrando con estos desarrollos en la expresión de la diferencia dividida se tiene que: n!· f [ x*,x * +h,...,x * +(n − 1)·h,x * +n·h] = = n −1 1 ⎛ n n! (n − i) j ⎞ ( j n! (n − i)n (n i i − + − · ( 1) · · ·f (x*) ( 1) · · ·f (ξi ) ⎟ ∑ ∑ n− j ⎜ ∑ i!·(n − i)! j! ⎠ i!·(n − i)! n! j=1 h i= 0 ⎝ i=0 n −1 (2) En la expresión anterior los coeficientes de f(j(x*) ( 0 < j < n) son nulos. Por no interrumpir el desarrollo que se está realizando, realizaremos la demostración de este hecho en el Lema 1º (un poco más adelante). Ello nos permite escribir: 135 Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid n −1 n!· f [ x*, x * +h,...,x * +(n − 1)·h,x * +n·h] = ∑ ( −1)i · i=0 n! (n − i)n (n · ·f (ξi ) i!·(n − i)! n! Si se hace tender h hacia 0, todos los puntos xi = x*+i·h tenderán a x* y además todos los puntos ξi ∈ [ x*,x * +(n − i)·h] también tenderán a x*. Ello nos conduce a que, tomando límites, se verifica: ⎛ n−1 n! (n − i)n ⎞ (n n!·f[x*, x*, …..,x*,x*] = ⎜ ∑ ( −1)i · · ⎟·f (x*) i!·(n − i)! n! ⎠ ⎝ i=0 (n+1) veces Por otra parte se verifica (y también se deja la demostración para ser realizada en el lema 2º un poco más adelante) para todo valor de n tal que n > 1, que: ⎛ n−1 n! (n − i)n ⎞ i ( 1) · · − ⎜∑ ⎟ =1 i!·(n − i)! n! ⎠ ⎝ i=0 por lo que, finalmente se tiene que: f[x*, x*, …..,x*,x*] = f (n (x*) n! (n+1) veces De esta forma es natural introducir la definición siguiente: Definición Siendo f(x) una función diferenciable en el punto xi, se denomina diferencia dividida de orden k el punto xi (o diferencia dividida en xi repetido (k+1) veces) y se representa por f[xi, xi,...., xi] (o por f[xi(k+1)]), al valor: f[xi, xi, ….., xi, xi] = f[xi(k+1)] = f (n (xi ) k! • Una vez introducidas las diferencias divididas en las que todos sus argumentos son el mismo punto repetido, podemos proceder a definir las diferencias divididas en forma más general como se hace en la siguiente definición 136 Programación y Métodos Numéricos Interpolación polinómica Definición Siendo {i0 < i1 < i2 < …. < ik-1 < ik} un conjunto de (k+1) índices enteros no negativos (pudiendo repetirse algunos de ellos o no) se denomina diferencia dividida de orden k: f ⎡⎣ xi0 ,xi1 ,xi2 ,...,x ik −1 ,xik ⎤⎦ al valor obtenido de la manera siguiente: f (n (xi ) n! f ⎡ xi ,....,xik −1 ,xik ⎤⎦ − f ⎡⎣ xi0 ,xi1 ,....,xik −1 ⎤⎦ f ⎡⎣ xi0 ,xi1 ,....,xik −1 ,xik ⎤⎦ = ⎣ 1 x ik − x i0 Si i0 = ik = i: f[xi, xi, ….., xi, xi] = Si i0 < ik: • NOTA: Como se demostró en el apartado 3.2., el orden en que se tomen los puntos, repetidos o no, no influye en el valor de la diferencia dividida. No obstante, en la definición anterior, se ha optado por considerar los índices de los puntos del soporte ordenados de menor a menor a mayor, agrupando de esta manera los que se repitan, para facilitar el seguimiento del proceso que se ha descrito. • Ocupémonos, por último, de demostrar los lemas utilizados anteriormente para definir la diferencia dividida f[xi(k+1)]. Lema 1º Siendo n un número entero positivo se verifica que: n n! ( −1)i · =0 ∑ i!·(n − i)! i=0 Además, para todo entero no negativo j tal que 0 < j < n se verifica que: n ∑ (−1)i· i=0 n! (n − i) j · =0 (n − i)!·i! j! Demostración: Para cualquier entero m que sea estrictamente positivo la fórmula del binomio de Newton17, nos asegura que: 17 Recordemos que la fórmula del binomio de Newton es: n ⎛n⎞ donde (a + b)n = ∑ ⎜ ⎟·a( n − i ) ·b i i =0 ⎝ i ⎠ 137 ⎛m⎞ m! ⎜ ⎟= ⎝ i ⎠ ( m − i )!·i ! Interpolación polinómica 0 = (1 – 1)m = Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid ⎛m⎞ ( −1)i ·⎜ ⎟ = ∑ i=0 ⎝ i⎠ m m m! ∑ (−1) ·(m − i)!·i! i (3) i=0 Particularizando esta expresión para m = n se tiene que: n n! ∑ (−1) ·(n − i)!·i! i =0 i=0 lo que demuestra la primera de las igualdades de esta propiedad. Obsérvese además que la igualdad que se acaba de demostrar es un caso particular de la segunda igualdad dada en el enunciado (obtenida para j = 0). Ello nos permite proceder por inducción, suponiendo que para un algún valor “(j-1)” la igualdad es cierta y demostrando que en ese caso también es cierta para el valor j. En efecto, si se supone que para cualquier valor m entero y superior a 1 y para algún valor (j-1) < (m-1) se verifica: m ∑ (−1)i· i=0 m! (m − i)( j−1) 1 m m! · =0⇔ ·∑ ( −1)i · ·(m − i)( j−1) = 0 ⇔ (m − i)!·i! ( j − 1)! ( j − 1)! i=0 (m − i)!·i! m ⇔ ∑ ( −1)i · i= 0 m! ·(m − i)( j−1) = 0 (m − i)!·i! se tendrá que: n! n! (n − i) j 1 n ·(n − i) j−1·(n − i) = ( −1) · · = ·∑ ( −1)i · ∑ j! i=0 (n − i)!·i! (n − i)!·i! j! i=0 n i n n n! 1 n n! ·(n − i) j−1 − ·∑ ( −1)i ·i· ·(n − i) j−1 = ·∑ ( −1)i · j! i=0 (n − i)!·i! j! i=0 (n − i)!·i! en donde, habida cuenta de la suposición realizada, en el caso m = n, el primer sumatorio es nulo por lo que: 138 Programación y Métodos Numéricos n ∑ (−1)i· i=0 Interpolación polinómica 1 n n! n! (n − i) j ·(n − i) j−1 = · = − ·∑ ( −1)i ·i· j! i=0 (n − i)!·i! (n − i)!·i! j! 1 n n! 1 n n! ·(n − i) j−1 = ·∑ ( −1)i−1· ·(n − i) j−1 = = ·∑ ( −1)i−1·i· j! i=1 (n − i)!·i! j! i=1 (n − i)!·(i − 1)! 1 (n−1) 1 ·(n − i − 1) j−1 = = ·n!· ∑ ( −1)i−1· j! (n − i − 1)!·(i)! i= 0 (n −1) 1 1 ·((n − 1) − i) j−1 = = ·n·(n − 1)!· ∑ ( −1)i−1· j! ((n 1) i)!·i! − − i=0 1 (n−1) (n − 1)! = ·n· ∑ ( −1)i−1· ·((n − 1) − i) j−1 j! i=0 ((n − 1) − i)!·i! en donde, volviendo a utilizar la suposición de la que se partió, ahora con m = (n-1), se puede concluir que: n ∑ (−1)i· i=0 n! (n − i) j · = 0 (n − i)!·i! j! c.q.d. NOTA: Obsérvese que en la demostración anterior se partía del hecho de que para todo valor de m > 1 se verificaba que si j = 0 j m m! (m − i) · = 0 . Esta igualdad nos sirvió para hacer la entonces ∑ ( −1)i · (m − i)!·i! j! i=0 hipótesis de que para todo valor de m > 1 existía algún valor (j-1) < m para el que: m ∑ (−1)i· i=0 m! (m − i)( j−1) · =0 (m − i)!·i! ( j − 1)! igualdad que, en el proceso de inducción seguido, se utilizó para m = n y para m = (n-1). Ello nos obliga a que n sea mayor o igual que 2 (pues si n fuese 1 la hipótesis no sería cierta ya que estaríamos admitiendo que 00 = 0). Es por ello que, detallando el proceso de inducción para los primeros valores de n se tiene: 139 Interpolación polinómica n = 1: j = 0 n = 2: j = 0 n=3j=0 n=4j=0 Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid j=1 j=1 j=1 j=2 j=2 j=3 Ello justifica que en la igualdad de la propiedad anterior los valores de j deban estar comprendidos entre 0 < j < (n-1). Para el caso j = n el valor del sumatorio correspondiente se recoge en el lema siguiente. Lema 2º. Siendo n un número entero positivo se verifica que: n ∑ (−1)i· i=0 n! (n − i)n · =1 (n − i)!·i! n! Demostración: Para n = 1 la igualdad anterior se reduce a que: 1 1! ∑ (−1) ·(1 − i)!·i!· i i=0 (1 − i) 1 1 1! 0 · − 1· · =1 = 1· 1! 1!0! 1! 0!·1! 1! Procedamos nuevamente por inducción suponiendo que para algún valor (n-1) se verifica que: (n −1) (n − 1)! ((n − 1) − i)(n−1) i ( − 1) · · =1 ∑ ((n − 1) − i)!·i! (n − 1)! i=0 Se tendrá entonces que: n n! (n − i)n i ( − 1) · · = ∑ (n − i)!·i! n! i=0 n = ∑ ( −1)i · i= 0 n ∑ (−1)i· i=0 n! (n − i)(n−1) · ·(n − i) = (n − i)!·i! n! n! (n − i)(n−1) n n! (n − i)(n−1) · − ∑ ( −1)i ·i· · (n − i)!·i! (n − 1)! (n − i)!·i! n! i=0 Por el lema 1º demostrado anteriormente resultará que el primer sumatorio de la expresión anterior es nulo. Por tanto: n ∑ (−1)i· i=0 n n! (n − i)n n! (n − i)(n−1) · · = −∑ ( −1)i ·i· = (n − i)!·i! n! (n − i)!·i! n! i= 0 140 Programación y Métodos Numéricos n = ∑ ( −1)(i−1) ·i· i= 0 n −1 = ∑ ( −1)(i−1) · i= 0 Interpolación polinómica 1 (n − i)(n−1) · = (n − i)!·i! 1 n ∑ (−1)(i−1)· i=0 (n − 1)! (n − i)(n−1) · = (n − i)!·(i − 1)! (n − 1)! (n − 1)! (n − i)(n−1) n−1 (n − 1)! ((n − 1) − i)(n−1) · = ∑ ( −1)(i) · · (n − i)!·(i − 1)! (n − 1)! ((n − 1) − i)!·i! (n − 1)! i=1 lo que, según la hipótesis que hemos realizado, demuestra que: n ∑ (−1)i· i=0 n! (n − i)n · = (n − i)!·i! n! n −1 ∑ (−1)(i)· i=1 (n − 1)! ((n − 1) − i)(n−1) · =1 ((n − 1) − i)!·i! (n − 1)! Por tanto, como la hipótesis era cierta para n = 1, la igualdad es cierta para el valor n = 2. Y, al ser cierta para n = 2, también es cierta para n = 3. Y por ser cierta para n = 3 también lo es para n = 4. Y en general lo será para cualquier valor de n entero positivo que se considere. c.q.d. 141 Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López ETSI Minas de la Universidad Politécnica de Madrid BIBLIOGRAFÍA SOBRE EL TEMA [1] Burden, R.L. y Fiares, J.D. (1998). Análisis Numérico. Ed. International Thomsom Editores [2] Crouzeix, M. et Mignot, A.L. (1983) Analyse numérique des équations differentielles. Ed. Masson. [3] Gasca, M. (1995) Cálculo Numérico I. Ed. Universidad Nacional de Educación a Distancia (UNED). [4] Michavila, F. y Conde, C. (1987) Métodos de Aproximación. Ed. Depto. de Matemática Aplicada y Métodos Informáticos – ETSI Minas – Universidad Politécnica de Madrid. [5] Sanz-Serna, J.M (1998 ) Diez lecciones de análisis numérico. Secretariado de Publicaciones de la Universidad de Valladolid [6] Shampine, L.F., Allen Jr., R.C. and Pruess, S. (1997) Fundamentals of numerical computing. Ed. John Wiley & Sons, Inc. [7] Stoer, J. and Bulirsch, R. (1993) Introduction to numerical analysis (2nd edition). Ed. Springer [8] Viaño, J.M. y Burguera, M. (2000) Lecciones de Métodos Numéricos, 3: Interpolación. Ed. Tórculo 142