En matemáticas, la interpolación lineal es un método de ajuste de curvas que utiliza polinomios lineales para construir nuevos puntos de datos dentro del rango de un conjunto discreto de puntos de datos conocidos.
Si los dos puntos conocidos se dan por las coordenadas y , el interpolador lineal es la línea recta entre estos puntos. Para un valor en el intervalo , el valor a lo largo de la línea recta se da a partir de la ecuación de pendientes que se puede derivar geométricamente de la figura de la derecha. Es un caso especial de interpolación polinómica con .
Resolviendo esta ecuación para , que es el valor desconocido en , se obtiene que es la fórmula para la interpolación lineal en el intervalo . Fuera de este intervalo, la fórmula es idéntica a la extrapolación lineal .
Esta fórmula también se puede entender como un promedio ponderado. Los pesos están inversamente relacionados con la distancia desde los puntos finales hasta el punto desconocido; el punto más cercano tiene más influencia que el punto más lejano. Por lo tanto, los pesos son y , que son distancias normalizadas entre el punto desconocido y cada uno de los puntos finales. Como estos suman 1, se obtiene la fórmula para la interpolación lineal dada anteriormente.
La interpolación lineal sobre un conjunto de puntos de datos ( x 0 , y 0 ), ( x 1 , y 1 ), ..., ( x n , y n ) se define como lineal por partes , resultante de la concatenación de interpoladores de segmentos lineales entre cada par de puntos de datos. Esto da como resultado una curva continua , con una derivada discontinua (en general), por lo tanto de clase de diferenciabilidad .
La interpolación lineal se utiliza a menudo para aproximar un valor de alguna función f utilizando dos valores conocidos de esa función en otros puntos. El error de esta aproximación se define como donde p denota el polinomio de interpolación lineal definido anteriormente:
Se puede demostrar utilizando el teorema de Rolle que si f tiene una segunda derivada continua, entonces el error está acotado por
Es decir, la aproximación entre dos puntos de una función dada empeora con la segunda derivada de la función que se aproxima. Esto también es intuitivamente correcto: cuanto más "curvilínea" es la función, peores son las aproximaciones realizadas con interpolación lineal simple.
La interpolación lineal se ha utilizado desde la antigüedad para rellenar los huecos de las tablas. Supongamos que tenemos una tabla que enumera la población de algún país en 1970, 1980, 1990 y 2000, y que queremos estimar la población en 1994. La interpolación lineal es una forma sencilla de hacerlo. Se cree que se utilizó en el Imperio seléucida (últimos tres siglos a. C.) y por el astrónomo y matemático griego Hiparco (siglo II a. C.). Se puede encontrar una descripción de la interpolación lineal en el antiguo texto matemático chino llamado Los nueve capítulos sobre el arte matemático (九章算術), [1] que data del 200 a. C. al 100 d. C. y en el Almagesto (siglo II d. C.) de Ptolomeo .
La operación básica de interpolación lineal entre dos valores se utiliza habitualmente en gráficos por ordenador . En la jerga de ese campo, a veces se la denomina lerp (de interpolación lineal ) . El término se puede utilizar como verbo o sustantivo para la operación. Por ejemplo, " el algoritmo de Bresenham realiza lerps de forma incremental entre los dos puntos finales de la línea".
Las operaciones Lerp están integradas en el hardware de todos los procesadores gráficos de computadora modernos. A menudo se utilizan como bloques de construcción para operaciones más complejas: por ejemplo, una interpolación bilineal se puede lograr en tres lerps. Debido a que esta operación es económica, también es una buena forma de implementar tablas de búsqueda precisas con búsqueda rápida para funciones fluidas sin tener demasiadas entradas de tabla.
Si una función C 0 es insuficiente, por ejemplo si se sabe que el proceso que ha producido los puntos de datos es más suave que C 0 , es común reemplazar la interpolación lineal con interpolación spline o, en algunos casos, interpolación polinomial .
La interpolación lineal que se describe aquí es para puntos de datos en una dimensión espacial. Para dos dimensiones espaciales, la extensión de la interpolación lineal se llama interpolación bilineal y, en tres dimensiones, interpolación trilineal . Sin embargo, observe que estos interpoladores ya no son funciones lineales de las coordenadas espaciales, sino productos de funciones lineales; esto se ilustra mediante el ejemplo claramente no lineal de interpolación bilineal en la figura siguiente. Se pueden aplicar otras extensiones de interpolación lineal a otros tipos de mallas , como mallas triangulares y tetraédricas, incluidas las superficies de Bézier . Estas pueden definirse como funciones lineales por partes de dimensiones superiores (consulte la segunda figura siguiente).
Muchas bibliotecas y lenguajes de sombreado tienen una función auxiliar "lerp" (en GLSL conocida como mix ), que devuelve una interpolación entre dos entradas (v0, v1)
para un parámetro t
en el intervalo unitario cerrado [0, 1]. Las firmas entre funciones lerp se implementan de diversas formas tanto en las formas (v0, v1, t)
como (t, v0, v1)
.
// Método impreciso, que no garantiza v = v1 cuando t = 1, debido a un error aritmético de punto flotante.// Este método es monótono. Esta forma se puede utilizar cuando el hardware tiene una instrucción de multiplicación-suma fusionada nativa.flotador lerp ( flotante v0 , flotador v1 , flotador t ) { devuelve v0 + t * ( v1 - v0 ); }// Método preciso, que garantiza v = v1 cuando t = 1. Este método es monótono solo cuando v0 * v1 < 0.// La comparación entre los mismos valores podría no producir el mismo valorflotador lerp ( flotante v0 , flotador v1 , flotador t ) { devolver ( 1 - t ) * v0 + t * v1 ; }
Esta función lerp se utiliza comúnmente para la combinación alfa (el parámetro " t " es el "valor alfa"), y la fórmula se puede extender para combinar múltiples componentes de un vector (como los ejes espaciales x , y , z o los componentes de color r , g , b ) en paralelo.