Na matemática, Interpolação linear é um método no qual instanciamos um novo conjunto de dados utilizando interpolação polinomial em vista de construir novos pontos de dados no alcance de pontos já conhecidos.
Interpolação linear entre dois pontos
Dados os pontos e , a interpolante linear é a linha entre os dois pontos. Para um valor x no intervalo , o valor y é a linha entre os pontos. Estabelecendo a seguinte relação:
que pode ser derivado geometricamente da figura ao lado. Se trata de um caso especial de interpolação polinomial com n = 1.
Tal que resolvendo para y com x temos a relação geométrica:
cuja formula é a interpolação linear entre o intervalo . Fora do intervalo denominamos de extrapolação linear.
Podemos visualizar a formula como uma média ponderada. Os pesos são inversamente proporcionais à distância entre o ponto de chegada e o ponto desconhecido. O ponto mais perto pondera mais que o ponto distante. Portanto, os pesos são e , que são distâncias normalizadas entre o ponto desconhecido e o ponto de chegada. Dado que a soma é 1:
Interpolação linear como forma de aproximação
Interpolação linear é utilizada como método de aproximação para uma função f utilizando dois pontos dados pela mesma. O erro (ou "resto" ou "resíduo") desta aproximação pode ser dado pela expressão:
Pode ser provada utilizando o teorema de Rolle, que cita que se f tem uma segunda derivada o erro está definido por:
Extensões
Precisão
Se a função C0 é insuficiente, por exemplo, se o processo produziu os pontos de dados é provado ser mais 'liso' que C0, é comum substituir interpolação linear por interpolação de spline[1], ou até mesmo interpolação polinomial em alguns casos.
Note, que esses interpolantes não são mais funções lineares, porem produtos de funções lineares; como ilustrado claramente pelo exemplo de interpolação bilinear nessa figura abaixo. Outros tipos de interpolação podem ser aplicados a malhas triangulares e tetraédricas, incluindo superfícies Bézier.
História
Interpolação linear é utilizada desde a antiguidade para completar "buracos" nas tabelas, geralmente contendo dados astronômicos. Acredita-se que era utilizado por astrônomos Babilônios e matemáticos da Mesopotâmia (300 anos a.C.), e pelos astrônomos da Grécia. Uma descrição da interpolação linear pode ser encontrada no Almagesto (200 anos d.C.) por Ptolomeu.
Programação e Suporte em Linguagens de Código
Muitas bibliotecas e linguagens de shaders tem uma função denominada de "lerp", que retorna a interpolação entre dois valores (v0,v1) e um parâmetro (t) em um intervalo fechado de [0,1]:
Algoritmo basico em C++:
// método impreciso para calcular v = v1 quando t = 1 "floating-point arithimetic error" // Essa forma pode ser utilizada em hardware que possui intruções "Multiply-Add"floatlerp(floatv0,floatv1,floatt){returnv0+t*(v1-v0);}// Método preciso que garante que v = v1 quando t = 1.floatlerp(floatv0,floatv1,floatt){return(1-t)*v0+t*v1;}
Essa função lerp é usualmente utilizada para mesclar o canal alpha (onde o parâmetro 't' é o alpha), e a formula pode ser estendida para mesclar múltiplos componentes de vetores (como espaciais x,y,z ou cores com componentes r,g,b) em paralelo.
Referências
↑termo utilizado na lingua inglesa para se referir a uma linha curva.
Meijering, Erik (2002), «A chronology of interpolation: from ancient astronomy to modern signal and image processing», Proceedings of the IEEE, 90 (3): 319–342, doi:10.1109/5.993400.