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".
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).
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:
![]() |
![]() |
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
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
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.