Campo Elétrico do Quadripolo
Publicado por Roberto Júnior 30/11/2006
[ Hits: 9.085 ]
Homepage: http://sites.google.com/site/dibetao
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!
/** * @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); }
Validar CPF em C++ (esse funciona)
Lista Duplamente Encadeada em C
Funções de soma e subtração de matrizes alocadas dinamicamente
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Aplicativo simples para gravar tela
Quebra de linha na data e hora no Linux Mint
tentando instalar em um notebook antigo o Linux LegacyOS_2023... [RESO... (8)
Problema com Conexão Outlook via Firewall (OpenSUSE) com Internet Fibr... (5)