stringtranslate.com

Spline (matemáticas)

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

En matemáticas , un spline es una función definida por partes mediante polinomios . En problemas de interpolación , a menudo se prefiere la interpolación spline a la interpolación polinomial porque produce resultados similares, incluso cuando se utilizan polinomios de bajo grado , evitando al mismo tiempo el fenómeno de Runge para grados más altos.

En los subcampos de informática del diseño asistido por computadora y los gráficos por computadora , el término spline se refiere con mayor 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 aproximar formas complejas mediante el ajuste de curvas y el diseño de curvas interactivo.

El término spline proviene de los dispositivos 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 normalmente se determinan como minimizadores de medidas adecuadas de rugosidad (por ejemplo, curvatura cuadrática integral) sujetas a las restricciones de interpolación. Los splines de suavizado pueden verse como generalizaciones de los splines de interpolación donde las funciones se determinan para minimizar una combinación ponderada del error de aproximación cuadrático promedio sobre los datos observados y la medida de rugosidad. Para una serie de definiciones significativas de la medida de rugosidad, se encuentra que las funciones spline son de dimensión finita por naturaleza, lo cual es la razón principal de su utilidad en los cálculos y la representación. Durante el resto de esta sección, nos centraremos exclusivamente en splines polinomiales unidimensionales y utilizaremos el término "spline" en este sentido restringido.

Historia

Según Gerald Farin, los B-splines fueron explorados 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 era más fácil trabajar con ellos. Con la llegada de las computadoras, los splines han ganado importancia. Primero se utilizaron como reemplazo de los polinomios en la interpolación y luego como herramienta para construir formas suaves y flexibles en gráficos por computadora.

Se acepta comúnmente que la primera referencia matemática a los splines es el artículo de Schoenberg de 1946 , que es probablemente el primer lugar donde se utiliza la palabra "spline" en relación con una aproximación polinómica suave y por partes. Sin embargo, las ideas tienen sus raíces en la industria 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 finas tiras de madera (llamadas " splines ") a través de puntos. colocado en el suelo de un gran loft 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 en pequeño. Luego, el diseño exitoso se trazó en papel cuadriculado y los puntos clave del diagrama se volvieron a trazar en papel cuadriculado más grande a tamaño completo. Las finas tiras 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 posible pérdida de los componentes críticos de diseño de un avión completo en caso de que el loft fuera alcanzado por una bomba enemiga. Esto dio lugar al "lofting cónico", que utilizaba 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, basándose en el trabajo de JC Ferguson en Boeing y (algo más tarde) de MA Sabin en British Aircraft Corporation .

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

El uso de splines para modelar carrocerías de automóviles parece tener varios comienzos independientes. El crédito se reclama en nombre de 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 los años sesenta o finales de los cincuenta. 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 resultó en la publicación de varios artículos a principios de la década de 1960, incluidos algunos de los trabajos fundamentales sobre B-splines .

También se estaba trabajando en Pratt & Whitney Aircraft, donde trabajaron dos de los autores de (Ahlberg et al., 1967), el primer tratamiento de splines en un libro, 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, un spline es una función polinómica por partes . Esta función, llámela S , toma valores de un intervalo [ a , b ] y los asigna al conjunto de números reales . Queremos que S se defina por partes. Para lograr esto, deje 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, llámelo P i . En el i ésimo subintervalo de [ a , b ] , S está definido por P i ,

Los k + 1 puntos ti dados se llaman nudos . El vector t = ( t 0 , …, t k ) se llama vector nudo para el spline. Si los nudos están distribuidos equidistantemente en el intervalo [ a , b ] decimos que el spline es uniforme , en caso contrario decimos que no es uniforme .

Si cada una de las piezas polinómicas P i tiene como máximo un grado n , entonces se dice que el spline es de grado n (o de orden n + 1 ).

Si está en una vecindad de ti , entonces se dice que la spline tiene suavidad (al menos) en ti . Es decir, en t i los dos polinomios 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, los dos polinomios adyacentes conectar con pérdida de suavidad de como máximo nr i )

Un vector r = ( r 1 ,…, rk –1 ) tal que la spline tiene suavidad en ti para i = 1,…, k – 1 se llama vector de suavidad para la 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 spline se denota comúnmente por

En el estudio matemático de los splines polinomiales, la pregunta de qué sucede cuando dos nudos, digamos ti y ti +1 , se acercan entre sí 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 ti y ti +1 . Es decir, donde j i = nr i . Esto conduce a una comprensión más general de un vector de nudos. Se puede considerar que la pérdida de continuidad en cualquier punto es el resultado de múltiples nudos ubicados en ese punto, y un tipo spline se puede caracterizar 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 piezas del polinomio deben ser de grado 2, y las piezas de [0, 1] y [1, 2] deben unirse en valor y primera derivada (en t = 1 ), mientras que las piezas de [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: si bien la pieza polinómica 2 t no es cuadrática, el resultado aún se denomina spline cuadrático. Esto demuestra que el grado de una spline es el grado máximo de sus partes polinómicas). El vector de nudo extendido para este tipo de spline sería ser (0, 1, 2, 2, 3) .

El spline más simple tiene grado 0. También se le llama función escalonada . El siguiente spline más simple tiene grado 1. También se le llama spline lineal . Un spline lineal cerrado (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 la primera y segunda derivada son continuos. Natural significa que las segundas derivadas de los polinomios spline son cero en los puntos finales del intervalo de interpolación.

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

Algoritmo para calcular splines cúbicos naturales

Los splines cúbicos tienen la forma

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

Estos deben satisfacer:

Definamos un spline cúbico S como una tupla de 5 ( 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: establece splines que se componen de n 5 tuplas.

  1. Cree una nueva matriz a de tamaño n + 1 y para i = 0,…, n set
  2. Cree nuevas matrices b y d , cada una de tamaño n .
  3. Cree una nueva matriz h de tamaño n y para i = 0,…, n – 1 conjunto
  4. Cree una nueva matriz α de tamaño n y para i = 1,…, n – 1 conjunto
  5. Cree 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énelo con n splines S .
  11. Para i = 0,…, n – 1 establezca lo siguiente:
  12. Producciónoutput_set

Notas

Podría preguntarse qué significado tienen más de n nudos múltiples en un vector de nudos, ya que esto conduciría 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 piezas polinómicas adyacentes. Esto significa que si un nudo ti aparece más de n + 1 veces en un vector de nudo extendido, todas las instancias del mismo que excedan el ( n + 1) ésimo se pueden eliminar sin cambiar el carácter de la spline, ya que todas las multiplicidades n + 1 , n + 2 , n + 3 , etc. tienen el mismo significado. Comúnmente se supone que cualquier vector de nudo que defina cualquier tipo de spline ha sido seleccionado de esta manera.

El tipo spline clásico de grado n utilizado en el análisis numérico tiene continuidad, lo que significa que cada dos piezas polinómicas adyacentes se encuentran en su valor y las primeras n - 1 derivadas en cada nudo. El spline matemático que modela más fielmente 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 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 como máximo. Este tipo de spline también se usa 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 disponibles datos muestreados de una función o un objeto físico, la interpolación spline es un método para crear una spline que se aproxima a esos datos.

Expresión general para unC2spline cúbico de interpolación

La expresión general para el i -ésimo C 2 spline cúbico de interpolación en un punto x con la condición natural se puede encontrar usando 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 sumar dos splines cualesquiera de un tipo determinado produce un spline de ese tipo determinado, y multiplicar un spline de un tipo determinado por cualquier constante produce un spline de ese tipo determinado. La dimensión del espacio que contiene todas las splines de un determinado tipo 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 a un tipo de spline se le imponen condiciones lineales adicionales, entonces 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 elegía un nombre especial para un tipo de spline que satisfacía 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 piezas polinomiales individuales. Estos se utilizan con mayor frecuencia con n = 3 ; es decir, como splines Cubic Hermite . En este grado, se pueden elegir además que sean sólo 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 determinados; es decir, convertirlos en splines de interpolación, y hacerlo estimando valores tangentes plausibles donde se encuentran cada dos piezas polinómicas (dandonos 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 puedan producirse bajo demanda. Para aquellas representaciones que expresan cada pieza polinomial individual 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 a menudo se combinan de manera 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. Ésta es la esencia del algoritmo de De Casteljau , que aparece en las curvas de Bézier y en los splines de Bézier ).

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


Referencias

enlaces externos

Teoría

Función Excel

Utilidades en línea

Codigo de computadora

  1. ^ Farín, GE (2002). Curvas y superficies para CAGD: una guía práctica . Morgan Kaufman. pag. 119.