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

## Interpolação linear entre dois pontos

Dados os pontos $(x_{0},y_{0})$ e $(x_{1},y_{1})$, a interpolante linear é a linha entre os dois pontos. Para um valor x no intervalo $(x_{0},x_{1})$, o valor y é a linha entre os pontos. Estabelecendo a seguinte relação:
    ${\frac {y-y_{0}}{y_{1}-y_{0}}}={\frac {x-x_{0}}{x_{1}-x_{0}}}$
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:
    $y=y_{0}+(y_{1}-y_{0}){\frac {x-x_{0}}{x_{1}-x_{0}}}$
cuja formula é a interpolação linear entre o intervalo $(x_{0},x_{1})$. 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 x−x$_0$/x$_1$−x$_0$ {\textstyle {\frac {x-x_{0}}{x_{1}-x_{0}}}} e x$_1$−x/x$_1$−x$_0$ {\textstyle {\frac {x_{1}-x}{x_{1}-x_{0}}}}, que são distâncias normalizadas entre o ponto desconhecido e o ponto de chegada. Dado que a soma é 1:
    $y=y_{0}\left(1-{\frac {x-x_{0}}{x_{1}-x_{0}}}\right)+y_{1}\left(1-{\frac {x_{1}-x}{x_{1}-x_{0}}}\right)=y_{0}\left(1-{\frac {x-x_{0}}{x_{1}-x_{0}}}\right)+y_{1}\left({\frac {x-x_{0}}{x_{1}-x_{0}}}\right)$

## 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:
    $R_{T}=f(x)-p(x)\,\!$
onde p denota a interpolação polinomial definida abaixo:
    $p(x)=f(x_{0})+{\frac {f(x_{1})-f(x_{0})}{x_{1}-x_{0}}}(x-x_{0}).\,\!$
Sabe-se pelo teorema de Taylor que:
$R(x)={\frac {f''(x_{1})}{2!}}(x-x_{1})^{2}={\frac {f''(x_{0})}{2!}}(x-x_{0})^{2}.\,\!$
Pode ser provada utilizando o teorema de Rolle, que cita que se f tem uma segunda derivada o erro está definido por:
    $|R_{T=2}|\leq {\frac {(x_{1}-x_{0})^{2}}{8}}\max _{x_{0}\leq x\leq x_{1}}|f''(x)|.\,\!$

## Extensões
### Precisão

Se a função C$^0$ é insuficiente, por exemplo, se o processo produziu os pontos de dados é provado ser mais 'liso' que C$_0$, é comum substituir interpolação linear por interpolação de spline, ou até mesmo interpolação polinomial em alguns casos.

### Multivariável

Para duas dimensões espaciais, a extensão da interpolação linear é chamada de interpolação bilinear, e em três dimensões, interpolação trilinear.
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++:
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.