quarta-feira, 15 de dezembro de 2010

O cálculo e desenho do campo elétrico.

Engraçado pois eu não consigo responder nem colocar comentários no meu próprio blog, que coisa estranha. Mas segue aqui minha resposta ao comentário do Júlio feito nesse post:

Olá Julio, obrigado pela visita ao blog. Quanto ao problema, posso ajudá-lo sim, mas não sei se vou ser preciso pois não tenho todas as informações - por exemplo, não sei a geometria dos condutores nem as condições de contorno dentro das quais eles estão inseridos, mas enfim:

Eu suponho que você esteja fazendo numericamente o cálculo do potencial (bidimensional, $V(x,y)$) numa região do plano cartesiano, para depois calcular o campo elétrico.

Quanto ao cálculo do potencial elétrico, acho que isso não tem muito segredo. 1 - Define-se uma malha (matriz) de pontos dentro da região que você quer analisar, 2 - Atribui-se a cada ponto um valor inicial de potencial diferente de zero para evitar problemas, 3 - Como o potencial em cada ponto é a média dos potenciais dos pontos vizinhos, você faz um loop com essa condição e pára quando a diferença entre o novo potencial e o antigo seja menor que um $\epsilon$ estabelecido. No final deste processo, sua matriz vai conter o valor do potencial elétrico em cada ponto do espaço. Quanto maior sua quantidade de pontos, em geral melhor será a sua solução, porém mais demorado será para fazer estes cálculos.

Feito isso, resta agora calcular campo elétrico em cada ponto e é isso que o comando do Matlab gradient faz: dado uma matriz com o potencial numérico, ele retorna duas matrizes com as componentes do campo elétrico. Eu não conheco um comando no Scilab que faça isso automaticamente. Mas vamos pelo lado mais hard:

Lembre-se que em coordenadas cartesianas, o campo elétrico é dado da seguinte maneira:

$\vec{E}=-\vec{\nabla}V = \left(- \dfrac{\partial V(x,y)}{\partial x}, -\dfrac{\partial V(x,y)}{\partial y}\right)$

Portanto, é natural que o comando retorne duas matrizes, uma para as componentes x do campo elétrico ($E_x$) e outra para a y ($E_y$).

O problema então é calcular numericamente as derivadas parciais de V para encontrar as componentes do campo, como faremos?

Da definição de derivadas parciais, temos:

$E_x= - \dfrac{\partial V(x,y)}{\partial x}=\lim_{h\to0}-\dfrac{V(x+h,y)-V(x,y)}{h}$

Analogamente para y: 

$E_y= - \dfrac{\partial V(x,y)}{\partial y}=\lim_{h\to0}-\dfrac{V(x,y+h)-V(x,y)}{h}$

Essas derivadas significam o seguinte: No plano, fixe um ponto $(x,y)$ cujo potencial é $V(x,y)$. Ande, na direção x, uma distância h. Veja, nesse ponto $(x+h,y)$, quanto vale o potencial $V(x+h,y)$. Agora faça a subtração dos dois e divida por quanto andou. Essa é a taxa de variação da sua função V quando você se movimenta em relação ao eixo x. O resultado para y é análogo.

Você pode tomar como aproximação numérica das derivadas parciais o próprio quociente que as define. Para x, isso fica:

$E_x=-\dfrac{\partial V(x,y)}{\partial x}\simeq -\dfrac{V(x+h,y)-V(x,y)}{h}$

É possível utilizar também como boa aproximação outro método de derivação numérica:

$E_x=-\dfrac{\partial V(x,y)}{\partial x}\simeq -\dfrac{V(x+h,y)-V(x-h,y)}{2h}$

Este último sai da subtração das séries de Taylor para $f(x+h)$ e $f(x-h)$ truncada na primeira ordem.

Para y segue do mesmo jeito. Então vejamos: Para determinar $E_x(x,y)$ precisamos calcular $\dfrac{V(x+h,y)-V(x,y)}{h}$. $h$ representa a distância entre os pontos da malha, o termo $V(x+h,y)$ representa o potencial no ponto seguinte ao $V(x,y)$. Esses dois potenciais são conhecidos. A distância $h$ que você anda é arbitrária e depende de como você determinou sua malha.

Então para fazer esses cálculos numericamente usei as seguintes linhas de código no Scilab:

for j =1:N  
for k =1:N
      EX(j,k) = -(V(j,k+1)-V(j,k))/0.5
      EY(j,k) = -(V(j+1,k)-V(j,k))/0.5
    end
  end

Nesse exemplo eu utilizei h=0.5. N é a dimensão da sua malha, EX(j,k) vai receber o valor do campo $E_x$ em cada ponto j,k. O meu potencial foi chamado de V(j,k), onde j é para linha e k é para coluna.

O fim desse loop vai te gerar duas matrizes. Imagine então que vc queira saber qual é o potencial no ponto (4,5). Procure então EX(4,5) e saberá quanto vale o campo na direção x e EY(4,5) para saber quanto vale na direção y. Se quiser saber o campo total nesse ponto, faça: $|E(4,5)|=\sqrt{E_x(4,5)^2 + E_y(4,5)^2}$.

Tendo essas duas matrizes é possível desenhar os vetores do campo com o Scilab. Basta usar o comando champ(), que admite quatro (ou mais) parâmetros de entrada: o primeiro é o tamanho da sua malha na direção x, se sua malha for NxN, então 1:N. O segundo é para y, então 1:N. O terceiro parâmetro é a matriz com as componentes do campo em X e o quarto é a matriz das componentes Y. Então no nosso caso teriamos: champ(1:N, 1:N, EX, EY). O resultado que fiz agora rapidamente foi esse:



Nele calculei o potencial numa região do espaço confinada por paredes. A parede no topo tem 30V de potencial e as laterais e inferior com 5V de potencial. A malha que defini foi 10x10. Desenhei as equipotenciais (pixels gigantes) com o comando Matplot(V) (V era a matriz cujas entradas eram os valores dos potenciais em cada ponto) e o campo vetorial com o champ.

Há outros parâmetros passíveis de modificação nesse comando champ, pois, por exemplo, ele desenha o vetor com tamanho proporcional ao módulo. É possível desenhar vetores de mesmo tamanho, mas coloridos de acordo com o módulo, usando o comando champ1:



Embora eu não saiba qual o critério de cores, ele dá um desenho bonitinho do campo. Há mais informações no help do Scilab também, talvez encontre alguma coisa la.

Espero ter ajudado e resolvido sua dúvida. Boa sorte no restante do trabalho. Abraços.

Nenhum comentário:

Postar um comentário

Postagem em destaque

Quais os melhores livros de Cálculo 1?

Uma dúvida muito comum de quem acabou de entrar na faculdade de exatas é qual livro de cálculo seguir e adotar como referência. Consulta...