
En matemáticas , una spline es una función definida por partes mediante polinomios . En problemas de interpolación , la interpolación mediante splines suele preferirse a la interpolación polinómica porque produce resultados similares, incluso con polinomios de bajo grado , evitando el fenómeno de Runge para grados superiores.
En las subdisciplinas de diseño asistido por ordenador y gráficos por ordenador , el término spline se refiere con mayor frecuencia a una curva polinómica por partes ( paramétrica ) . Las splines son curvas populares en estas subdisciplinas debido a la simplicidad de su construcción, la facilidad y precisión de su evaluación, y su capacidad para aproximar formas complejas mediante el ajuste de curvas y el diseño interactivo de curvas.
El término spline proviene de los dispositivos flexibles de spline que utilizaban los constructores navales y los dibujantes para trazar formas suaves.
Introducción
El término "spline" se utiliza para referirse a una amplia clase de funciones empleadas en aplicaciones que requieren interpolación y/o suavizado de datos. Los datos pueden ser unidimensionales o multidimensionales. Las funciones spline para interpolación se determinan normalmente como minimizadores de medidas de rugosidad adecuadas (por ejemplo, la curvatura cuadrática integral) sujetas a las restricciones de interpolación. Las splines de suavizado pueden considerarse generalizaciones de las splines de interpolación, donde las funciones se determinan para minimizar una combinación ponderada del error de aproximación cuadrático medio sobre los datos observados y la medida de rugosidad. Para varias definiciones significativas de la medida de rugosidad, se observa que las funciones spline son de dimensión finita, lo que constituye la razón principal de su utilidad en cálculos y representaciones. En el resto de esta sección, nos centraremos exclusivamente en las splines polinómicas unidimensionales y utilizaremos el término "spline" en este sentido restringido.
Historia
Según Gerald Farin, Nikolai Lobachevsky, de la Universidad de Kazán en Rusia, exploró las B-splines ya en el siglo XIX. [ 1 ]
Antes de la llegada de las computadoras, los cálculos numéricos se realizaban a mano. Si bien se utilizaban funciones definidas por partes, como la función signo o la función escalón , generalmente se preferían los polinomios por su facilidad de manejo. Con la llegada de las computadoras, las splines cobraron importancia. Inicialmente se utilizaron como sustituto de los polinomios en la interpolación, y posteriormente como herramienta para construir formas suaves y flexibles en gráficos por computadora.
Se acepta comúnmente que la primera referencia matemática a las splines es el artículo de Schoenberg de 1946 , que probablemente sea el primer lugar donde se usa la palabra "spline" en relación con la aproximación polinómica suave por partes. Sin embargo, las ideas tienen sus raíces en las industrias aeronáutica y naval. En el prólogo de (Bartels et al., 1987), Robin Forrest describe el " lofting ", una técnica utilizada en la industria aeronáutica británica durante la Segunda Guerra Mundial para construir plantillas de aviones pasando finas tiras de madera (llamadas " splines ") a través de puntos trazados en el suelo de un gran taller de diseño, una técnica tomada del diseño de cascos de barcos. Durante años, la práctica del diseño naval había empleado modelos para diseñar a pequeña escala. El diseño exitoso se trazaba luego en papel cuadriculado y los puntos clave del trazado se volvían a trazar en papel cuadriculado más grande a tamaño real. Las finas tiras de madera proporcionaban una interpolación de los puntos clave en curvas suaves. Las tiras se mantendrían en su lugar en puntos discretos (llamados "patos" por Forrest; Schoenberg usó "perros" o "ratas") y entre estos puntos adoptarían formas de mínima energía de deformación. Según Forrest, un posible impulso para un modelo matemático de este proceso fue la pérdida potencial de los componentes críticos de diseño de toda la aeronave si el loft fuera alcanzado por una bomba enemiga. Esto dio origen al "lofting cónico", que usaba secciones cónicas para modelar la posición de la curva entre los patos. El lofting cónico fue reemplazado por lo que llamaríamos splines a principios de la década de 1960, basado en el trabajo de JC Ferguson en Boeing y (un poco más tarde) por Malcolm A. Sabin en British Aircraft Corporation .
La palabra "spline" era originalmente una palabra del dialecto de Anglia Oriental .
El uso de splines para modelar carrocerías de automóviles parece tener varios orígenes independientes. Se atribuye el mérito a de Casteljau en Citroën , Pierre Bézier en Renault , y Birkhoff , Garabedian y de Boor en General Motors (véase Birkhoff y de Boor, 1965), todos por trabajos realizados a principios de la década de 1960 o finales de la de 1950. Al menos uno de los artículos de de Casteljau se publicó, aunque no ampliamente, en 1959. El trabajo de De Boor en General Motors dio lugar a la publicación de varios artículos a principios de la década de 1960, incluyendo algunos de los trabajos fundamentales sobre B-splines .
También se trabajaba en Pratt & Whitney Aircraft, donde colaboraron dos de los autores de (Ahlberg et al., 1967) —el primer libro que trató el tema de las splines— y en el David Taylor Model Basin , de Feodor Theilheimer. El trabajo realizado en General Motors se detalla con precisión en (Birkhoff, 1990) y (Young, 1997). Davis (1997) resume parte de este material.
Definición
Comenzamos limitando nuestra discusión a polinomios en una variable . En este caso, una spline es una función polinómica por partes . Esta función, llamémosla S , toma valores de un intervalo [ a , b ] y los transforma enel conjunto de los números reales , Queremos que S esté definido por partes. Para lograr esto, sea el intervalo [ a , b ] cubierto por k subintervalos ordenados y disjuntos ,
En cada una de estas k "piezas" de [ a , b ] , queremos definir un polinomio, llamémoslo P i . En el i -ésimo subintervalo de [ a , b ] , S se define por P i ,
Los k + 1 puntos t i dados se denominan nodos . El vector t = ( t 0 , …, t k ) se denomina vector de nodos para la spline. Si los nodos están distribuidos equidistantemente en el intervalo [ a , b ] decimos que la spline es uniforme ; de lo contrario, decimos que es no uniforme .
Si cada una de las partes polinómicas P i tiene un grado como máximo n , entonces se dice que la spline es de grado ≤ n (o de orden n + 1 ).
Sien un entorno de t i , entonces se dice que la spline es de suavidad (al menos)en t i . Es decir, en t i los dos segmentos polinómicos P i –1 y P i comparten valores de derivada comunes desde la derivada de orden 0 (el valor de la función) hasta la derivada de orden r i (en otras palabras, los dos segmentos polinómicos adyacentes se conectan con una pérdida de suavidad de como máximo n – r i )
Un vector r = ( r 1 , …, r k –1 ) tal que la spline tenga suavidaden t i para i = 1, …, k – 1 se denomina vector de suavidad para la spline.
Dado un vector de nodos t , un grado n y un vector de suavidad r para t , se puede considerar el conjunto de todas las splines de grado ≤ n que tienen vector de nodos t y vector de suavidad r . Equipado con la operación de sumar dos funciones (suma punto a punto) y tomar múltiplos reales de funciones, este conjunto se convierte en un espacio vectorial real. Este espacio de splines se denota comúnmente por
En el estudio matemático de las splines polinómicas, la pregunta de qué sucede cuando dos nodos, digamos t i y t i +1 , se aproximan entre sí y se vuelven coincidentes tiene una respuesta sencilla. La parte polinómica P i ( t ) desaparece, y las partes P i −1 ( t ) y P i +1 ( t ) se unen con la suma de las pérdidas de suavidad para t i y t i +1 . Es decir, donde j i = n – r i . Esto conduce a una comprensión más general de un vector de nudos. La pérdida de continuidad en cualquier punto puede considerarse como el resultado de múltiples nudos ubicados en ese punto, y un tipo de spline puede caracterizarse completamente por su grado n y su vector de nudos extendido.
donde t i se repite j i veces para i = 1, …, k – 1 .
Una curva paramétrica en el intervalo [ a , b ] Una curva es una curva spline si tanto X como Y son funciones spline del mismo grado con los mismos vectores de nodos extendidos en ese intervalo.
Ejemplos
Supongamos que el intervalo [ a , b ] es [0, 3] y los subintervalos son [0, 1], [1, 2], [2, 3] . Supongamos que los segmentos polinómicos deben ser de grado 2, y los segmentos en [0, 1] y [1, 2] deben unirse en valor y primera derivada (en t = 1 ) mientras que los segmentos en [1, 2] y [2, 3] se unen simplemente en valor (en t = 2 ). Esto definiría un tipo de spline S ( t ) para el cual
sería un miembro de ese tipo, y también
sería un miembro de ese tipo. (Nota: aunque la parte polinómica 2 t no es cuadrática, el resultado se sigue llamando spline cuadrático. Esto demuestra que el grado de un spline es el grado máximo de sus partes polinómicas). El vector de nodos extendido para este tipo de spline sería (0, 1, 2, 2, 3) .
La spline más simple tiene grado 0. También se la llama función escalón . La siguiente spline más simple tiene grado 1. También se la llama spline lineal . Una spline lineal cerrada (es decir, el primer nodo y el último son iguales) en el plano es simplemente un polígono .
Un spline común es el spline cúbico natural . Un spline cúbico tiene grado 3 con continuidad C² , es decir , los valores y las primeras y segundas derivadas son continuas. Natural significa que las segundas derivadas de los polinomios del spline son cero en los extremos del intervalo de interpolación.
Por lo tanto, la gráfica de la spline es una línea recta fuera del intervalo, pero sigue siendo suave.
Notas
Cabe preguntarse qué significado tienen más de n nudos múltiples en un vector de nudos, ya que esto daría lugar a continuidades como en la ubicación de esta alta multiplicidad. Por convención, cualquier situación de este tipo indica una discontinuidad simple entre las dos partes polinómicas adyacentes. Esto significa que si un nudo t i aparece más de n + 1 veces en un vector de nudos extendido, todas las instancias que excedan la ( n + 1) th pueden eliminarse sin cambiar el carácter de la spline, ya que todas las multiplicidades n + 1 , n + 2 , n + 3 , etc. tienen el mismo significado. Se suele asumir que cualquier vector de nudos que defina cualquier tipo de spline se ha eliminado de esta manera.
El tipo de spline clásico de grado n utilizado en el análisis numérico tiene continuidad. lo que significa que cada dos partes polinómicas adyacentes coinciden en su valor y en sus primeras n − 1 derivadas en cada nodo. La spline matemática que mejor modela la spline plana es una spline cúbica ( n = 3 ), dos veces continuamente diferenciable ( C2 ) , spline natural, que es una spline de este tipo clásico con condiciones adicionales impuestas en los puntos extremos a y b .
Otro tipo de spline que se usa mucho en gráficos, por ejemplo en programas de dibujo como Adobe Illustrator de Adobe Systems , tiene piezas que son cúbicas pero tiene continuidad solo en la mayoría de los casos. Este tipo de spline también se utiliza en PostScript , así como en la definición de algunas fuentes tipográficas informáticas.
Muchos sistemas de diseño asistido por ordenador (CAD) diseñados para gráficos y animación de alta gama utilizan vectores de nodos extendidos, como por ejemplo Autodesk Maya . Estos sistemas suelen emplear un concepto extendido de spline conocido como NURBS ( spline B racional no uniforme ).
Si se dispone de datos muestreados de una función o un objeto físico, la interpolación spline es un método para crear una curva spline que se aproxime a esos datos.
Expresión general para una spline cúbica interpoladora C2
La expresión general para la i -ésima spline cúbica interpoladora C2 en un punto x con la condición natural se puede encontrar utilizando la fórmula
dónde
- son los valores de la segunda derivada en el i -ésimo nudo.
- son los valores de la función en el i -ésimo nudo.
Representaciones y nombres
Para un intervalo dado [ a , b ] y un vector de nodos extendido dado en ese intervalo, las splines de grado n forman un espacio vectorial . En resumen, esto significa que sumar dos splines cualesquiera de un tipo dado produce una spline de ese tipo, y multiplicar una spline de un tipo dado por cualquier constante produce una spline de ese tipo. La dimensión del espacio que contiene todas las splines de un tipo determinado se puede contar a partir del vector de nodos extendido:
La dimensión es igual a la suma del grado más las multiplicidades.
Si a un tipo de spline se le imponen condiciones lineales adicionales, el spline resultante pertenecerá a un subespacio. Por ejemplo, el espacio de todos los splines cúbicos naturales es un subespacio del espacio de todos los splines cúbicos C² .
La literatura sobre splines está repleta de nombres para tipos especiales de splines. Estos nombres se han asociado con:
- Las opciones elegidas para representar la curva spline, por ejemplo:
- utilizando funciones base para toda la spline (lo que nos da el nombre de B-splines )
- utilizando polinomios de Bernstein , empleados por Pierre Bézier, para representar cada parte del polinomio (lo que nos da el nombre de splines de Bézier ).
- Las elecciones realizadas al formar el vector de nudo extendido, por ejemplo:
- utilizando nudos simples para la continuidad C n –1 y espaciando estos nudos uniformemente en [ a , b ] (lo que nos da splines uniformes )
- utilizando nudos sin restricción de espaciado (lo que nos da splines no uniformes )
- Cualquier condición especial impuesta a la curva, por ejemplo:
- imponiendo derivadas segundas nulas en a y b (lo que nos da splines naturales )
- requiriendo que los valores de datos dados estén en la spline (lo que nos da splines de interpolación )
A menudo se elegía un nombre especial para un tipo de spline que satisfacía dos o más de los puntos principales mencionados anteriormente. Por ejemplo, el spline de Hermite es un spline que se expresa mediante polinomios de Hermite para representar cada una de las partes polinómicas individuales. Estos se utilizan con mayor frecuencia con n = 3 ; es decir, como splines cúbicos de Hermite . En este grado , además, pueden elegirse para que sean solo tangente-continuos ( C1 ); lo que implica que todos los nodos interiores son dobles. Se han inventado varios métodos para ajustar dichos splines a puntos de datos dados; es decir, para convertirlos en splines de interpolación, y para ello estimando valores de tangente plausibles donde se encuentran cada par de partes polinómicas (dando lugar a los splines cardinales , los splines de Catmull-Rom y los splines de Kochanek-Bartels , según el método utilizado).
Para cada una de las representaciones, se debe encontrar algún medio de evaluación para que los valores de la spline se puedan generar bajo demanda. Para aquellas representaciones que expresan cada parte polinómica individual P i ( t ) en términos de alguna base para los polinomios de grado n , esto es conceptualmente sencillo:
- Para un valor dado del argumento t , encuentre el intervalo en el que se encuentra.
- Consulta la base polinómica elegida para ese intervalo.
- Halla el valor de cada polinomio base en t :
- Busque los coeficientes de la combinación lineal de esos polinomios base que dan la función spline en ese intervalo c 0 , ..., c k –2
- Suma esa combinación lineal de valores de polinomios base para obtener el valor de la spline en t :
Sin embargo, los pasos de evaluación y suma suelen combinarse de forma ingeniosa. Por ejemplo, los polinomios de Bernstein constituyen la base de polinomios que pueden evaluarse eficientemente en combinaciones lineales mediante relaciones de recurrencia especiales. Esta es la esencia del algoritmo de De Casteljau , presente en las curvas de Bézier y las splines de Bézier .
Sin embargo, para una representación que define una spline como una combinación lineal de splines base, se necesita algo más sofisticado. El algoritmo de De Boor es un método eficiente para evaluar B-splines .
Referencias
- ↑ Farin, GE (2002). Curvas y superficies para CAGD: una guía práctica . Morgan Kaufmann. pág. 119.
- Ferguson, James C, Interpolación de curvas multivariables, J. ACM, vol. 11, n.º 2, págs. 221–228, abril de 1964.
- Ahlberg, Nielson y Walsh, La teoría de las splines y sus aplicaciones, 1967.
- Birkhoff, Dinámica de fluidos, cálculos de reactores y representación de superficies, en: Steve Nash (ed.), Una historia de la computación científica , 1990.
- Bartels, Beatty y Barsky, Introducción a las splines para su uso en gráficos por computadora y modelado geométrico, 1987.
- Birkhoff y de Boor, Interpolación y aproximación polinómica por partes, en: HL Garabedian (ed.), Actas del Simposio de General Motors de 1964, págs. 164-190. Elsevier, Nueva York y Ámsterdam, 1965.
- Charles K. Chui, Splines multivariados , SIAM, ISBN 978-0-898712261 (1987).
- Davis, B-splines y diseño geométrico , SIAM News, vol. 29, n.º 5, 1996.
- Epperson, Historia de las splines , NA Digest, vol. 98, n.º 26, 1998.
- Ming-Jun Lai y Larry L. Schumaker, Spline Functions on Triangulations , Cambridge Univ. Press, ISBN 978-0-521-87592-9 (2007).
- Stoer & Bulirsch, Introducción al análisis numérico. Springer-Verlag . pag. 93-106. ISBN 0387904204
- Schoenberg, Contribuciones al problema de la aproximación de datos equidistantes mediante funciones analíticas, Quart. Appl. Math., vol. 4, pp. 45–99 y 112–141, 1946.
- Young, Garrett Birkhoff y las matemáticas aplicadas, Notices of the AMS, vol. 44, n.º 11, págs. 1446–1449, 1997.
- Chapra, Canale, Métodos numéricos para ingenieros, 5ª edición.
- Schumaker, Larry L., Funciones Spline: Teoría básica, John Wiley, ISBN 0-47176475-2 (1981).
- Schumaker, Larry, Funciones Spline: Métodos Computacionales, SIAM, ISBN 978-1-61197-389-1 (2015).
- Schumaker, Larry, Funciones Spline: Más modelos computacionales, SIAM, ISBN 978-1-61197-817-9 (2024).
Enlaces externos
Servicios públicos en línea
- Introducción interactiva a las splines (HTML5) , ibiblio.org
- Curvas spline simétricas , una animación de Theodore Gray , The Wolfram Demonstrations Project , 2007.
Código informático
- pspline, czspline, ezspline : la revisión actual (2025) se encuentra en un repositorio privado ; esta revisión de 2019 todavía está disponible sin necesidad de solicitar acceso.
- Sisl: Biblioteca C de código abierto para NURBS , SINTEF
- Interpolación de splines cúbicos en C++ : una biblioteca de solo encabezados que admite splines cúbicos y de Hermite cúbicos.
- Splines (matemáticas)
- Interpolación