Notebook 20
Equação de Poisson, relaxação, tabelas, Plotly
A lei de Gauss estabelece que o divergente do campo elétrico é proporcional à densidade de cargas:
$$ \nabla \cdot \mathbf{E} = \frac{1}{\epsilon} \rho $$O campo elétrico, por sua vez, pode ser escrito como o negativo do gradiente do potencial elétrico:
$$ \mathbf{E} = -\nabla \phi $$Juntando as duas equações, obtemos a equação de Poisson:
$$ \nabla^2 \phi = - \frac{1}{\epsilon} \rho $$Em duas dimensões essa equação pode ser escrita, em coordenadas cartesianas, como:
$$ \left( \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2} \right) \phi(x,y) = - \frac{1}{\epsilon} \rho(x,y) $$Se $\phi$ é uma função real suave de números reais, sua derivada segunda pode ser aproximada por:
$$ {\frac {d^{2}\varphi (x)}{{dx}^{2}}}={\frac {\varphi (x{-}h)-2\varphi (x)+\varphi (x{+}h)}{h^{2}}}\,+\,{\mathcal {O}}(h^{2})\ $$Em duas dimensões, e resolvendo para $\phi(x,y)$, a aproximação leva a:
\begin{eqnarray} \phi (x,y) & = & {\tfrac {1}{4}}\left(\phi (x{+}h,y)+\phi (x,y{+}h)+\phi (x{-}h,y)+\phi (x,y{-}h)\,-\,h^{2}{\nabla }^{2}\phi (x,y)\right) \\ & \, & + \,{\mathcal {O}}(h^{4}) \\ \end{eqnarray}Considerando, como visto acima, que:
$$ \nabla^2 \phi(x,y) = - \frac{1}{\epsilon} \rho(x,y) $$e que numericamente um novo valor $\phi^*(x,y)$, em uma rede de espaçamento $h$, pode ser repetidamente calculado até atingir um critério arbitrário de convergência a partir dos valores de $\phi$ dos seus vizinhos, obtemos:
$$ \phi^*(x,y)={\tfrac {1}{4}}\left(\phi (x{+}h,y)+\phi (x,y{+}h)+\phi (x{-}h,y)+\phi (x,y{-}h)\,+\,h^{2}\frac{1}{\epsilon} \rho(x,y)\right) $$Considere uma região superficial plana onde são colocados alguns eletrodos ligados a baterias que lhes atribuem diferentes potenciais elétricos. A figura abaixo esquematiza esta situação para uma região quadrada com o perímetro "aterrado" e com quatro eletrodos em seu interior, dois a 100 V e dois a −100 V.
O problema é calcular o valor do potencial elétrico nos outros pontos da superfície (aqueles marcados com um "0"). O algoritmo é mais ou menos o seguinte:
Dois cuidados são necessários:
A figura a seguir mostra o resultado para uma tolerância de 0,1 V, o que requer cerca de 50 interações.
Exercícios
Note que a figura gerada com o Plotly está rodada de 90° no sentido anti-horário com relação à tabela do exercício anterior. Isso ocorre porque no caso da tabela o primeiro índice (i
) está referenciando as linhas (eixo $y$) enquanto o segundo índice (j
) está referenciando as colunas (eixo $x$). Ao utilizarmos a mesma ordem para construir as matrizes utilizadas como dados para produzir o heatmap com o Plotly, o primeiro índice vai referenciar a coordenada $x$ e o segundo a coordenada $y$. Obviamente podemos compatibilizar as coisas invertendo a ordem dos laços em um dos dois casos, mas aí perderíamos a oportunidade de pensar nisso!
cMat
por um algoritmo que a preencha segundo algumas regras.
A figura abaixo foi gerada definindo cMat
com 41 × 41 elementos, inicialmente "zerados". Isso pode ser feito como segue:
Em seguida, o perímetro do sistema pode ser ajustado para um valor fixo, como segue (que só funciona para matrizes quadradas):
Feito isso, falta implementar as duas "linhas de carga", que fica como tarefa.