Interpolador cúbico de Hermite

De testwiki
Ir a la navegación Ir a la búsqueda

Plantilla:Distinguir

Las cuatro funciones básicas de Hermite. El interpolante en cada subintervalo es una combinación lineal de estas cuatro funciones

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.[1]

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 x1,x2,,xn, para obtener una función continua. Los datos deben consistir en el valor de la función deseada y la derivada en cada xk. Si solo se proporcionan los valores, las derivadas pueden estimarse a partir de ellos. La fórmula de Hermite se aplica a cada intervalo (xk,xk+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[2] y a la prognosis de mortalidad.[3]

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 𝒑0 en t=0 y un punto final 𝒑1 en t=1 con tangente inicial 𝒎0 en t=0 y tangente final 𝒎1 en t=1, el polinomio se puede definir por

𝒑(t)=(2t33t2+1)𝒑0+(t32t2+t)𝒎0+(2t3+3t2)𝒑1+(t3t2)𝒎1,

donde t ∈ [0, 1].

Interpolación en un intervalo arbitrario

La interpolación de x en un intervalo arbitrario (xk,xk+1) se realiza asignando este último a [0,1] mediante un cambio de variable afín (de grado 1). La fórmula es:

𝒑(x)=h00(t)𝒑k+h10(t)(xk+1xk)𝒎k+h01(t)𝒑k+1+h11(t)(xk+1xk)𝒎k+1,

donde t=(xxk)/(xk+1xk) 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 xk+1xk 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=QP, 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(x1)(xr).

Calcular la derivada da

R(x)=ax(x1)+ax(xr)+a(x1)(xr).

Se sabe además que

R(0)=Q(0)P(0)=0,

Plantilla:NumBlk

R(1)=Q(1)P(1)=0,

Plantilla:NumBlk

Combinando (Plantilla:EquationNote) y (Plantilla:EquationNote) 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

𝒑(t)=h00(t)𝒑0+h10(t)(xk+1xk)𝒎0+h01(t)𝒑1+h11(t)(xk+1xk)𝒎1

donde h00, h10, h01, h11 son funciones de base de Hermite, que se pueden escribir de diferentes maneras, cada una de las cuales revela propiedades diferentes:

Expandido Factorizado Bernstein
h00(t) 2t33t2+1 (1+2t)(1t)2 B0(t)+B1(t)
h10(t) t32t2+t t(1t)2 13B1(t)
h01(t) 2t3+3t2 t2(32t) B3(t)+B2(t)
h11(t) t3t2 t2(t1) 13B2(t)

La columna "Expandido" muestra la representación utilizada en la definición anterior.

La columna "Factorizado" muestra inmediatamente que h10 y h11 son cero en los límites. Además, se puede concluir que h01 y h11 tienen una raíz de multiplicidad 2 en 0, y h00 y h10 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:

Bk(t)=(3k)tk(1t)3k.

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 𝒑0,𝒑0+13𝒎0,𝒑113𝒎1,𝒑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

𝒑(t)=(2𝒑0+𝒎02𝒑1+𝒎1)t3+(3𝒑0+3𝒑12𝒎0𝒎1)t2+𝒎0t+𝒑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, (xk,𝒑k) para k=1,,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 (x1,xn).

La elección de tangentes no es única, y hay varias opciones disponibles.

Diferencias finitas

Ejemplo con tangentes por 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:

𝒎k=12(𝒑k+1𝒑kxk+1xk+𝒑k𝒑k1xkxk1)

para puntos internos k=2,,n1 y diferencia unilateral en los puntos finales del conjunto de datos.

Spline cardinal

Ejemplo de spline cardinal en 2D. La línea representa la curva y los cuadrados representan los puntos de control 𝒑k. Obsérvese que la curva no llega al primer ni al último punto. Estos puntos, sin embargo, afectan a la forma de la curva. El parámetro de tensión utilizado es 0,1

Un spline cardinal, a veces llamado spline canónico,[4] se obtiene si:[5]

𝒎k=(1c)𝒑k+1𝒑k1xk+1xk1

lo que se utiliza para calcular las tangentes. El parámetro Plantilla:Mvar es un parámetro de tensión que debe estar en el intervalo Plantilla:Math. En cierto sentido, esto puede interpretarse como la longitud de la tangente. Al elegir Plantilla:Math se obtienen todas las tangentes cero, y al elegir Plantilla:Math se obtiene un spline de Catmull-Rom en el caso de parametrización uniforme.

Spline de Catmull–Rom

Plantilla:VT

Interpretación geométrica de la interpolación cúbica de Catmull-Rom del punto negro con abscisas espaciadas uniformemente.[6]

Para tangentes fijadas como

𝒎k=𝒑k+1𝒑k12

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.[7] 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[8] resuelven este problema, pero utilizan un cálculo ligeramente diferente.[9] 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

Plantilla:AP

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

Interpolación cúbica monótona

Plantilla:AP

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 𝒑n1,𝒑n,𝒑n+1 y 𝒑n+2 como los valores que toma una función f(x) en ordenadas enteras x = n −  1, n, n+1 y n+2,

pn=f(n)n.

Además, supóngase que las tangentes en los puntos finales se definen como las diferencias centradas de los puntos adyacentes:

mn=f(n+1)f(n1)2=pn+1pn12n.

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=x=suelo(x),
u=xn=xx,
0u<1,

donde x 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[10]

f(x)=f(n+u)=CINTu(pn1,pn,pn+1,pn+2)=[1uu2u3][010012012015221212323212][pn1pnpn+1pn+2]=12[u3+2u2u3u35u2+23u3+4u2+uu3u2]T[pn1pnpn+1pn+2]=12[u((2u)u1)u2(3u5)+2u((43u)u+1)u2(u1)]T[pn1pnpn+1pn+2]=12((u2(2u)u)pn1+(u2(3u5)+2)pn+(u2(43u)+u)pn+1+u2(u1)pn+2)=12((u3+2u2u)pn1+(3u35u2+2)pn+(3u3+4u2+u)pn+1+(u3u2)pn+2)=12((pn1+3pn3pn+1+pn+2)u3+(2pn15pn+4pn+1pn+2)u2+(pn1+pn+1)u+2pn)=12(((pn1+3pn3pn+1+pn+2)u+(2pn15pn+4pn+1pn+2))u+(pn1+pn+1))u+pn,

donde 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 CINTu dieciséis veces con la misma u y diferente p.

Véase también

Referencias

Plantilla:Listaref

Enlaces externos

Plantilla:Control de autoridades

  1. Plantilla:Cite book
  2. Plantilla:Cite journal
  3. Plantilla:Cite journal
  4. Plantilla:Cite web
  5. Plantilla:Cite web
  6. La interpolación cúbica no es única: este modelo que utiliza una spline de Catmull-Rom y polinomios de base de Lagrange pasa por los cuatro puntos. Nota: Si el punto negro está a la izquierda del punto amarillo, la distancia horizontal amarilla es negativa; si el punto negro está a la derecha del punto verde, la distancia horizontal verde es negativa.
  7. Plantilla:Citation
  8. N. Dyn, M. S. Floater, and K. Hormann. Four-point curve subdivision based on iterated chordal and centripetal parameterizations. Computer Aided Geometric Design, 26(3):279–286, 2009.
  9. P. J. Barry and R. N. Goldman. A recursive evaluation algorithm for a class of Catmull-Rom splines. SIGGRAPH Computer Graphics, 22(4):199–204, 1988.
  10. Two hierarchies of spline interpolations. Practical algorithms for multivariate higher order splines.