Notebook 23
Interpolação linear 1d, 2d, 3d

Unidimensional:

Considere uma função $f(x)$ cujos valores $f(x_i)$ são conhecidos somente nos pontos $x_i$, $i = 0,1,2,...,n$. Entre dois pontos consecutivos ($x_i,f(x_i)$) e ($x_{i+1},f(x_{i+1})$) é possível traçar uma reta $g_i(x)$ cuja equação é:

$$ g_i(x) = f(x_i) + (x-x_i) \frac{f(x_{i+1})-f(x_i)}{x_{i+1}-x_i} $$

Exercícios

O script deste documento gera a figura abaixo, que mostra abaixo mostra o gráfico de alguns "dados" e da função a partir da qual foram "gerados".

  1. Implemente o procedimento de interpolação linear unidimensional descrito acima e inclua na figura o gráfico dos valores interpolados entre os pontos e da diferença entre o valor da função e o valor interpolado, produzindo uma figura semelhante à que segue.
  2. Complemente o script com trechos que calculem o valor percentual da maior discrepância, do valor médio das discrepâncias e do desvio quadrático médio da distribuição das discrepâncias (27%, 0,14 e 0,06, respectivamente).
  3. Uma região do espaço tem um campo elétrico na direção $x$ que varia com o tempo segundo os dados acima. Uma partícula de carga $q$ = 1 e massa $m$ = 1 inicialmente em repouso na origem está sujeita a esse campo. Determine a posição final da partícula decorridos $2\pi$ unidades de tempo considerando (a) a solução exata ($x(t) = (q/m)(t-\sin{t})$) e (b) a integração numérica com o método de Euler e os valores da interpolação linear para o campo entre os 5 pontos dados. Você deve obter um gráfico como o que segue. Como se vê, o uso da interpolação linear deve ser utilizado criteriosamente.
  4. A tabela a seguir mostra medidas de uma grandeza que varia harmonicamente com o tempo, com um amortecimento que depende exponencialmente do tempo. O sistema de aquisição de dados detecta e registra os instantes em que a variação do sinal é essencialmente nula (isto é, nas situações próximas a máximos e mínimos).
    t 0.75 1.54 2.33 3.11 3.90 4.68 5.47 6.25
    f(t) -0.68 0.46 -0.31 0.21 -0.14 0.10 -0.06 0.04

    Faça um gráfico dos dados, como o da figura que segue. Estude o gráfico e a partir dele estime os valores dos parâmetros $A$, $\omega$ e $b$ da função $f(t) = A \cos (\omega t) \exp(-b t)$ que aproxima "razoavelmente" dos dados.

    Como no exercício anterior, calcule o valor percentual da maior discrepância, do valor médio das discrepâncias e do desvio quadrático médio da distribuição das discrepâncias (43%, 0,04 e 0,05, respectivamente).

  5. Como no exercício anterior, considere que os dados referem-se a um campo elétrico na direção $x$ que varia com o tempo onde há uma partícula de carga $q$ = 1 e massa $m$ = 1 inicialmente em repouso na origem. Determine a posição final da partícula decorridos $2\pi$ unidades de tempo considerando (a) a integração numérica com o método de Euler usando o valor exato para o campo em função do tempo e (b) a integração numérica com o método de Euler e os valores da interpolação linear para o campo entre os pontos dados. Você deve obter um gráfico como o que segue. Como se vê, o uso da interpolação linear deve ser utilizado criteriosamente.

Bidimensional:

No caso bidimensional, o valor interpolado $g_{ij}(x,y)$ da função no ponto de interesse é a média dos valores da função nos 4 pontos conhecidos que o cercam, ponderados pelo complemento da distância até eles:

\begin{eqnarray} g_{ij}(x,y) & = & \frac{(x_{i+1}-x)(y_{j+1}-y)}{(x_{i+1}-x_{i})(y_{j+1}-y_{j})} f(x_i,y_j) \\ & + & \frac{(x_{i}-x)(y_{j+1}-y)}{(x_{i+1}-x_{i})(y_{j+1}-y_{j})} f(x_{i+1},y_j) \\ & + & \frac{(x_{i+1}-x)(y_{j}-y)}{(x_{i+1}-x_{i})(y_{j+1}-y_{j})} f(x_i,y_{j+1}) \\ & + & \frac{(x_{i}-x)(y_{j}-y)}{(x_{i+1}-x_{i})(y_{j+1}-y_{j})} f(x_{i+1},y_{j+1}) \\ \end{eqnarray}

Essa equação pode ser expressa mais compactamente fazendo $p = \frac{x-x_i}{x_{i+1}-x_i}$ e $q = \frac{y-y_j}{y_{j+1}-y_j}$:

\begin{eqnarray} g_{ij}(x,y) & = & (1-p)\,(1-q)\,f(x_i,y_j) \\ & + & p\,(1-q)\,f(x_{i+1},y_j) \\ & + & (1-p)\,q\,f(x_i,y_{j+1}) \\ & + & p\,q\,f(x_{i+1},y_{j+1}) \\ \end{eqnarray}

Imagine uma "ilha" quadrada de 20 km × 20 km, sobre a qual você tem medidas de altitude feitas em uma malha 5 × 5. Nos 16 pontos perimetrais a altitude é, obviamente, zero (nível do mar). Nos 9 pontos interiores, as altitudes foram medidas. O conjunto dos dados está consolidado na tabela a seguir, com os valores dados em km.

A figura a seguir mostra uma representação da superfície da ilha utilizando as definições padrão do Plotly para gráficos de superfície.

Exercícios

  1. Reproduza a figura a seguir, que mostra gráficos dos "cortes" da ilha ao longo de suas duas diagonais, geradas com uma granularidade de 100 elementos (isto é, uma interpolação bilinear que divide cada intervalo dos dados em 20 elementos).

  2. A tabela a seguir mostra as distâncias percorridas por um objeto capaz de movimentar-se em diferentes escalas. Você consegue reproduzir esses valores?
  3. Tridimensional:

    Para o caso tridimensional, considere uma rede cúbica e periódica e $x_d$, $y_d$ e $z_d$ como a diferença entre cada uma das coordenadas $x$, $y$ e $z$ e a respectiva menor coordenada da rede (isto é, $x_i < x < x_{i+1}$ e o mesmo para $y$ e $z$):

    Os oito pontos azuis são os vértices da célula cúbica dentro da qual o ponto $x,y,z$ de interesse está incluído, para os quais os valores da função são conhecidos. As coordenadas desses pontos e os valores da função neles são utilizados na primeira etapa da interpolação, gerando os valores para a função nos quatro pontos verdes.

    As coordenadas dos pontos verdes e os valores da função neles são utilizados na segunda etapa da interpolação, gerando os valores para a função nos dois pontos laranjas.

    As coordenadas dos pontos laranjas e os valores da função neles são utilizados na terceira etapa da interpolação, gerando o valor da função no ponto amarelo, que é o valor buscado.

    \begin{eqnarray} x_d & = & \frac{x-x_{i}}{x_{i+1}-x_{i}} \\ y_d & = & \frac{y-y_{i}}{y_{i+1}-y_{i}} \\ z_d & = & \frac{z-z_{i}}{z_{i+1}-z_{i}} \\ \end{eqnarray}

    Primeiro interpolamos em relação à coordenada $x$. Esse procedimento gera quatro novos valores para a função em um plano que passa por $x$, paralelo ao plano que passa por $x_i$:

    \begin{eqnarray} g(x,y_j,z_k) & = & f(x_i,y_j,z_k) (1-x_d) + f(x_{i+1},y_j,z_k) x_d \\ g(x,y_j,z_{k+1}) & = & f(x_i,y_j,z_{k+1}) (1-x_d) + f(x_{i+1},y_j,z_{k+1}) x_d \\ g(x,y_{j+1},z_k) & = & f(x_i,y_{j+1},z_k) (1-x_d) + f(x_{i+1},y_{j+1},z_k) x_d \\ g(x,y_{j+1},z_{k+1}) & = & f(x_i,y_{j+1},z_{k+1}) (1-x_d) + f(x_{i+1},y_{j+1},z_{k+1}) x_d \\ \end{eqnarray}

    Em seguida, interpolamos em relação à coordenada $y$, o que gera dois novos valores para a função em uma linha que passa por $y$ e está contida no plano definido anteriormente:

    \begin{eqnarray} g(x,y,z_k) & = & g(x,y_j,z_k) (1-y_d) + g(x,y_{j+1},z_k) y_d \\ g(x,y,z_{k+1}) & = & g(x,y_j,z_{k+1}) (1-y_d) + g(x,y_{j+1},z_{k+1}) y_d \\ \end{eqnarray}

    Finalmente, interpolamos em relação à coordenada $z$, o que gera o valor interpolado para a função no ponto desejado:

    \begin{eqnarray} g_{ijk}(x,y,z) & = & g(x,y,z_k) (1-z_d) + g(x,y,z_{k+1}) z_d \\ \end{eqnarray}

    O resultado da interpolação linear tridimensional independe da ordem das interpolações parciais (isto é, interpolar primeiro em $z$, depois em $y$ e finalmente em $x$ levaria ao mesmo resultado).

    Exercícios

    1. O script desta seção contém uma variável com valores de temperatura "medidas" a intervalos regulares em uma região cúbica do espaço em que $x$, $y$ e $z$ estão entre −1 e 1 em intervalos de 0,5 unidades de distância, como ilustrado na figura abaixo.
    2. Implemente o procedimento de interpolação linear tridimensional de modo que utilize os valores desse pontos para estimar as temperaturas nos pontos ao longo do círculo mostrado na figura. O círculo tem raio $r$ = 0,94 e está no plano $z$ = 0,34. Você deve obter um gráfico como o que segue.

    3. Dentro dessa região existem duas fontes de calor, uma levemente mais intensa que a outra, simetricamente dispostas com relação à origem. Você consegue estimar a posição e a intensidade máxima dessas fontes?