# Interpolador cúbico de Hermite

En análisis numérico, un interpolador cúbico de Hermite es un tipo de spline en el que cada pieza es un polinomio de tercer grado determinado según las condiciones de Hermite, es decir, por los valores de los puntos de paso y por la primera derivada en los puntos finales del intervalo del dominio correspondiente.
Los splines cúbicos de Hermite se utilizan normalmente para la interpolación de datos numéricos especificados en un conjunto de valores de argumento dados $x_{1},x_{2},\ldots ,x_{n}$, para obtener una función continua. Los datos deben consistir en el valor de la función deseada y la derivada en cada $x_{k}$. Si solo se proporcionan los valores, las derivadas pueden estimarse a partir de ellos. La fórmula de Hermite se aplica a cada intervalo $(x_{k},x_{k+1})$ por separado. El spline resultante será continuo y tendrá una primera derivada continua.
Los splines polinómicos cúbicos se pueden especificar de otras formas, siendo la curva de Bézier la más común. Sin embargo, estos dos métodos proporcionan el mismo conjunto de splines y los datos se pueden convertir fácilmente entre las formas Bézier y de Hermite; por eso los nombres se suelen utilizar como si fueran sinónimos.
Los splines polinomiales cúbicos se utilizan ampliamente en computación gráfica y modelado geométrico para obtener curvas o trayectorias de movimiento que pasan por puntos específicos del plano o del espacio tridimensional. En estas aplicaciones, cada coordenada del plano o espacio se interpola por separado mediante una función spline cúbica de un parámetro t independiente. Los splines polinomiales cúbicos también se utilizan ampliamente en aplicaciones de análisis estructural, como curvas elásticas. También se han aplicado splines polinómicos cúbicos al análisis de mortalidad y a la prognosis de mortalidad.
Los splines cúbicos se pueden extender a funciones de dos o más parámetros, de varias maneras. Los splines bicúbicos (utilizando interpolación bicúbica) se utilizan a menudo para interpolar datos en una cuadrícula rectangular regular, como el valor de los píxeles en una imagen digital o los datos de altitud de un terreno. Los parches de superficie bicúbica, definidos por tres splines bicúbicos, son una herramienta esencial en gráficos por computadora.
Los splines cúbicos a menudo se denominan csplines, especialmente en gráficos por computadora. Las splines de Hermite llevan el nombre del matemático francés Charles Hermite.

## Interpolación en un solo intervalo
### Intervalo unitario [0, 1]

En el intervalo unitario $[0,1]$, dado un punto inicial ${\boldsymbol {p}}_{0}$ en $t=0$ y un punto final ${\boldsymbol {p}}_{1}$ en $t=1$ con tangente inicial ${\boldsymbol {m}}_{0}$ en $t=0$ y tangente final ${\boldsymbol {m}}_{1}$ en $t=1$, el polinomio se puede definir por
    ${\boldsymbol {p}}(t)=\left(2t^{3}-3t^{2}+1\right){\boldsymbol {p}}_{0}+\left(t^{3}-2t^{2}+t\right){\boldsymbol {m}}_{0}+\left(-2t^{3}+3t^{2}\right){\boldsymbol {p}}_{1}+\left(t^{3}-t^{2}\right){\boldsymbol {m}}_{1},$
donde t ∈ [0, 1].

### Interpolación en un intervalo arbitrario

La interpolación de $x$ en un intervalo arbitrario $(x_{k},x_{k+1})$ se realiza asignando este último a $[0,1]$ mediante un cambio de variable afín (de grado 1). La fórmula es:
    ${\boldsymbol {p}}(x)=h_{00}(t){\boldsymbol {p}}_{k}+h_{10}(t)(x_{k+1}-x_{k}){\boldsymbol {m}}_{k}+h_{01}(t){\boldsymbol {p}}_{k+1}+h_{11}(t)(x_{k+1}-x_{k}){\boldsymbol {m}}_{k+1},$
donde $t=(x-x_{k})/(x_{k+1}-x_{k})$ y $h$ se refieren a las funciones básicas, definidas más adelante. Téngase en cuenta que los valores de la tangente han sido escalados por $x_{k+1}-x_{k}$ en comparación con la ecuación en el intervalo unitario.

### Unicidad

La fórmula especificada anteriormente proporciona la única ruta polinómica de tercer grado entre los dos puntos con las tangentes dadas.
Demostración. Sean $P,Q$ dos polinomios de tercer grado que satisfacen las condiciones de contorno dadas. Defínase $R=Q-P,$ entonces:
    $R(0)=Q(0)-P(0)=0,$
    $R(1)=Q(1)-P(1)=0.$
Dado que tanto $Q$ como $P$ son polinomios de tercer grado, $R$ es como máximo un polinomio de tercer grado. Entonces, $R$ debe tener la forma
    $R(x)=ax(x-1)(x-r).$
Calcular la derivada da
    $R'(x)=ax(x-1)+ax(x-r)+a(x-1)(x-r).$
Se sabe además que
    $R'(0)=Q'(0)-P'(0)=0,$
| $R'(0)=0=ar,$ | (1) |
    $R'(1)=Q'(1)-P'(1)=0,$
| $R'(1)=0=a(1-r).$ | (2) |
Combinando (1) y (2) se deduce que $a=0$, y por lo tanto, $R=0,$ y en consecuencia $P=Q.$

### Representaciones

Se puede escribir el polinomio de interpolación como
    ${\boldsymbol {p}}(t)=h_{00}(t){\boldsymbol {p}}_{0}+h_{10}(t)(x_{k+1}-x_{k}){\boldsymbol {m}}_{0}+h_{01}(t){\boldsymbol {p}}_{1}+h_{11}(t)(x_{k+1}-x_{k}){\boldsymbol {m}}_{1}$
donde $h_{00}$, $h_{10}$, $h_{01}$, $h_{11}$ son funciones de base de Hermite, que se pueden escribir de diferentes maneras, cada una de las cuales revela propiedades diferentes:
| | Expandido | Factorizado | Bernstein |
| $h_{00}(t)$ | $2t^{3}-3t^{2}+1$ | $(1+2t)(1-t)^{2}$ | $B_{0}(t)+B_{1}(t)$ |
| $h_{10}(t)$ | $t^{3}-2t^{2}+t$ | $t(1-t)^{2}$ | ${\tfrac {1}{3}}B_{1}(t)$ |
| $h_{01}(t)$ | $-2t^{3}+3t^{2}$ | $t^{2}(3-2t)$ | $B_{3}(t)+B_{2}(t)$ |
| $h_{11}(t)$ | $t^{3}-t^{2}$ | $t^{2}(t-1)$ | $-{\tfrac {1}{3}}B_{2}(t)$ |
La columna "Expandido" muestra la representación utilizada en la definición anterior.
La columna "Factorizado" muestra inmediatamente que $h_{10}$ y $h_{11}$ son cero en los límites. Además, se puede concluir que $h_{01}$ y $h_{11}$ tienen una raíz de multiplicidad 2 en 0, y $h_{00}$ y $h_{10}$ tienen ese cero en 1, por lo que tienen pendiente 0 en esos límites.
La columna "Bernstein" muestra la descomposición de las funciones básicas de Hermite en polinomios de Bernstein de orden 3:
    $B_{k}(t)={\binom {3}{k}}\cdot t^{k}\cdot (1-t)^{3-k}.$
Usando esta conexión se puede expresar la interpolación cúbica de Hermite en términos de una curva de Bézier cúbica con respecto a los cuatro valores p$_0$, p$_0$+1/3 m$_0$, p$_1$−1/3 m$_1$, p$_1${\textstyle {\boldsymbol {p}}_{0}, {\boldsymbol {p}}_{0}+{\frac {1}{3}}{\boldsymbol {m}}_{0}, {\boldsymbol {p}}_{1}-{\frac {1}{3}}{\boldsymbol {m}}_{1}, {\boldsymbol {p}}_{1}} y hacer la interpolación de Hermite usando el algoritmo de De Casteljau, con el que se demuestra que en un parche de Bézier cúbico los dos puntos de control en el medio determinan las tangentes de la curva de interpolación en los respectivos puntos exteriores.
También se puede escribir el polinomio en forma estándar como
    ${\boldsymbol {p}}(t)=\left(2{\boldsymbol {p}}_{0}+{\boldsymbol {m}}_{0}-2{\boldsymbol {p}}_{1}+{\boldsymbol {m}}_{1}\right)t^{3}+\left(-3{\boldsymbol {p}}_{0}+3{\boldsymbol {p}}_{1}-2{\boldsymbol {m}}_{0}-{\boldsymbol {m}}_{1}\right)t^{2}+{\boldsymbol {m}}_{0}t+{\boldsymbol {p}}_{0}$
donde los puntos de control y las tangentes son coeficientes. Esto permite una evaluación eficiente del polinomio en varios valores de t, ya que los coeficientes constantes se pueden calcular una vez y reutilizar.

## Interpolación de un conjunto de datos

Un conjunto de datos, $(x_{k},{\boldsymbol {p}}_{k})$ para $k=1,\ldots ,n$, se puede interpolar aplicando el procedimiento anterior en cada intervalo, donde las tangentes se eligen de manera adecuada, lo que significa que las tangentes de los intervalos que comparten puntos finales son iguales. La curva interpolada consta entonces de splines cúbicos de Hermite por partes y es globalmente diferenciable de forma continua en $(x_{1},x_{n})$.
La elección de tangentes no es única, y hay varias opciones disponibles.

### Diferencias finitas

La opción más sencilla es aplicar el método de las diferencias finitas a tres puntos, lo que no requiere longitudes de intervalo constantes:
    ${\boldsymbol {m}}_{k}={\frac {1}{2}}\left({\frac {{\boldsymbol {p}}_{k+1}-{\boldsymbol {p}}_{k}}{x_{k+1}-x_{k}}}+{\frac {{\boldsymbol {p}}_{k}-{\boldsymbol {p}}_{k-1}}{x_{k}-x_{k-1}}}\right)$
para puntos internos $k=2,\dots ,n-1$ y diferencia unilateral en los puntos finales del conjunto de datos.

### Spline cardinal

Un spline cardinal, a veces llamado spline canónico, se obtiene si:
    ${\boldsymbol {m}}_{k}=(1-c){\frac {{\boldsymbol {p}}_{k+1}-{\boldsymbol {p}}_{k-1}}{x_{k+1}-x_{k-1}}}$
lo que se utiliza para calcular las tangentes. El parámetro c es un parámetro de tensión que debe estar en el intervalo [0, 1]. En cierto sentido, esto puede interpretarse como la longitud de la tangente. Al elegir c = 1 se obtienen todas las tangentes cero, y al elegir c = 0 se obtiene un spline de Catmull-Rom en el caso de parametrización uniforme.

### Spline de Catmull–Rom

Para tangentes fijadas como
    ${\boldsymbol {m}}_{k}={\frac {{\boldsymbol {p}}_{k+1}-{\boldsymbol {p}}_{k-1}}{2}}$
se obtiene un spline de Catmull-Rom, siendo un caso especial de spline cardinal. Esto supone un espaciado de parámetros uniforme.
La curva lleva el nombre de Edwin Catmull y Raphael Rom. La principal ventaja de esta técnica es que los puntos en el conjunto original también constituyen los puntos de control de la curva spline. Se requieren dos puntos adicionales en cada extremo de la curva. La implementación uniforme de Catmull-Rom puede producir bucles y autointersecciones. Las implementaciones cordales y del spline centrípeto de Catmull-Rom resuelven este problema, pero utilizan un cálculo ligeramente diferente. En computación gráfica, los splines de Catmull-Rom se utilizan con frecuencia para obtener un movimiento interpolado suave entre fotogramas de referencia. Por ejemplo, la mayoría de las animaciones de trayectoria de cámara generadas a partir de fotogramas clave discretos se manejan mediante splines de Catmull-Rom. Son populares principalmente por ser relativamente fáciles de calcular, lo que garantiza que cada posición del fotograma clave se alcanzará exactamente y también garantiza que las tangentes de la curva generada sean continuas en múltiples segmentos.

### Spline de Kochanek-Bartels

Un spline de Kochanek-Bartels es una generalización adicional sobre cómo elegir las tangentes dados los puntos de datos ${\boldsymbol {p}}_{k-1}$, ${\boldsymbol {p}}_{k}$ y ${\boldsymbol {p}}_{k+1}$, con tres parámetros posibles: tensión, sesgo y un parámetro de continuidad.

### Interpolación cúbica monótona

Si se utiliza un spline cúbico de Hermite de cualquiera de los tipos enumerados anteriormente para la interpolación de un conjunto de datos monótono, la función interpolada no será necesariamente monótona, pero la monotonicidad se puede preservar ajustando las tangentes.

## Interpolación en el intervalo unitario con derivadas coincidentes en los puntos finales

Considérese una sola coordenada de los puntos ${\boldsymbol {p}}_{n-1},{\boldsymbol {p}}_{n},{\boldsymbol {p}}_{n+1}$ y ${\boldsymbol {p}}_{n+2}$ como los valores que toma una función f(x) en ordenadas enteras x = n − 1, n, n+1 y n+2,
    $p_{n}=f(n)\quad \forall n\in \mathbb {Z} .$
Además, supóngase que las tangentes en los puntos finales se definen como las diferencias centradas de los puntos adyacentes:
    $m_{n}={\frac {f(n+1)-f(n-1)}{2}}={\frac {p_{n+1}-p_{n-1}}{2}}\quad \forall n\in \mathbb {Z} .$
Para evaluar la f(x) interpolada para una x real, primero sepárese x en la porción entera n y en la porción fraccionaria u:
    $x=n+u,$
    $n=\lfloor x\rfloor =\operatorname {suelo} (x),$
    $u=x-n=x-\lfloor x\rfloor ,$
    $0\leq u<1,$
donde $\lfloor x\rfloor$ denota la función suelo, que devuelve el número entero más grande no mayor que x.
Entonces, el spline de Catmull-Rom es
    ${\begin{aligned}f(x)=f(n+u)&={\text{CINT}}_{u}(p_{n-1},p_{n},p_{n+1},p_{n+2})\\&={\begin{bmatrix}1&u&u^{2}&u^{3}\end{bmatrix}}{\begin{bmatrix}0&1&0&0\\-{\tfrac {1}{2}}&0&{\tfrac {1}{2}}&0\\1&-{\tfrac {5}{2}}&2&-{\tfrac {1}{2}}\\-{\tfrac {1}{2}}&{\tfrac {3}{2}}&-{\tfrac {3}{2}}&{\tfrac {1}{2}}\end{bmatrix}}{\begin{bmatrix}p_{n-1}\\p_{n}\\p_{n+1}\\p_{n+2}\end{bmatrix}}\\&={\frac {1}{2}}{\begin{bmatrix}-u^{3}+2u^{2}-u\\3u^{3}-5u^{2}+2\\-3u^{3}+4u^{2}+u\\u^{3}-u^{2}\end{bmatrix}}^{\mathrm {T} }{\begin{bmatrix}p_{n-1}\\p_{n}\\p_{n+1}\\p_{n+2}\end{bmatrix}}\\&={\frac {1}{2}}{\begin{bmatrix}u{\big(2-u)u-1{\big )}\\u^{2}(3u-5)+2\\u{\big(4-3u)u+1{\big )}\\u^{2}(u-1)\end{bmatrix}}^{\mathrm {T} }{\begin{bmatrix}p_{n-1}\\p_{n}\\p_{n+1}\\p_{n+2}\end{bmatrix}}\\&={\tfrac {1}{2}}{\Big{\bigu^{2}(2-u)-u{\big )}p_{n-1}+{\bigu^{2}(3u-5)+2{\big )}p_{n}+{\bigu^{2}(4-3u)+u{\big )}p_{n+1}+u^{2}(u-1)p_{n+2}{\Big )}\\&={\tfrac {1}{2}}{\big(-u^{3}+2u^{2}-u)p_{n-1}+(3u^{3}-5u^{2}+2)p_{n}+(-3u^{3}+4u^{2}+u)p_{n+1}+(u^{3}-u^{2})p_{n+2}{\big )}\\&={\tfrac {1}{2}}{\big(-p_{n-1}+3p_{n}-3p_{n+1}+p_{n+2})u^{3}+(2p_{n-1}-5p_{n}+4p_{n+1}-p_{n+2})u^{2}+(-p_{n-1}+p_{n+1})u+2p_{n}{\big )}\\&={\tfrac {1}{2}}{\Big{\big(-p_{n-1}+3p_{n}-3p_{n+1}+p_{n+2})u+(2p_{n-1}-5p_{n}+4p_{n+1}-p_{n+2}){\big )}u+(-p_{n-1}+p_{n+1}){\Big )}u+p_{n},\end{aligned}}$
donde $\mathrm {T}$ denota la matriz transpuesta. La igualdad inferior representa la aplicación del algoritmo de Horner.
Este escrito es relevante para la interpolación tricúbica, donde una optimización requiere calcular CINT$_u$ dieciséis veces con la misma u y diferente p.