Está en la página 1de 17

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA


ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

“DESARROLLO DE UN CÓDIGO EN MATLAB PARA LA


VISUALIZACIÓN DE LÍNEAS DE CAMPO ELÉCTRICO”

AUTORA:MANRIQUE CHUPICA EIMY SOLEDAD


CODIGO DE ALUMNO : 2213220107
CURSO: ELECTRICIDAD Y MAGNETISMO
PROFESOR: ACEVEDO POMA FELIX JULIAN

Callao, 2023
PERÚ
Introducción

La simulación de campos eléctricos es una herramienta esencial en el estudio de


fenómenos electrostáticos y su aplicación en diversas disciplinas, desde la física hasta la
ingeniería. En este contexto, la representación visual de líneas de campo eléctrico
proporciona una comprensión intuitiva y clara del comportamiento de las cargas en un
determinado sistema.

En el ámbito académico y de investigación, la simulación de campos eléctricos despierta un


interés significativo debido a su aplicación en la resolución de problemas prácticos y en el
diseño de dispositivos electrónicos. Es crucial comprender la distribución del campo
eléctrico generado por diversas configuraciones de carga para optimizar el rendimiento y la
eficiencia de sistemas electromagnéticos.

La elección de MATLAB como herramienta de desarrollo para esta simulación se justifica


por su capacidad para manipular matrices y realizar operaciones numéricas de manera
eficiente. MATLAB proporciona un entorno de programación interactivo y fácil de usar, lo
que resulta beneficioso para la implementación de algoritmos complejos, como los
necesarios para el cálculo y visualización de campos eléctricos.

El objetivo principal de esta investigación es desarrollar un código en MATLAB que simule y


visualice campos eléctricos generados por configuraciones específicas de carga. Los
objetivos específicos incluyen la implementación de algoritmos para el cálculo del potencial
eléctrico, la generación de líneas de campo y la visualización gráfica de los resultados.
I. Fundamentos Teóricos

Los campos eléctricos son regiones del espacio donde una carga eléctrica experimentaría
una fuerza eléctrica. Esta fuerza es descrita por la Ley de Coulomb, que establece que la
fuerza entre dos cargas es directamente proporcional al producto de sus magnitudes e
inversamente proporcional al cuadrado de la distancia entre ellas.

El campo eléctrico (E) en un punto se define como la fuerza eléctrica (F) que experimentaría
una carga de prueba positiva colocada en ese punto, dividida por la magnitud de la carga de
prueba (q0).

Simulación Numérica en MATLAB:

La simulación numérica de campos eléctricos en MATLAB implica la discretización del


espacio y la aplicación de métodos numéricos para calcular el potencial eléctrico en cada
punto de una malla. La ecuación básica para la simulación es:

Aspectos Físicos y MATLAB:

La simulación en MATLAB se beneficia de su capacidad para trabajar con matrices y


realizar cálculos eficientes. La visualización gráfica de campos eléctricos se logra mediante
la generación de líneas de campo y la representación de gráficos de contorno. Además,
MATLAB permite una interactividad valiosa para explorar configuraciones de carga y
comprender mejor los conceptos físicos subyacentes.
II. Creación del Código en MATLAB

Parte 1: Inicialización y Entrada de Usuario

clear;
number = input('Bienvenido al programa. Indique el número de cargas: ');

-clear: Este comando se utiliza para limpiar el espacio de trabajo de MATLAB. Borra todas
las variables existentes, asegurando que comiences con un espacio de trabajo limpio y sin
variables previamente definidas.

-number = input('Bienvenido al programa. Indique el número de cargas: '): Aquí, estamos


utilizando la función input para solicitar al usuario que ingrese el número de cargas.
Explicando cada parte:

● input('Bienvenido al programa. Indique el número de cargas: '): Muestra un


mensaje en la consola que pide al usuario que introduzca el número de
cargas. El mensaje entre comillas es lo que se mostrará en la consola.
● number = ...: Almacena la entrada del usuario en la variable llamada number.
Esto significa que el número que el usuario ingrese se asignará a la variable
number y estará disponible para su uso en el resto del programa.

Parte 2: Inicialización de la Matriz de Cargas

charge = zeros(number, 3);

-`charge`: Esta es una variable que representa la matriz que almacenará la información de
cada carga. Cada fila de la matriz contendrá información sobre una carga, incluyendo la
carga misma, la coordenada x y la coordenada y.

- `zeros(number, 3)`: La función `zeros` se utiliza para crear una matriz de ceros. En este
caso, se crea una matriz con `number` filas y 3 columnas. Cada fila de la matriz
representará la información de una carga, y las tres columnas serán utilizadas para la carga,
la coordenada x y la coordenada y, respectivamente.
Parte 3: Entrada de Información de Cargas

for i = 1:number
s1 = ['Por favor, introduzca el valor ', num2str(i), ' de la carga (μC): '];
s2 = ['Por favor, introduzca la coordenada x ', num2str(i), ' de la carga: '];
s3 = ['Por favor, introduzca la coordenada y ', num2str(i), ' de la carga: '];

charge(i, 1) = input(s1) * 1e-6;


charge(i, 2) = input(s2);
charge(i, 3) = input(s3);
end

for i = 1:number: Esto inicia un bucle for que se repetirá number veces. La variable i toma
valores desde 1 hasta number, representando cada carga.

s1, s2, s3: Estas son cadenas de texto (strings) que contienen mensajes personalizados
solicitando al usuario información sobre cada carga. s1 pide la carga, s2 la coordenada x, y
s3 la coordenada y.
charge(i, 1) = input(s1) * 1e-6;: Esto solicita al usuario la carga para la carga i y la almacena
en la primera columna de la fila i de la matriz charge. Multiplicamos por 1e-6 para convertir
de microculombios a culombios.

charge(i, 2) = input(s2);: Similar al paso anterior, pero ahora se solicita la coordenada x.

charge(i, 3) = input(s3);: De manera similar, se solicita la coordenada y y se almacena en la


tercera columna de la fila i de la matriz charge.

Parte 4: Definición de Constantes y Mallas

k = 9 * 10^9;
x = -3:0.01:3;
y = -3:0.01:3;
[X, Y] = meshgrid(x, y);
U = zeros(601, 601);

1.`k = 9 * 10^9;`: Esto define la constante electrostática en el vacío (`k`) con un valor de \(9 \
times 10^9\) N m²/C². Esta constante es utilizada en cálculos posteriores relacionados con
la ley de Coulomb.

2. `x = -3:0.01:3;` y `y = -3:0.01:3;`: Estos comandos definen rangos para las coordenadas x


e y. En este caso, `x` y `y` se generan desde -3 hasta 3 con un paso de 0.01. Estos
vectores se utilizarán para definir una malla de puntos en el plano xy.

3. `[X, Y] = meshgrid(x, y);`: La función `meshgrid` toma dos vectores 1D (`x` e `y`) y genera
dos matrices 2D (`X` e `Y`). Estas matrices representan la malla de puntos en el plano xy.
`X` contiene las coordenadas x de cada punto, y `Y` contiene las coordenadas
correspondientes.

4. `U = zeros(601, 601);`: Aquí, se inicializa la matriz `U` con ceros. Esta matriz se utilizará
para almacenar el potencial eléctrico en cada punto de la malla. La elección de dimensiones
(601 por 601) está relacionada con el rango de coordenadas especificado y la precisión
deseada en el cálculo del potencial.

Rango de Coordenadas:
● Se ha definido x e y en un rango de -3 a 3 con un paso de 0.01. Esto resulta
en un total de
● 3−(−3)0.01+1=601
● +1=601 puntos en cada dirección (tanto para x como para y).
Precisión del Cálculo:
● La elección de la precisión (paso de 0.01) indica que se desea una resolución
fina en el cálculo del potencial eléctrico. Con un paso más pequeño, se
obtendrá una malla más densa de puntos, lo que permite una representación
más precisa del potencial eléctrico en el espacio.
Dimensiones de la Matriz U:
● La matriz U se utiliza para almacenar los valores del potencial eléctrico en
cada punto de la malla. Al tener 601 puntos en cada dirección, se elige una
matriz de dimensiones 601 por 601 (U = zeros(601, 601);) para almacenar
estos valores.

Parte 5: Cálculo del Potencial Eléctrico

for j = 1:number
U = U + k * charge(j, 1) ./ sqrt((X - charge(j, 2)).^2 + (Y - charge(j, 3)).^2);
end
- Inicia un bucle para sumar el potencial eléctrico contribuido por cada carga (`j` de 1 a
`number`).
- Utiliza la fórmula del potencial eléctrico debido a una carga puntual.

Parte 6: Actualización del Potencial en Posiciones Específicas

for a = 1:number
for b = -10:10
for c = -10:10
if abs(U(charge(a, 3)*100+301+b, charge(a, 2)*100+301+c)) > abs(U(charge(a,
3)*100+301+5, charge(a, 2)*100+301+5))
U(charge(a, 3)*100+301+b, charge(a, 2)*100+301+c) = U(charge(a,
3)*100+301+5, charge(a, 2)*100+301+5);
end
end
end
end

Bucles Anidados:

La estructura de tres bucles anidados (for a, for b, for c) se utiliza para recorrer las
coordenadas alrededor de cada carga. a representa la carga actual, mientras que b y c
representan cambios en las coordenadas transversales y verticales.

Comparación de Potenciales:
● Se compara el valor absoluto del potencial en la posición actual (U(charge(a,
3)*100+301+b, charge(a, 2)*100+301+c)) con el valor absoluto del potencial
en una posición de referencia (U(charge(a, 3)*100+301+5, charge(a,
2)*100+301+5)).
Actualización del Potencial:
● Si el valor absoluto del potencial en la posición actual es mayor que el de la
posición de referencia, se actualiza el valor del potencial en la posición actual
con el valor de la posición de referencia.
Transformación de Coordenadas:
● Las fórmulas charge(a, 3)*100+301+b y charge(a, 2)*100+301+c se utilizan
para transformar las coordenadas de referencia a las coordenadas de la
matriz U. La adición de 301 y la multiplicación por 100 es probablemente
para ajustar las coordenadas al índice de la matriz U.

charge(a, 3)*100: Multiplicar la coordenada y de la carga (charge(a, 3)) por 100. Esta
relacionado con la escala de la malla. Si las coordenadas están en el rango de -3 a 3,
multiplicar por 100 las lleva a un rango de -300 a 300.

+ 301: Sumar 301. Es un desplazamiento adicional. Si la matriz U tiene índices que van de
1 a 601 (por ejemplo, 1 correspondiendo a -300), agregar 301 ajustara los valores para que
el índice 1 de la matriz U coincida con la coordenada -300.

+ b y + c: Aquí se considera el cambio en las coordenadas transversales (b) y verticales (c).


Estos valores pueden variar de -10 a 10, lo que permite explorar posiciones alrededor de la
coordenada original.

Parte 7: Gráfico de Contorno del Potencial

contour(X, Y, U, 100, 'Color', [1 0.5 0])


hold on

-`contour(X, Y, U, 100, 'Color', [1 0.5 0])`:


- La función `contour` se utiliza para generar un gráfico de contorno del potencial eléctrico
(`U`) en función de las coordenadas `X` e `Y`.
- `X` e `Y` representan la malla de puntos en el plano xy.
- `U` es la matriz que contiene los valores del potencial eléctrico en cada punto de la
malla.
- El argumento `100` especifica el número de niveles de contorno que se desean en el
gráfico. En este caso, se han especificado 100 niveles.
- `'Color', [1 0.5 0]` establece el color de los contornos. En este caso, se ha especificado
un tono de naranja ([1 0.5 0]).

2. `hold on`:
- La función `hold on` se utiliza para que la figura actual no se borre y permitir la
superposición de múltiples gráficos en la misma figura.
- Después de esta línea, cualquier gráfico adicional se agregará a la figura existente en
lugar de reemplazarla.

Parte 8: Generación de Líneas de Campo Eléctrico

total = sum(abs(charge(:, 1)));


px = [];
py = [];

for a = 1:number
for b = 1:round(abs(charge(a, 1)) / total * 50 * number)
% Código para la generación de líneas de campo eléctrico utilizando 'streamline'
% ...
end
end

hold on

-`total = sum(abs(charge(:, 1)));`:


- Calcula la suma de los valores absolutos de las cargas almacenadas en la primera
columna de la matriz `charge`.
- Este valor se utiliza posteriormente en el bucle siguiente para determinar el número de
líneas de campo eléctrico asociadas con cada carga.

-`px = []; py = [];`: Inicializa las matrices `px` y `py` que se utilizarán para almacenar datos de
las líneas de campo eléctrico.

-`for a = 1:number`: Inicia un bucle para cada carga (`a`) en el sistema.


-`for b = 1:round(abs(charge(a, 1)) / total * 50 * number)`:
- Inicia un bucle para el número de líneas de campo eléctrico deseadas asociadas con la
carga actual (`a`).
- El número de líneas se determina en función de la magnitud de la carga relativa a la
suma total de las magnitudes de todas las cargas.

- `end`: Cierra el bucle interno de generación de líneas de campo eléctrico.

- `end`:Cierra el bucle externo que recorre cada carga.

-`hold on`:Se utiliza para indicar que se deben superponer los gráficos adicionales en la
figura actual. Permite que las líneas de campo eléctrico generadas se superpongan en el
gráfico existente.

Parte 9: Etiquetas y Anotaciones en el Gráfico

xlabel('Eje X');
ylabel('Eje Y');
title('Líneas de campo eléctrico');

text(1.9, -2.20, 'Unidad de carga puntual: (μC)');


text(1.9, -2.80, 'Unidad de longitud: m');
legend('Líneas de campo eléctrico equidistantes');

-`xlabel('Eje X');` y `ylabel('Eje Y');`: Estas líneas agregan etiquetas a los ejes del gráfico.
`xlabel` agrega la etiqueta al eje x y `ylabel` al eje y.

-title('Líneas de campo eléctrico');`:Agrega un título al gráfico para describir su contenido.


-text(1.9, -2.20, 'Unidad de carga puntual: (μC)');` y `text(1.9, -2.80, 'Unidad de longitud: m');:
- Utiliza la función `text` para añadir texto adicional en posiciones específicas del gráfico.
- En este caso, se agrega información sobre la unidad de carga puntual y la unidad de
longitud.

-`legend('Líneas de campo eléctrico equidistantes');`: Añade una leyenda al gráfico,


indicando que las líneas de campo eléctrico son equidistantes.

Esta parte del código mejora la legibilidad del gráfico al proporcionar etiquetas para los ejes,
un título, información sobre la unidad de carga puntual y la unidad de longitud, así como una
leyenda para las líneas de campo eléctrico.

Parte 10: Indicación de Polaridad en el Gráfico

for a = 1:number
if charge(a, 1) > 0
text(charge(a, 2) - 0.05, charge(a, 3) + 0.02, '+', 'Color', 'r');
else
text(charge(a, 2) - 0.03, charge(a, 3) + 0.02, '-', 'Color', 'k');
end
end

for a = 1:number:Inicia un bucle para iterar sobre cada carga (a) en el sistema.

if charge(a, 1) > 0:Verifica si la carga en la posición actual (a) es positiva.

text(charge(a, 2) - 0.05, charge(a, 3) + 0.02, '+', 'Color', 'r');:Si la carga es positiva,


utiliza la función text para añadir el símbolo '+' en el gráfico.charge(a, 2) - 0.05 y charge(a,
3) + 0.02 especifican las coordenadas en las que se colocará el texto. El color del texto se
establece en rojo ('Color', 'r').

else:Si la carga no es positiva (es negativa o cero), ejecuta el siguiente bloque de código.

text(charge(a, 2) - 0.03, charge(a, 3) + 0.02, '-', 'Color', 'k');:Utiliza la función text para añadir
el símbolo '-' en el gráfico para representar una carga negativa.

charge(a, 2) - 0.03 y charge(a, 3) + 0.02 especifican las coordenadas en las que se colocará
el texto. El color del texto se establece en negro ('Color', 'k').

end:Finaliza la estructura condicional.

end:Finaliza el bucle que itera sobre cada carga.

III. Simulación del Código


La simulación se realiza en MATLAB, y se utiliza el código proporcionado para visualizar las
líneas de campo eléctrico generadas por cuatro cargas puntuales. Cada carga está definida
por su magnitud y posición en el plano xy.

Aquí están los datos de las cargas que propusimos al programa

Carga 1: -3 μC, posición (2, 2.1)


Carga 2: 6 μC, posición (1.5, 0.1)
Carga 3: 2 μC, posición (0.9, 1)
Carga 4: -5 μC, posición (1.2, 1.5)
Inicialización y Entrada de Usuario:El usuario ingresa el número de cargas, que en este
caso es 4.

Inicialización de la Matriz de Cargas:Se crea una matriz charge de tamaño 4x3 para
almacenar la información de cada carga.

Entrada de Datos de las Cargas:El usuario introduce la magnitud y las coordenadas de cada
carga.

Definición de Constantes y Mallas:Se establecen constantes y se crea una malla para el


cálculo del potencial eléctrico.

Cálculo del Potencial Eléctrico:Se calcula el potencial eléctrico en cada punto de la malla
debido a todas las cargas.

Actualización del Potencial en Posiciones Específicas:Se ajusta el potencial eléctrico en


posiciones específicas alrededor de cada carga para mejorar la visualización
Generación de Líneas de Campo Eléctrico:

Se generan líneas de campo eléctrico utilizando la función streamline basada en el


gradiente del potencial eléctrico.

Visualización del Gráfico de Contorno y Otros Elementos:

Se visualiza un gráfico de contorno del potencial eléctrico.

Se superponen líneas de campo eléctrico generadas.

Se añaden etiquetas, título y leyenda al gráfico.

Anotación de la Polaridad de las Cargas:

Se anota la polaridad de cada carga en el gráfico con símbolos '+' o '-'.


OTRA SIMULACION PARA VER LA VARIABILIDAD DE LINEAS

IV. Referencias
Lagrange l. (s. f.). Electrodinámica (II) | Utilice MATLAB para visualizar campos
electromagnéticos.

Conozca al usuario. (s. f.). ¿Cómo uso MatLab para mapear líneas de campos eléctricos y
superficies equidistantes?

Utilice Matlab para dibujar dos líneas de campo de carga de punto [diseño de curso de
software físico] _ Matlab línea de campo eléctrico - Blog CSDN. (s. f.).
V. URL DE REFERENCIAS BIBLIOGRÁFICAS

[1]https:///zhuanlan.zhihu.com/p/390004533

[2]https://www.zhihu.com/question/59917135
[3]https://blog.csdn.net/qq_45327517/article/details/124777683

VI. Anexos
CÓDIGO:

Clear,number=input('bienvenido al programa,por favor indique el número de cargas:');

charge=zeros(number,3);
%Almacenamiento de la información de carga
for i=1:number

s1=['Por favor, introduzca el valor ',num2str(i),' de la carga (μC):'];


s2=['Por favor, introduzca la coordenada x ',num2str(i),'de la carga :'];
s3=['Por favor, introduzca la coordenada y ',num2str(i),'de la carga :'];
charge(i,1)=input(s1)*1e-6;
charge(i,2)=input(s2);
charge(i,3)=input(s3);
end
k=9*10^9;%Vacío (constante electrostática)
x=-3:0.01:3;
y=-3:0.01:3;
[X,Y]=meshgrid(x,y);
U=zeros(601,601);
clf
%Cálculo del potencial total,La correspondencia entre U y XY esU[Y,X]
for j=1:number
U=U+k*charge(j,1)./sqrt((X-charge(j,2)).^2+(Y-charge(j,3)).^2);
end
for a=1:number
for b=-10:10 %Cambios en las coordenadas transversales
for c=-10:10 %Cambio de coordenadas verticales
if
abs(U(charge(a,3)*100+301+b,charge(a,2)*100+301+c))>abs(U(charge(a,3)*100+301+5,ch
arge(a,2)*100+301+5))

U(charge(a,3)*100+301+b,charge(a,2)*100+301+c)=U(charge(a,3)*100+301+5,charge(a,2)*
100+301+5);
end
end
end
end
contour(X,Y,U,100,'Color',[1 0.5 0])%Pintura y otros escenarios
hold on

total=sum(abs(charge(:,1)));%Suma de los valores del modo de carga


px=[];
py=[];%Almacenamiento de datos de la línea de campo eléctrico
for a=1:number

for b=1:round(abs(charge(a,1))/total*50*number)%El número de líneas de campo eléctrico


está determinado por la carga normalizada
[Ex,Ey]=gradient(-U);
j=round(abs(charge(a,1))/total*50*number);
i=1;
px(a,b,i)=charge(a,2)+0.05*2^(1/2)*cos(b*2*pi/j);
py(a,b,i)=charge(a,3)+0.05*2^(1/2)*sin(b*2*pi/j);%Asignar las coordenadas de partida
de las líneas de campo eléctrico
streamline(X,Y,Ex,Ey,px(a,b,i),py(a,b,i));
streamline(X,Y,-Ex,-Ey,px(a,b,i),py(a,b,i));
i=i+1;
end
end
hold on
xlabel('eje X'),
ylabel('eje Y'),
title('Líneas de campo eléctrico '),

text(1.9,-2.20,"Unidad de carga puntual:(μC)"),


text(1.9,-2.80,'Unidad de longitud: m')
legend('lineas de campo eléctrico equidistantes');
for a=1:number
if charge(a,1)>0
text(charge(a,2)-0.05,charge(a,3)+0.02,'+','Color','r')
else
text(charge(a,2)-0.03,charge(a,3)+0.02,'-','Color','k')
end
end

También podría gustarte