Campo Elétrico do Quadripolo

Publicado por Roberto Júnior 30/11/2006

[ Hits: 8.976 ]

Homepage: http://sites.google.com/site/dibetao

Download campo2.c




Publiquei aqui (VOL) um script de um programa em C que gera o gráfico de um campo elétrico por duas cargas opostas (dipolo elétrico). Agora, para ampliar e dar mais entendimento ao código, estou publicando uma variação do programa, um quadripolo (quatro cargas elétricas). Vale à pena conferir!

  



Esconder código-fonte

/**
* @author Roberto Lima da C C Junior
* @file campo2.c
*
* @begin Sab Nov 11 2006
* @copyright (C) 2006 by Roberto Lima
* @email dibetao@gmail.com
 
 * PROGRAMA GERADOR DO GRAFICO DO CAMPO ELETRICO
 *
 * Usamos tres elementos vetoriais:
 *    Ei : (campo eletrico da carga i)
 *    Ri : (posicao da carga i)
 *    r : (vetor que roda o espaco)
 *  ou melhor E(r) - E em funcao de r
 *
 *  E1    - Em relacao a carga 1
 *  E1[1] - Campo da carga 1 na dimensao 1 (que pode ser X)
 *  E1[2] - Campo da carga 1 na dimensao 2 (que pode ser Y)
 *  Assim como para as outras cargas.
 *
 *  No caso: Quadrupolo Elétrico
 *
 *   ______________
 *   |  q1    q2  |   
 *   |            |
 *   |  q4    q3  |
 *   |____________|
 *
 
Este programa plota o gráfico do campo elétrico
gerado por quatro cargas elétricas puntiformes.

Para gerar o gráfico voce terá que ter o GNUPlot.
http://www.gnuplot.info/

Quando o programa for compilado (gcc campo2.c -lm -o campo2)
e executado (./campo2), será criado um arquivo (dados.dat)
onde estarão os dados a serem plotados no GNUPLot.

Então basta executar o Gnuplot e digitar o seguinte comando:

   plot "dados.dat" w vectors;

O será gerado o grafico do Campo Elétrico criado
pelas cargas (gráfico vetorial).
 
    
 */ 
  
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h>

main()
{
int i,j,k;
float C,q1,q2,q3,q4,x,y;

float E1[4]={0};
float R1[4]={0,-30,30,0};

float E2[4]={0};
float R2[4]={0,30,30,0};

float E3[4]={0};
float R3[4]={0,30,-30,0};

float E4[4]={0};
float R4[4]={0,-30,-30,0};

float r[4]={0};

FILE *arq1;
arq1= fopen("dados.dat","w+");

C=8;
q1=1.0; q2=-1.0; q3=1.0; q4=-1.0;

for (r[1]=-50; r[1]<=50; r[1]++)
for (r[2]=-50; r[2]<=50; r[2]++)
{
   
E1[1] = (C*q1*(R1[1]-r[1]))/sqrt( pow(R1[1]-r[1],2) + pow(R1[2]-r[2],2));
E1[2] = (C*q1*(R1[2]-r[2]))/sqrt( pow(R1[1]-r[1],2) + pow(R1[2]-r[2],2));

E2[1] = (C*q2*(R2[1]-r[1]))/sqrt( pow(R2[1]-r[1],2) + pow(R2[2]-r[2],2));
E2[2] = (C*q2*(R2[2]-r[2]))/sqrt( pow(R2[1]-r[1],2) + pow(R2[2]-r[2],2));

E3[1] = (C*q3*(R3[1]-r[1]))/sqrt( pow(R3[1]-r[1],2) + pow(R3[2]-r[2],2));
E3[2] = (C*q3*(R3[2]-r[2]))/sqrt( pow(R3[1]-r[1],2) + pow(R3[2]-r[2],2));

E4[1] = (C*q4*(R4[1]-r[1]))/sqrt( pow(R4[1]-r[1],2) + pow(R4[2]-r[2],2));
E4[2] = (C*q4*(R4[2]-r[2]))/sqrt( pow(R4[1]-r[1],2) + pow(R4[2]-r[2],2));

fprintf(arq1,"\n%f %f %f %f",R1[1]-r[1]+R2[1]-r[1]+R3[1]-r[1]+R4[1]-r[1], R1[2]-r[2]+R2[2]-r[2]+R3[2]-r[2]+R4[2]-r[2], E1[1]+E2[1]+E3[1]+E4[1], E1[2]+E2[2]+E3[2]+E4[2]);
}

fclose(arq1);
}

Scripts recomendados

Funções matemáticas

[C] Decompositor de números em fatores primos

Makro

Saneago ncurses

Pequeno Shell Unix em C++


  

Comentários
[1] Comentário enviado por dibetao em 01/12/2006 - 17:56h

Desculpe à todos, tentei corrigir mas já tinha mandado o script pro VOL. O certo nao é quadripolo, mas sim QUADRUPOLO ELÉTRICO.

[2] Comentário enviado por felipefrancez em 17/04/2009 - 13:56h

Fala Roberto!!!

Então, esse programa foi muito útil me ajudou a resolver um outro problema q tinha. Porém acho q encontrei um erro na formula do campo elétrico. veja se não concorda que deveria ser assim:

E1[1] = (k*q1*(r[1]-R1[1]))/sqrt( pow ( (pow(R1[1]-r[1],2) + pow(R1[2]-r[2],2)),3));

qqr coisa encontro-me a disposição para dirimir eventuais dúvidas.

Att. Felipe Francez

[3] Comentário enviado por dibetao em 17/04/2009 - 16:40h

Opa Felipe,

depois de quase três anos, aguém encontrar esse erro, é de se surpreender pela quantidade de pessoas que se interessam por física!!!

Pelo que vejo aqui rapidamente na sua correção, é verdade que o termo dentro da raiz do denominador tem que ser elevado à três (3). Obrigado pela correção. Porém, no numerador da expressão, a ordem R1[1]-r1[1] deve que ser mantida, pois o vertor deve apontar na direção do ponto do espaço, isto é, da carga para o ponto em que se deseja calcular o campo elétrico.

Abraço.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts