stringtranslate.com

Spline (matemáticas)

Los nudos simples en 1/3 y 2/3 establecen una spline de tres polinomios cúbicos que cumplen con la continuidad paramétrica C 2 . Los nudos triples en ambos extremos del intervalo garantizan que la curva interpole los puntos finales.

En matemáticas , una spline es una función definida por partes mediante polinomios . En problemas de interpolación , la interpolación spline suele preferirse a la interpolación polinómica porque produce resultados similares, incluso cuando se utilizan polinomios de bajo grado , y se evita el fenómeno de Runge para grados superiores.

En los subcampos de la informática de diseño asistido por ordenador y gráficos por ordenador , el término spline se refiere con más frecuencia a una curva polinómica ( paramétrica ) por partes . Las splines son curvas populares en estos subcampos debido a la simplicidad de su construcción, su facilidad y precisión de evaluación y su capacidad para aproximarse a formas complejas a través del ajuste de curvas y el diseño de curvas interactivo.

El término spline proviene de los dispositivos spline flexibles utilizados por los constructores navales y dibujantes para dibujar formas suaves.

Introducción

El término "spline" se utiliza para referirse a una amplia clase de funciones que se utilizan 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 los minimizadores de medidas adecuadas de rugosidad (por ejemplo, curvatura cuadrática integral) sujetas a las restricciones de interpolación. Las splines de suavizado pueden verse como 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 una serie de definiciones significativas de la medida de rugosidad, se ha descubierto que las funciones spline son de naturaleza dimensional finita, que es la razón principal de su utilidad en los cálculos y la representación. En el resto de esta sección, nos centraremos por completo en splines polinómicos unidimensionales y utilizaremos el término "spline" en este sentido restringido.

Historia

Según Gerald Farin, las B-splines fueron exploradas ya en el siglo XIX por Nikolai Lobachevsky en la Universidad de Kazán en Rusia. [1]

Antes de que se utilizaran las computadoras, los cálculos numéricos se hacían a mano. Aunque se utilizaban funciones definidas por partes, como la función de signo o la función de paso , generalmente se preferían los polinomios porque eran más fáciles de trabajar. Con la llegada de las computadoras, las splines han ganado importancia. Primero se utilizaron como reemplazo de los polinomios en la interpolación, luego como una herramienta para construir formas suaves y flexibles en gráficos de computadora.

Se acepta comúnmente que la primera referencia matemática a los splines es el artículo de 1946 de Schoenberg , que es probablemente el primer lugar en el que se utiliza 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 de construcción 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 para aviones pasando tiras finas de madera (llamadas " splines ") a través de puntos dispuestos en el suelo de un gran loft de diseño, una técnica tomada prestada del diseño de cascos de barcos. Durante años, la práctica del diseño de barcos había empleado modelos para diseñar en lo pequeño. El diseño exitoso se trazó luego en papel cuadriculado y los puntos clave del gráfico se volvieron a trazar en papel cuadriculado más grande a tamaño completo. Las tiras finas de madera proporcionaron 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 asumirían formas de energía de deformación mínima. Según Forrest, un posible impulso para un modelo matemático para este proceso fue la pérdida potencial de los componentes de diseño críticos para un avión completo si el loft fuera alcanzado por una bomba enemiga. Esto dio lugar 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, basados ​​en el trabajo de JC Ferguson en Boeing y (algo más tarde) por MA Sabin en British Aircraft Corporation .

La palabra "spline" era originalmente una palabra del dialecto de East Anglia .

El uso de splines para modelar carrocerías de automóviles parece tener varios comienzos 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 ellos por trabajos realizados a principios de los años 1960 o finales de los años 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 los años 1960, incluidos algunos de los trabajos fundamentales sobre B-splines .

También se estaba trabajando en Pratt & Whitney Aircraft, donde se emplearon dos de los autores de (Ahlberg et al., 1967) —el primer libro que trata de las splines— y el David Taylor Model Basin , de Feodor Theilheimer. El trabajo en General Motors se detalla muy bien 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, llamada S , toma valores de un intervalo [ a , b ] y los asigna al conjunto de números reales . Queremos que S esté definida por partes. Para lograr esto, dejemos que el intervalo [ a , b ] esté 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 se denominan nudos . El vector t = ( t 0 , …, t k ) se denomina vector de nudos para la spline. Si los nudos están distribuidos equidistantemente en el intervalo [ a , b ] decimos que la spline es uniforme ; en caso contrario, decimos que no es uniforme .

Si las partes del polinomio P i tienen cada una un grado como máximo n , entonces se dice que el spline es de grado n (o de orden n + 1 ).

Si está en un entorno de t i , entonces se dice que el spline es de suavidad (al menos) en t i . Es decir, en t i las dos partes polinómicas P i –1 y P i comparten valores derivados comunes desde la derivada de orden 0 (el valor de la función) hasta la derivada de orden r i (en otras palabras, las dos partes polinómicas adyacentes se conectan con pérdida de suavidad de como máximo nr i )

Un vector r = ( r 1 , …, r k –1 ) tal que el spline tiene suavidad en t i para i = 1, …, k – 1 se denomina vector de suavidad para el spline.

Dado un vector de nudo t , un grado n y un vector de suavidad r para t , se puede considerar el conjunto de todos los splines de grado n que tienen un vector de nudo t y un vector de suavidad r . Equipado con la operación de sumar dos funciones (suma puntual) 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 los splines polinómicos, la pregunta de qué sucede cuando dos nudos, digamos t i y t i +1 , se aproximan y se vuelven coincidentes tiene una respuesta fácil. La pieza polinómica P i ( t ) desaparece, y las piezas 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 = nr i . Esto conduce a una comprensión más general de un vector de nudo. 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 nudo extendido .

donde t i se repite j i veces para i = 1, …, k – 1 .

Una curva paramétrica en el intervalo [ a , b ] es una curva spline si tanto X como Y son funciones spline del mismo grado con los mismos vectores de nudos 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 las partes del polinomio deben ser de grado 2, y las partes en [0, 1] y [1, 2] deben unirse en valor y primera derivada (en t = 1 ) mientras que las partes 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 pieza 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 nudo extendido para este tipo de spline sería (0, 1, 2, 2, 3) .

La spline más simple tiene grado 0. También se denomina función escalonada . La siguiente spline más simple tiene grado 1. También se denomina spline lineal . Una spline lineal cerrada (es decir, el primer nudo 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 2 , es decir, los valores y las derivadas primera y segunda son continuos. Natural significa que las derivadas segundas de los polinomios spline son cero en los puntos finales del intervalo de interpolación.

Por lo tanto, la gráfica del spline es una línea recta fuera del intervalo, pero aún así suave.

Algoritmo para calcular splines cúbicos naturales

Las splines cúbicas tienen la forma

Dado un conjunto de coordenadas, deseamos encontrar un conjunto de n splines S i ( x ) para i = 0, …, n – 1 .

Estos deben satisfacer:

Definamos una spline cúbica S como una 5-tupla ( a , b , c , d , x t ) donde a, b, c, d corresponden a coeficientes en la forma mostrada anteriormente y x t es igual a x j .

Algoritmo para calcular splines cúbicos naturales:
Entrada: conjunto de coordenadas C , con | C | = n + 1
Salida: conjunto de splines que se compone de n 5-tuplas.

  1. Crea una nueva matriz a de tamaño n + 1 y para i = 0, …, n establece
  2. Crea nuevas matrices b y d , cada una de tamaño n .
  3. Crea una nueva matriz h de tamaño n y para i = 0, …, n – 1 conjunto
  4. Crea una nueva matriz α de tamaño n y para i = 1, …, n – 1 conjunto
  5. Crea nuevas matrices c, l, μ, z , cada una de tamaño n + 1 .
  6. Colocar
  7. Para i = 1, …, n – 1 establezca lo siguiente:
  8. Colocar
  9. Para j = n – 1, n – 2, …, 0 , establezca lo siguiente:
  10. Crea un nuevo conjunto Splinesy llámalo output_set. Rellénalo con n splines S .
  11. Para i = 0, …, n – 1 establezca lo siguiente:
  12. Producciónoutput_set

Notas

Se podría preguntar qué significado tienen más de n nudos múltiples en un vector de nudos, ya que esto llevaría a continuidades como en la ubicación de esta alta multiplicidad. Por convención, cualquier situación de este tipo indica una simple discontinuidad entre las dos piezas 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 de este que excedan el ( n + 1) ésimo se pueden eliminar sin cambiar el carácter del spline, ya que todas las multiplicidades n + 1 , n + 2 , n + 3 , etc. tienen el mismo significado. Se asume comúnmente que cualquier vector de nudos que defina cualquier tipo de spline ha sido descartado 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 fragmentos polinómicos adyacentes se encuentran en su valor y en las primeras n − 1 derivadas en cada nudo. El spline matemático que modela de forma más precisa el spline plano es un spline natural cúbico ( n = 3 ), dos veces continuamente diferenciable ( C 2 ), que es un spline de este tipo clásico con condiciones adicionales impuestas en los puntos finales a y b .

Otro tipo de spline que se utiliza mucho en gráficos, por ejemplo en programas de dibujo como Adobe Illustrator de Adobe Systems , tiene trozos que son cúbicos pero tiene continuidad solo como máximo. Este tipo de spline también se utiliza en PostScript así como en la definición de algunas fuentes tipográficas de computadora.

Muchos sistemas de diseño asistido por computadora diseñados para gráficos y animaciones de alta gama utilizan vectores de nudos extendidos, por ejemplo, Autodesk Maya . Los sistemas de diseño asistido por computadora a menudo utilizan un concepto extendido de spline conocido como B-spline racional no uniforme (NURBS).

Si hay datos muestreados de una función o un objeto físico disponibles, la interpolación de spline es un enfoque para crear un spline que se aproxime a esos datos.

Expresión general para unado2interpolación de spline cúbico

La expresión general para el i- ésimo spline cúbico interpolador C 2 en un punto x con la condición natural se puede encontrar utilizando la fórmula

dónde

Representaciones y nombres

Para un intervalo dado [ a , b ] y un vector de nudo extendido dado en ese intervalo, los splines de grado n forman un espacio vectorial . Brevemente, esto significa que la suma de dos splines cualesquiera de un tipo dado produce un spline de ese tipo dado, y la multiplicación de un spline de un tipo dado por cualquier constante produce un spline de ese tipo dado. La dimensión del espacio que contiene todos los splines de un tipo determinado se puede contar a partir del vector de nudo extendido:

La dimensión es igual a la suma del grado más las multiplicidades

Si se imponen condiciones lineales adicionales a un tipo de spline, el spline resultante se ubicará en un subespacio. El espacio de todos los splines cúbicos naturales, por ejemplo, es un subespacio del espacio de todos los splines cúbicos C 2 .

La literatura sobre splines está repleta de nombres para tipos especiales de splines. Estos nombres se han asociado con:

A menudo se ha elegido un nombre especial para un tipo de spline que satisface dos o más de los elementos principales anteriores. Por ejemplo, el spline de Hermite es un spline que se expresa utilizando polinomios de Hermite para representar cada una de las partes individuales del polinomio. Estos se utilizan con mayor frecuencia con n = 3 ; es decir, como splines de Hermite cúbicos . En este grado, pueden elegirse adicionalmente para que sean solo tangentes-continuos ( C 1 ); lo que implica que todos los nudos 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 hacerlo estimando valores de tangente plausibles donde se encuentran cada dos partes del polinomio (lo que nos da splines cardinales , splines de Catmull-Rom y splines de Kochanek-Bartels , según el método utilizado).

Para cada una de las representaciones, se deben encontrar algunos medios de evaluación para que los valores del spline se puedan generar a pedido. Para aquellas representaciones que expresan cada fragmento individual del polinomio P i ( t ) en términos de alguna base para los polinomios de grado n , esto es conceptualmente sencillo:

Sin embargo, los pasos de evaluación y suma se combinan a menudo de forma inteligente. Por ejemplo, los polinomios de Bernstein son una base para polinomios que se pueden evaluar en combinaciones lineales de manera eficiente utilizando relaciones de recurrencia especiales. Esta es la esencia del algoritmo de De Casteljau , que aparece en las curvas de Bézier y los splines de Bézier .

Sin embargo, para una representación que define un spline como una combinación lineal de splines de base, se necesita algo más sofisticado. El algoritmo de De Boor es un método eficiente para evaluar B-splines .


Referencias

Enlaces externos

Teoría

Función de Excel

Utilidades en línea

Código de computadora

  1. ^ Farin, GE (2002). Curvas y superficies para CAGD: una guía práctica . Morgan Kaufmann. pág. 119.