Interpolación polinómica
# Interpolación polinómica

En análisis numérico, la interpolación polinómica (o polinomial) es una técnica de interpolación de un conjunto de datos o de una función por un polinomio. Es decir, dado cierto número de puntos obtenidos por muestreo o a partir de un experimento se pretende encontrar un polinomio que pase por todos los puntos.

## Definición

Dada una función $f$ de la cual se conocen sus valores en un número finito de abscisas $x_{0},x_{1},...,x_{m}$, se llama interpolación polinómica al proceso de hallar un polinomio $p_{m}(x)$ de grado menor o igual a m, cumpliendo $p_{m}(x_{k})=f(x_{k}),\ \forall k=0,1,...,m$.

A este polinomio se le llama Polinomio interpolador de grado m de la función f.

## Motivación del polinomio interpolador

La interpolación polinómica es un método usado para conocer, de un modo aproximado, los valores que toma cierta función de la cual solo se conoce su imagen en un número finito de abscisas. A menudo, ni siquiera se conocerá la expresión de la función y solo se dispondrá de los valores que toma para dichas abscisas.

El objetivo será hallar un polinomio que cumpla lo antes mencionado y que permita hallar aproximaciones de otros valores desconocidos para la función con una precisión deseable fijada. Por ello, para cada polinomio interpolador se dispondrá de una fórmula del error de interpolación que permitirá ajustar la precisión del polinomio.

Es fácil demostrar, usando el determinante de Vandermonde, que por n puntos, con la única condición de que para cada x haya una sola y, siempre se puede encontrar un polinomio de grado menor o igual a (n-1) que pase por los n puntos.

## Cálculo del polinomio interpolador

Se dispone de varios métodos generales de interpolación polinómica que permiten aproximar una función por un polinomio de grado m. El primero de estos es el método de las diferencias divididas de Newton. Otro de los métodos es la interpolación de Lagrange, y por último, la interpolación de Hermite.

### Método de las diferencias divididas de Newton

Sea $f_{n}\$ una variable discreta de $n\$ elementos y sea $x_{n}\$ otra variable discreta de $n\$ elementos los cuales corresponden, por parejas, a la imagen u ordenada y abcisa de los datos que se quieran interpolar, respectivamente, tales que:

$f\left({x_{k}}\right)=f_{k},\quad k=0,\ldots ,n$

Este método es algorítmico y resulta sumamente cómodo en determinados casos, sobre todo cuando se quiere calcular un polinomio interpolador de grado elevado.

El polinomio de grado $n\$ resultante tendrá la forma

$a_{0}+\sum \limits _{j=1}^{n}{a_{j}g_{j}\left(x\right)}$

definiendo $g_{j}\left(x\right)$ como

$g_{j}\left(x\right)=\prod \limits _{i=0}^{j-1}{\left({x-x_{i}}\right)}$

y definiendo $a_{j}\$ como

$a_{0}=f\left[{x_{0}}\right],a_{1}=f\left[{x_{0},x_{1}}\right],\ldots ,a_{j}=f\left[{x_{0},x_{1},\ldots ,x_{j-1},x_{j}}\right]$

Los coeficientes $a_{j}\$ son las llamadas diferencias divididas.

Una vez se hayan realizado todos los cálculos, nótese que hay (muchas) más diferencias divididas que coeficientes $a_{j}\$. El cálculo de todos los términos intermedios debe realizarse simplemente porque son necesarios para poder formar todos los términos finales. Sin embargo, los términos usados en la construcción del polinomio interpolador son todos aquellos que involucren a $x_{0}\$.

Estos coeficientes se calculan mediante los datos que se conocen de la función $f\$.

$f\left[{x_{0},x_{1},\ldots ,x_{j-1},x_{j}}\right]$ queda definido, como:

$f\left[{x_{i},x_{i+1},\ldots ,x_{i+j-1},x_{i+j}}\right]={\frac {f\left[{x_{i+1},\ldots ,x_{i+j-1},x_{i+j}}\right]-f\left[{x_{i},x_{i+1},\ldots ,x_{i+j-1}}\right]}{x_{i+j}-x_{i}}},\quad f\left[{x_{i}}\right]=f\left({x_{i}}\right)$

Se muestra ahora una tabla nemotécnica con las diferencias divididas de una cierta función $f\$ dada para construir un polinomio interpolador de grado 2:

$f[x_{0}]\ \searrow$

$f[x_{1}]\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ f[x_{0},x_{1},x_{2}]$

$f[x_{2}]\ \nearrow$

### Interpolación de Lagrange

Sea $f\$ la función a interpolar, sean $x_{0},x_{1},...,x_{m}\$ las abscisas conocidas de $f\$ y sean $f_{0},f_{1},...,f_{m}\$ los valores que toma la función en esas abscisas, el polinomio interpolador de grado $n\$ de Lagrange es un polinomio de la forma

$\sum \limits _{j=0}^{n}{f_{j}l_{j}(x)},\;n\leqslant m$

donde $l_{j}(x)\$ son los llamados polinomios de Lagrange, que se calculan de este modo:

$l_{j}\left(x\right)=\prod \limits _{i=0,i\neq j}^{n}{\frac {x-x_{i}}{x_{j}-x_{i}}}={\frac {\left({x-x_{0}}\right)\left({x-x_{1}}\right)\ldots \left({x-x_{j-1}}\right)\left({x-x_{j+1}}\right)\ldots \left({x-x_{n}}\right)}{\left({x_{j}-x_{0}}\right)\left({x_{j}-x_{1}}\right)\ldots \left({x_{j}-x_{j-1}}\right)\left({x_{j}-x_{j+1}}\right)\ldots \left({x_{j}-x_{n}}\right)}}$

Nótese que en estas condiciones, los coeficientes $l_{j}\left(x\right)\$ están bien definidos y son siempre distintos de cero.

Se muestra en el ejemplo siguiente el cálculo de un polinomio interpolador de Lagrange usando interpolación por Lagrange y diferencias divididas de Newton:

Ejemplo: Se quiere hallar el valor de la función $f(x)=e^{x+1}\$ para $x=0.75\$ usando un polinomio interpolador de Lagrange de grado 2.

Para ello se usan los siguientes datos:

$f(0)=e\$

$f\left({\frac {1}{2}}\right)=e^{\frac {3}{2}}\$

$f(1)=e^{2}\$

* Se usa primero el método directo para calcular el polinomio interpolador de Lagrange. Con las condiciones dadas, los polinomios de Lagrange son:

$l_{0}(x)={\frac {\left(x-{\frac {1}{2}}\right)(x-1)}{\frac {1}{2}}}=2x^{2}-3x+1$

$l_{1}(x)={\frac {x(x-1)}{-{\frac {1}{4}}}}=-4x^{2}+4x$

$l_{2}(x)={\frac {x\left(x-{\frac {1}{2}}\right)}{\frac {1}{2}}}=2x^{2}-x$

* Se calcula ahora el polinomio interpolador de grado 2:

$p_{2}(x)=\sum _{j=0}^{2}f_{j}l_{j}(x)=(2e-4e^{\frac {3}{2}}+2e^{2})x^{2}+(-3e+4e^{\frac {3}{2}}-e^{2})x+e$

* Ahora evaluamos este polinomio en $x=0.75\$ para obtener un valor aproximado de $e^{1.75}\$:

$f\left(0.75\right)=f\left({\frac {3}{4}}\right)=e^{\frac {7}{4}}\simeq p_{2}\left({\frac {3}{4}}\right)\simeq 5.792377$

* Si se usase una calculadora para efectuar el cálculo obtenemos $f\left({\frac {3}{4}}\right)=e^{\frac {7}{4}}=5.754602676\ldots \$, por lo que el error cometido es el siguiente:

$e_{a}\simeq |5.792377-5.754602616|=0.037774324\Rightarrow e_{r}={\frac {0.037774324}{5.754602616}}=0.006564193$

Se trata de un error del orden del 0.66 %.

Se procede a realizar ahora la interpolación mediante el método de las Diferencias Divididas de Newton:

* Se diseña una tabla de Diferencias Divididas esquemática y se realiza los pertinentes cálculos para obtener los siguientes coeficientes:

$f\left[x_{0}\right]=e\ \ \ \ \ \ \ \ \ \ \ \ \ \ f\left[x_{1}\right]=e^{\frac {3}{2}}\ \ \ \ \ \ \ \ \ \ \ \ \ \ f\left[x_{2}\right]=e^{2}$

$f\left[x_{0},x_{1}\right]=2(e^{\frac {3}{2}}-e)\ \ \ \ \ f\left[x_{1},x_{2}\right]=2(e^{2}-e^{\frac {3}{2}})$

$f\left[x_{0},x_{1},x_{2}\right]=2(e-2e^{\frac {3}{2}}+e^{2})$

* Ahora se debe tomar de estos coeficientes los que se necesitasen para escribir el polinomio interpolador. Hay que recordar, según lo apuntado anteriormente, que solo se usan aquellos coeficientes que involucren a $x_{0}\$. De esta forma se obtiene el polinomio interpolador de Lagrange de grado 2:

$p_{2}(x)=f\left[x_{0}\right]+f\left[x_{0},x_{1}\right](x-x_{0})+f\left[x_{0},x_{1},x_{2}\right](x-x_{0})(x-x_{1})=\$

$=e+2(e^{\frac {3}{2}}-e)x+2(e^{\frac {3}{2}}-e)x(x-{\frac {1}{2}})=$

$=(2e-4e^{\frac {3}{2}}+2e^{2})x^{2}+(-3e+4e^{\frac {3}{2}}-e^{2})x+e$

Y, como se puede apreciar, se llega al mismo polinomio pero con relativamente menos trabajo.

### Interpolación de Hermite

La interpolación de Hermite, llamada así en honor a su inventor Charles Hermite, es similar a la de Newton pero con el añadido de que ahora también conocemos los valores que toma la derivada de la función $f$ en las abscisas conocidas $x_{0},x_{1},...,x_{m}$.

El Polinomio Interpolador de Hermite de grado $2m+1$ de la función $f$ es un polinomio de la forma

$p_{2m+1}(x)=\sum _{i=0}^{m}f_{i}{\Phi }_{i}(x)+\sum _{i=0}^{m}f'_{i}{\Psi }_{i}(x)$

con

${\Phi }_{i}(x)=(1-2l'_{i}(x_{i})(x-x_{i}))l_{i}^{2}(x)$

${\Psi }_{i}(x)=(x-x_{i})l_{i}^{2}(x),\ i=0,...,m$

La interpolación de Hermite puede extenderse al conocimiento de las derivadas sucesivas de la función a interpolar en las abscisas tomadas, de modo que se puede obtener un polinomio cada vez más ajustado a la función real, ya que éste podrá cumplir otros requisitos como una determinada monotonía, concavidad, etc.

En este caso, estaremos hablando de interpolación de Hermite generalizada y su cálculo se llevará a cabo de forma similar a la apuntada, pero obteniendo polinomios de grado cada vez mayor debido a las sucesivas derivadas de los coeficientes $l_{i}(x)\$.

Notar, pues, que la interpolación de Lagrange puede considerarse como un caso particular de la interpolación de Hermite generalizada (el caso en el que "conocemos" cero derivadas de $f$).

Tal y como ocurría con la Interpolación de Lagrange, para la interpolación de Hermite también disponemos una fórmula del error de interpolación que, naturalmente, tiene en cuenta factores relacionados con las derivadas de f. Más concretamente, se dispone de una fórmula del error en el caso en que la función $f$ sea 2m+2 veces diferenciable en un intervalo $I$ mediante la siguiente expresión:

$f(x)-p_{2m+1}(x)={\frac {f^{(2m+2)}(\xi (x))}{(2m+2)!}}(x-x_{0})^{2}(x-x_{1})^{2}...(x-x_{m})^{2}$

para $x\in I$ y donde $\xi (x)\in <x_{0},x_{1},...,x_{m},x>$

La diferencia esencial entre la Interpolación de Hermite y la Interpolación de Lagrange reside en el cálculo a través de la construcción de los Polinomios de Lagrange. En este caso, su cálculo es árduo, largo y complicado; por lo que el uso de las llamadas diferencias divididas generalizadas simplifica mucho el cálculo del polinomio interpolador.

Las diferencias divididas generalizadas se construyen de igual modo que las Diferencias Divididas de Newton, salvo que ahora necesitaremos escribir $f_{i}$ tantas veces más una como derivadas de f conozcamos. Aquí solo veremos el caso en el que conocemos la primera derivada, siendo el resto una generalización de este.

Como en la Interpolación de Lagrange, el Polinomio Interpolador de Hermite de grado $2m+1$ se escribirá, una vez calculadas las Diferencias Divididas, de este modo

$p_{2m+1}(x)=f[x_{0}]+f[x_{0},x_{0}](x-x_{0})+...+f[x_{0},x_{0},...,x_{m},x_{m}](x-x_{0})^{2}...(x-x_{m-1})^{2}(x-x_{m})\$

Nótese que, aparentemente, los coeficientes $f[x_{i},x_{i}]\$ no están bien definidos, pues

$f[x_{i},x_{i}]={\frac {f[x_{i}]-f[x_{i}]}{x_{i}-x_{i}}}={\frac {0}{0}}$

Sin embargo, podemos tomar límites y escribir esta expresión así:

$f[x_{i},x_{i}]={\frac {f[x_{i}]-f[x_{i}]}{x_{i}-x_{i}}}=\lim _{x\to x_{i}}{\frac {f(x)-f(x_{i})}{x-x_{i}}}$

Pero esto no es más que la definición de la derivada de $f$ en el punto $x_{i}$, de modo que

$f[x_{i},x_{i}]=f'(x_{i})\$

Por ello, incluiremos en nuestra tabla de Diferencias Divididas los datos sobre todas las derivadas conocidas de la función a interpolar.

### Interpolación segmentaria

Existen métodos de Interpolación segmentaria que nos permiten aproximar funciones de un modo eficaz. Entre ellos cabe destacar la interpolación de Taylor y la interpolación por Splines.

La Interpolación de Taylor usa el Desarrollo de Taylor de una función en un punto para construir un polinomio de grado $m$ que se aproxima a la función dada. Tiene dos ventajas esenciales sobre otras formas de interpolación:

* Requiere solo de un punto $x_{0}\$ conocido de la función para su cálculo, si bien se pide que la función sea suficientemente diferenciable en un entorno de ese punto.
* El cálculo del Polinomio de Taylor es sumamente sencillo comparado con otras formas de interpolación polinómica:

$p_{x_{0}}(x)=\sum _{i=1}^{n}{\frac {f^{(i)}(x_{0})}{i!}}(x-x_{0})^{i}$

Sin embargo, en ocasiones no será deseable su uso dado que el error de interpolación puede alcanzar cotas demasiado elevadas.

Es especialmente útil para emplearse en lugar de métodos de interpolación de Hermite generalizada sobre derivadas de orden superior de la función $f$.

La Interpolación por Splines es un refinamiento de la interpolación polinómica que usa "pedazos" de varios polinomios en distintos intervalos de la función a interpolar para evitar problemas de oscilación como el llamado Fenómeno de Runge.

La idea es que agrupamos las abscisas $x_{0},x_{1},...,x_{m}\$ en distintos intervalos según el grado del spline que convenga emplear en cada uno. Así, un spline será un polinomio interpolador de grado n de $f$ para cada intervalo. A la postre, los distintos splines quedarán "unidos" recubriendo todas las abscisas e interpolando a la función.

El principal problema que presenta la interpolación por splines reside en los puntos que son comunes a dos intervalos (extremos). Por esos puntos deben pasar los splines de ambos intervalos, pero para que la interpolación sea ajustada, conviene que el punto de unión entre dos splines sea lo más "suave" posible (ej. evitar puntos angulosos), por lo que se pedirá también que en esos puntos ambos splines tengan derivada común. Esto no será siempre posible y, a menudo, se empleará otro tipo de interpolación, quizás una interpolación no-polinómica.

## Otras formas de interpolación

Existen otros métodos de interpolación no-polinómica que proporcionan aproximaciones de funciones de las cuales conocemos información limitada.

En el mismo contexto que la interpolación polinómica, contamos con la interpolación racional y la interpolación trigonométrica, que consisten en aproximar funciones por cocientes de polinomios y por polinomios trigonométricos respectivamente. La segunda es especialmente útil para funciones con valores en el cuerpo de los números complejos $\mathbb {C}$. También es frecuente el uso de wavelets (ondaletas).

Cuando el conjunto de las abscisas $x_{i}\$ es infinito, podemos recurrir a la Fórmula de Interpolación de Whittaker-Shannon.

Cuando estamos trabajando con funciones de varias variables, disponemos de la interpolación multivariable para conseguir aproximaciones de las mismas. Entre los métodos de interpolación multivariable, destacar la interpolación bilineal y la interpolación bicúbica para funciones de dos variables y la interpolación trilineal para funciones de tres variables.

## Temas relacionados

La interpolación de funciones, a menudo, no consiste en un problema por sí mismo, sino que suele tratarse de un paso dentro de la resolución de problemas mayores. Es habitual usarla como paso previo en la derivación numérica y en la integración numérica.

En el segundo caso, necesitamos realizar una partición del intervalo de definición de la función que queremos integrar, de modo que haya suficientes abscisas para que el error sea razonablemente pequeño. Sin embargo, puede que no tengamos datos acerca de algunas de las abscisas que separan los subintervalos. Cuando esto ocurra, tendremos que resolver un problema de extrapolación (ver método de extrapolación de Richardson).

Otros problemas relacionados con la interpolación son la aproximación de funciones y el cálculo de ceros de funciones no lineales.

