Interpolação linear

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Dados os pontos em vermelho, a linha azul representa a interpolante, e os valores de x e y podem ser encontrados com interpolação linear.

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 um novos pontos de dados no alcance de pontos já conhecidos

Interpolação linear entre dois pontos[editar | editar código-fonte]

Nessa visualização geométrica, o valor no circulo verde multiplicado pela distância entre os círculos vermelhos e azul é igual a soma do valor dos círculo vermelho multiplicado pela distancia entre os círculos verde e azul e o valor no círculo azul,multiplicado pela distância entre os círculos verde e vermelho.

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 (página inexistente)

Podemos visualizar a formula como uma média ponderada. Os pesos são inversamente proporcionais a 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:

que produz a formula acima.

Interpolação linear como forma de aproximação[editar | editar código-fonte]

Interpolação linear é utilizada como método de aproximação para alguma função f utilizando dois pontos dados pela mesma. O erro desta aproximação pode ser dado pela expressão:

onde p denota a interpolação polinomial definida a cima.

Pode ser provada utilizando o teorema de Rolle (página não existente link para referencia em inglês) que cita que se f tem uma segunda derivada o erro está definido por:

Extensions[editar | editar código-fonte]

Precisão[editar | editar código-fonte]

Se a função C0 é insuficiente, por exemplo, se o processo que foi produziu os pontos de dados é provado ser mais 'liso' que C0 , é comum substituir interpolação linear por interpolação de spline[1] (página inexistente. Link em inglês - spline interpolation ), ou até mesmo interpolação polinomial em alguns casos.

Multivariável[editar | editar código-fonte]

Nesse artigo tratamos de interpolação em uma unica dimensão. Para duas dimensões espaciais, a extenção da interpolação linear é chamada de interpolação bilinear (link inexistente. Link em inglês bilinear interpolation), e em três dimensões, interpolação trilinear (link inexistente. Link em ingês trilinear interpolation.)

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 a baixo. Outros tipos de interpolação podem ser aplicados a malhas triangulares e tetraédricas, incluindo superfícies Bézier.

História[editar | editar código-fonte]

Exemplo de uma interpolação bilinear no quadrado de unidade com valores de z 0, 1, 1 e 0.5 como indicados. valores interpolados entre tais valores estão representado pelas cores.

Interpolação linear é utilizada desde a antiguidade para para completar 'buraco' 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 AC), e pelos astrônomos da Grécia. Uma descrição da interpolação linear pode ser encontrada no Almagest (200 anos DC) por Ptolemy.

Programação e Suporte em Linguagens de Código[editar | editar código-fonte]

Muitas bibliotecas e línguas de shaders tem uma função denominada de 'lerp', que retorna a interpolação entre dois valores (v0,v1) e um parâmetro (t) num intervalo fechado de [0,1]:

Algorítimo basico em C++:

// método impreciciso para calcular v = v1 quando t = 1 "floating-point arithimetic error" 
// Essa fórma pode ser utilizada em hardware que possui intruções "Multiply-Add"
float lerp(float v0, float v1, float t) {
  return v0 + t*(v1-v0);
}

// Método preciso que garante que v = v1 quando t = 1.
float lerp(float v0, float v1, float t) {
  return (1-t)*v0 + t*v1;
}

Essa função lerp é usualmente utilizada para mesclar o canal alpha (onde o parâmereo '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[editar | editar código-fonte]

  1. 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 .

Links externos[editar | editar código-fonte]